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