| Overall Statistics |
|
Total Trades 53 Average Win 1.99% Average Loss -0.58% Compounding Annual Return 35.831% Drawdown 10.400% Expectancy 2.425 Net Profit 40.467% Sharpe Ratio 1.671 Probabilistic Sharpe Ratio 69.995% Loss Rate 23% Win Rate 77% Profit-Loss Ratio 3.45 Alpha 0.295 Beta 0.071 Annual Standard Deviation 0.186 Annual Variance 0.035 Information Ratio 0.269 Tracking Error 0.328 Treynor Ratio 4.373 Total Fees $91.03 Estimated Strategy Capacity $39000000.00 |
#
# ----------------------------------------------------------------
STOCKS = ['QQQ', 'XLP', 'MDY']; BONDS = ['TLT', 'IEF']; LEV = 1.0;
# ----------------------------------------------------------------
class FocusedBlueBee(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 1, 1)
self.SetEndDate(2021, 2, 8)
self.SetCash(100000)
self.stocks = [self.AddEquity(ticker, Resolution.Daily).Symbol for ticker in STOCKS]
self.bonds = [self.AddEquity(ticker, Resolution.Daily).Symbol for ticker in BONDS]
self.MKT = self.AddEquity('SPY', Resolution.Daily).Symbol
self.mom_lookback = 10
self.ret_reb_month = 0
self.wt = {}
self.SetWarmUp(self.mom_lookback + 1)
self.mom = self.MOMP(self.MKT, self.mom_lookback, Resolution.Daily)
self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen('SPY', 120),
self.trade)
def trade(self):
if self.ret_reb_month==self.Time.month: return
self.ret_reb_month = self.Time.month
self.bull = self.mom.Current.Value > 0
for sec in self.stocks:
self.wt[sec] = LEV/len(self.stocks) if self.bull else 0;
for sec in self.bonds:
self.wt[sec] = 0 if self.bull else LEV/len(self.bonds);
for sec, weight in self.wt.items():
self.SetHoldings(sec, weight)