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
using QuantConnect.Data.Custom.TradingEconomics;

namespace QuantConnect.Algorithm.CSharp
{
    public class TradingEconomicsInterestRateAlgorithm : QCAlgorithm
    {
    	private Symbol _interestRate;
    	
		public override void Initialize()
		{
			SetStartDate(2013, 11, 1);
			SetEndDate(2019, 10, 3);
			SetCash(100000);
			
			AddEquity("AGG", Resolution.Hour);
			AddEquity("SPY", Resolution.Hour);
			
			_interestRate = 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
			var history = History<TradingEconomicsCalendar>(_interestRate, 365, Resolution.Daily);
			
			// Count the number of items we get from our history request (should be zero)
			Debug($"We got {history.Count()} items from our history request");
		}
		
		public override void OnData(Slice data)
		{
			// Make sure we have an interest rate calendar event
			if (!data.ContainsKey(_interestRate))
			{
				return;
			}
			
			var announcement = data.Get<TradingEconomicsCalendar>(_interestRate);
			
			// Confirm it's a FED Rate Decision
			if (announcement.Event != "Fed Interest Rate Decision")
			{
				return;
			}
			
			// In the event of a rate increase, rebalance 50% to Bonds.
			var interestRateDecreased = announcement.Actual <= announcement.Previous;
			
			if (interestRateDecreased)
			{
				SetHoldings("SPY", 1);
				SetHoldings("AGG", 0);
			}
			else
			{
				SetHoldings("SPY", 0.5);
				SetHoldings("AGG", 0.5);
			}
			
		}
    }
}