Overall Statistics
Total Trades
9
Average Win
1299.09%
Average Loss
0%
Compounding Annual Return
76.694%
Drawdown
66.500%
Expectancy
0
Net Profit
16020.952%
Sharpe Ratio
1.516
Probabilistic Sharpe Ratio
59.727%
Loss Rate
0%
Win Rate
100%
Profit-Loss Ratio
0
Alpha
0.93
Beta
-0.045
Annual Standard Deviation
0.609
Annual Variance
0.371
Information Ratio
1.255
Tracking Error
0.629
Treynor Ratio
-20.618
Total Fees
$2122.33
class SOXLStandardDeviation(QCAlgorithm):

    def Initialize(self):
        self.resolution = Resolution.Daily
        self.indicatorPeriod = 14
        self.baselineEquitySymbol = "TQQQ"
        self.tradedEquitySymbol = "SOXL"
        self.SetStartDate(2012, 1, 1)
        self.SetEndDate(2020, 12, 1)
        self.SetCash(100000)  # Set Strategy Cash
        self.minutesBeforeMarketClose = 120
        
        self.warmUpTimeForBacktestScenario = self.indicatorPeriod
        self.SetWarmUp(self.warmUpTimeForBacktestScenario)
        
        self.setupEquities()
        self.setupIndicators()
        self.setupTradinInterval()
        
    def setupEquities(self):
        self.baselineEquity = self.AddEquity(self.baselineEquitySymbol, self.resolution)
        self.baselineEquity.SetDataNormalizationMode(DataNormalizationMode.Adjusted)
        
        self.tradedEquity = self.AddEquity(self.tradedEquitySymbol, self.resolution)
        self.tradedEquity.SetDataNormalizationMode(DataNormalizationMode.Adjusted)
    
    def setupIndicators(self):
        self.stdIndicator = self.STD(self.baselineEquitySymbol, self.indicatorPeriod, self.resolution)
        
    def setupTradinInterval(self):
        self.Schedule.On(self.DateRules.EveryDay(self.tradedEquitySymbol), self.TimeRules.BeforeMarketClose(self.tradedEquitySymbol, self.minutesBeforeMarketClose), self.dailyComputation)
        
    def dailyComputation(self):
        
        if self.IsWarmingUp:
            return
        
        if self.stdIndicator.Current.Value < 4.4:
            self.SetHoldings(self.tradedEquitySymbol, 1)
            
        elif self.stdIndicator.Current.Value > 7.1:
            self.SetHoldings(self.tradedEquitySymbol, 0)
            
    def OnData(self, data):
        '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
            Arguments:
                data: Slice object keyed by symbol containing the stock data
        '''