Overall Statistics
Total Trades
1
Average Win
0%
Average Loss
0%
Compounding Annual Return
292.332%
Drawdown
47.100%
Expectancy
0
Net Profit
292.332%
Sharpe Ratio
4.159
Probabilistic Sharpe Ratio
85.785%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
2.953
Beta
-0.311
Annual Standard Deviation
0.691
Annual Variance
0.477
Information Ratio
3.707
Tracking Error
0.706
Treynor Ratio
-9.24
Total Fees
$7.15
class SOXLStandardDeviation(QCAlgorithm):

    def Initialize(self):
        self.resolution = Resolution.Daily
        self.indicatorPeriod = 14
        self.baselineEquitySymbol = "TQQQ"
        self.tradedEquitySymbol = "SOXL"
        self.SetStartDate(2019, 1, 1)
        self.SetEndDate(2019, 12, 31)
        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 > 15.2:
            self.SetHoldings(self.tradedEquitySymbol, 1)
            
        elif self.stdIndicator.Current.Value > 7.1:
            self.SetHoldings(self.tradedEquitySymbol, 0)
        
        elif self.stdIndicator.Current.Value < 4.4:
            self.SetHoldings(self.tradedEquitySymbol, 1)
            
    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
        '''