| 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
'''