Overall Statistics |
Total Trades 7 Average Win 33.59% Average Loss -6.24% Compounding Annual Return 76.889% Drawdown 52.800% Expectancy 3.253 Net Profit 57.245% Sharpe Ratio 1.475 Probabilistic Sharpe Ratio 51.772% Loss Rate 33% Win Rate 67% Profit-Loss Ratio 5.38 Alpha 0.708 Beta 1.393 Annual Standard Deviation 0.629 Annual Variance 0.396 Information Ratio 1.714 Tracking Error 0.449 Treynor Ratio 0.666 Total Fees $12.95 |
# Go Long /NQ and /VX futures with different weighting. class LeverageForTheLongRunDiversifiedWeekly(QCAlgorithm): def Initialize(self): self.SetStartDate(2020,1, 1) #Set Start Date #self.SetEndDate(2020,6,20) #Set End Date self.SetCash(100000) #Set Strategy Cash self.spy = self.AddEquity("SPY", Resolution.Minute).Symbol self.futureNQ = self.AddFuture(Futures.Indices.NASDAQ100EMini) self.futureNQ .SetFilter(30, 120) # Get contracts from 30 days to 120 days out #self.futureVX = self.AddFuture(Futures.Indices.VIX) #self.futureVX .SetFilter(30, 120) # Get contracts from 30 days to 120 days out self.Settings.FreePortfolioValuePercentage = 0.05 self.rebalance = True # Flag to initate trades # Increment rebalance timer at every week start self.Schedule.On(self.DateRules.MonthStart("SPY"), self.TimeRules.AfterMarketOpen("SPY", 30), self.Rebalance) self.contract = None def OnData(self, data): if not (data.ContainsKey(self.spy) and data[self.spy] is not None and \ self.rebalance): return for contracts in data.FutureChains.Values: sorted_contracts = sorted(contracts, key=lambda c: c.Expiry, reverse = True) if len(sorted_contracts) == 0 or \ (self.contract is not None and sorted_contracts[0].Symbol == self.contract.Symbol): continue self.contract = sorted_contracts[0] self.SetHoldings(sorted_contracts[0].Symbol, 0.1, True) self.rebalance = False # Reset rebalance timer def Rebalance(self): self.rebalance = True