Overall Statistics |
Total Trades 178 Average Win 9.49% Average Loss -2.69% Compounding Annual Return 37.737% Drawdown 50.700% Expectancy 0.996 Net Profit 437.850% Sharpe Ratio 0.915 Probabilistic Sharpe Ratio 24.322% Loss Rate 56% Win Rate 44% Profit-Loss Ratio 3.52 Alpha 0.491 Beta 0.299 Annual Standard Deviation 0.539 Annual Variance 0.29 Information Ratio 0.871 Tracking Error 0.559 Treynor Ratio 1.651 Total Fees $550.40 |
class MultidimensionalVentralAntennaArray(QCAlgorithm): def Initialize(self): self.SetCash(10000) # Set Strategy Cash self.SetStartDate(2015, 1, 1) self.SetEndDate(2020, 4, 1) self.SetBenchmark("SPHB") self.spy = self.AddEquity("SPXL", Resolution.Daily) self.Securities["SPXL"].SetLeverage(2) # Measures the change in SPY prices between 2 minutes self.spyMomentum = self.MOMP("SPXL", 2, Resolution.Daily) self.SetRiskManagement(MaximumDrawdownPercentPerSecurity(0.005)) for i in range(1, 31): self.Schedule.On(self.DateRules.On(2018, 12, i), \ self.TimeRules.AfterMarketOpen("SPXL", 1), \ self.SpecificTime) self.Schedule.On(self.DateRules.On(2020, 1, i), \ self.TimeRules.AfterMarketOpen("SPXL", 1), \ self.SpecificTime) self.Schedule.On(self.DateRules.On(2020, 3, i), \ self.TimeRules.AfterMarketOpen("SPXL", 1), \ self.SpecificTime) for i in range(1, 28): self.Schedule.On(self.DateRules.On(2020, 2, i), \ self.TimeRules.AfterMarketOpen("SPXL", 1), \ self.SpecificTime) for i in range(1, 30): self.Schedule.On(self.DateRules.On(2020, 4, i), \ self.TimeRules.AfterMarketOpen("SPXL", 1), \ self.SpecificTime) 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 ''' if self.spyMomentum.Current.Value > 0: self.SetHoldings("SPXL", 1.0) def SpecificTime(self): self.SetHoldings("SPXL", -1.0)