| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 28.712% Drawdown 76.800% Expectancy 0 Net Profit 1487.418% Sharpe Ratio 0.919 Probabilistic Sharpe Ratio 20.994% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.015 Beta 2.997 Annual Standard Deviation 0.52 Annual Variance 0.27 Information Ratio 0.932 Tracking Error 0.347 Treynor Ratio 0.159 Total Fees $118.15 Estimated Strategy Capacity $670000.00 Lowest Capacity Asset BGU U7EC123NWZTX |
class FocusedSkyBlueSalmon(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2010, 1, 1) # Set Start and End Date
self.SetEndDate(2020, 12, 12)
self.SetCash(100000) #Set Cash
self.SpySymbol = self.AddEquity("SPXL", Resolution.Minute) #Request Data
self.TMFSymbol = self.AddEquity("TMF", Resolution.Minute)
self.GLDSymbol = self.AddEquity("GLD", Resolution.Minute)
self.SmaSpy = self.SMA("SPXL", 200) #Indicator Simple Moving Average 200 days
self.SetWarmup(200) #Warmup Indicator
self.rebal = 4 #Rebalance
self.rebalTimer = self.rebal - 1
self.flag1 = 0
self.Schedule.On(self.DateRules.WeekStart("SPXL"), self.TimeRules.AfterMarketOpen("SPXL", 150), self.Rebalance) # Set Rebalance
#self.Schedule.On(self.DateRules.MonthStart("SPXL"), \
# self.TimeRules.AfterMarketOpen("SPXL"), \
# self.Rebalance)
def OnData(self, data): # When each data point comes in
if self.flag1 != 1:
return
if self.SmaSpy.IsReady: # When Warm Up is done
self.Debug("Ready!")
if self.SmaSpy is None or not self.SmaSpy.IsReady: #Final Check That Everything is ready
return
if not self.Portfolio.Invested: #Make sure that stocks are not allocated elsewhere
if self.SmaSpy.Current.Value < self.Securities["SPXL"].Close: # check to see if closing spy value is greater than the simple moving average
self.Liquidate("TMF") # liquidate tmf
self.SetHoldings("SPXL", 1) # buy 100% of portfolio into SPXL
else:
self.Liquidate("SPXL") #if not then sell all of SPXL
self.SetHoldings("TMF", 1) # then buy into TMF
self.rebalTimer = 0
self.flag1 = 0
def OnOrderEvent(self, orderEvent): # Make sure that orders are going through
if orderEvent.Status == OrderStatus.Filled:
self.lastOrderEvent = orderEvent
self.Debug(str(self.lastOrderEvent.OrderId))
def Rebalance(self): # Code the Rebalance
self.rebalTimer +=1
if self.rebalTimer == self.rebal:
self.flag1 = 1