| Overall Statistics |
|
Total Trades 43 Average Win 7.46% Average Loss -0.81% Compounding Annual Return 13.615% Drawdown 16.000% Expectancy 8.736 Net Profit 307.472% Sharpe Ratio 1.049 Probabilistic Sharpe Ratio 48.803% Loss Rate 5% Win Rate 95% Profit-Loss Ratio 9.22 Alpha 0.123 Beta -0.038 Annual Standard Deviation 0.112 Annual Variance 0.013 Information Ratio -0.066 Tracking Error 0.189 Treynor Ratio -3.106 Total Fees $59.13 |
class RSIAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2009, 1, 1)
self.SetEndDate(2019, 12, 31)
self.SetCash(10000)
RSI_Period = 14
self.RSI_OB = 70
self.RSI_OS = 30
#self.Allocate = 0.25
self.AddEquity("SPY", Resolution.Daily)
self.AddEquity("BND", Resolution.Daily)
self.RSI_SPY = self.RSI("SPY", RSI_Period)
self.RSI_BND = self.RSI("BND", RSI_Period)
self.SetWarmUp(RSI_Period)
def OnData(self, data):
if self.IsWarmingUp:
return
if not self.Portfolio.Invested:
if self.RSI_SPY.Current.Value < self.RSI_OS:
self.SetHoldings("SPY", 1)
elif self.RSI_SPY.Current.Value > self.RSI_OB:
self.SetHoldings("BND", 1)
elif self.Portfolio["BND"].Invested:
if self.RSI_SPY.Current.Value < self.RSI_OS:
self.Liquidate("BND")
self.SetHoldings("SPY", 1)
else:
return
elif self.Portfolio["SPY"].Invested:
if self.RSI_SPY.Current.Value > self.RSI_OB:
self.Liquidate("SPY")
self.SetHoldings("BND", 1)
else:
return