Overall Statistics
Total Trades
10001
Average Win
0.01%
Average Loss
-0.01%
Compounding Annual Return
-4.872%
Drawdown
8.200%
Expectancy
-0.141
Net Profit
-8.191%
Sharpe Ratio
-1.372
Loss Rate
58%
Win Rate
42%
Profit-Loss Ratio
1.06
Alpha
-0.049
Beta
0.109
Annual Standard Deviation
0.031
Annual Variance
0.001
Information Ratio
-0.935
Tracking Error
0.112
Treynor Ratio
-0.387
Total Fees
$10001.00
from QuantConnect.Data.Custom.TradingEconomics import *

class VerticalResistanceShield(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2014, 1, 1)  # Set Start Date
        self.SetEndDate(2019, 8, 22)
        self.SetCash(100000)  # Set Strategy Cash
        
        self.interestRateSymbol = self.AddData(TradingEconomicsCalendar, TradingEconomics.Calendar.UnitedStates.InterestRate, Resolution.Daily, TimeZones.Utc).Symbol

        self.UniverseSettings.Resolution = Resolution.Daily;
        self.AddUniverseSelection(FineFundamentalUniverseSelectionModel(self.CoarseSelector, self.FineSelector))

        self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel())
        self.SetExecution(ImmediateExecutionModel())
        self.SetRiskManagement(MaximumSectorExposureRiskManagementModel())
        
    def CoarseSelector(self, coarse):
        return [i.Symbol for i in coarse if i.DollarVolume > 100000000 and i.DollarVolume < 1000000000]
    
    def FineSelector(self, fine):
        return [i.Symbol for i in fine]

    def OnData(self, data):
        insights = []
        
        if not data.ContainsKey(self.interestRateSymbol):
            return
        
        announcement = data[self.interestRateSymbol]
        
        if announcement.Event != "Fed Interest Rate Decision":
            self.Debug(f"Event is: {announcement.Event}")
            return
        
        interestRateActual = self.ParseTEData(announcement.Actual)
        interestRatePrevious = self.ParseTEData(announcement.Previous)
        
        interestRateDecreased = interestRateActual <= interestRatePrevious
        # Interest rate increases are generally seen as a sign of slowing economic growth after QE
        insightDirection = InsightDirection.Up if interestRateDecreased else InsightDirection.Down
        
        for kvp in self.ActiveSecurities:
            symbol = kvp.Key
            insights.append(Insight(symbol, timedelta(days=10), InsightType.Price, insightDirection))
                
        self.EmitInsights(insights)
    
    def ParseTEData(self, dataStr):
        inBillions = "B" in dataStr

        if inBillions:
            data = float(dataStr.replace("%", "").replace("B", "").replace("$", ""))
            data = forecast * 1000000000
        elif "M" in dataStr:
            data = float(dataStr.replace("%", "").replace("M", "").replace("$", ""))
            data = forecast * 1000000
        else:
            data = float(dataStr.replace("%", "").replace("$", ""))
            
        return data