Overall Statistics
Total Trades
35
Average Win
4.57%
Average Loss
-1.04%
Compounding Annual Return
11.095%
Drawdown
14.000%
Expectancy
3.132
Net Profit
86.542%
Sharpe Ratio
0.89
Probabilistic Sharpe Ratio
38.566%
Loss Rate
24%
Win Rate
76%
Profit-Loss Ratio
4.40
Alpha
0.095
Beta
-0.03
Annual Standard Deviation
0.103
Annual Variance
0.011
Information Ratio
-0.009
Tracking Error
0.16
Treynor Ratio
-3.091
Total Fees
$92.07
from QuantConnect.Data.Custom.TradingEconomics import *

class TradingEconomicsInterestRateAlgorithm(QCAlgorithm):
    
    def Initialize(self):
        self.SetStartDate(2013, 11, 1)
        self.SetEndDate(2019, 10, 3);

        self.SetCash(100000)
        
        self.AddEquity("AGG", Resolution.Hour)
        self.AddEquity("SPY", Resolution.Hour)
        self.interestRate = self.AddData(TradingEconomicsCalendar, TradingEconomics.Calendar.UnitedStates.InterestRate).Symbol
        
        # Request 365 days of interest rate history with the TradingEconomicsCalendar custom data Symbol.
        # We should expect no historical data because 2013-11-01 is before the absolute first point of data
        history = self.History(TradingEconomicsCalendar, self.interestRate, 365, Resolution.Daily)
        
        # Count the number of items we get from our history request (should be zero)
        self.Debug(f"We got {len(history)} items from our history request")
 
    def OnData(self, data): 
        
        # Make sure we have an interest rate calendar event
        if not data.ContainsKey(self.interestRate):
            return
        
        announcement = data[self.interestRate] 
        
        # Confirm its a FED Rate Decision
        if announcement.Event != "Fed Interest Rate Decision":
            return
        
        # In the event of a rate increase, rebalance 50% to Bonds.
        interestRateDecreased = announcement.Actual <= announcement.Previous

        if interestRateDecreased:
            self.SetHoldings("SPY", 1)
            self.SetHoldings("AGG", 0)
        else:
            self.SetHoldings("SPY", 0.5)
            self.SetHoldings("AGG", 0.5)