Overall Statistics
Total Trades
21
Average Win
6.40%
Average Loss
-0.31%
Compounding Annual Return
10.717%
Drawdown
14.200%
Expectancy
16.441
Net Profit
82.988%
Sharpe Ratio
0.886
Probabilistic Sharpe Ratio
39.193%
Loss Rate
20%
Win Rate
80%
Profit-Loss Ratio
20.80
Alpha
0.006
Beta
0.914
Annual Standard Deviation
0.122
Annual Variance
0.015
Information Ratio
-0.116
Tracking Error
0.03
Treynor Ratio
0.119
Total Fees
$56.61
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 != TradingEconomics.Event.UnitedStates.FedInterestRateDecision)
			{
				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);
			}
			
		}
    }
}