Overall Statistics |
Total Trades 3781 Average Win 0.06% Average Loss -0.01% Compounding Annual Return 9.438% Drawdown 8.300% Expectancy 5.768 Net Profit 146.553% Sharpe Ratio 1.27 Probabilistic Sharpe Ratio 77.984% Loss Rate 38% Win Rate 62% Profit-Loss Ratio 9.90 Alpha 0.081 Beta -0.016 Annual Standard Deviation 0.062 Annual Variance 0.004 Information Ratio -0.26 Tracking Error 0.149 Treynor Ratio -4.819 Total Fees $3889.99 |
class TransdimensionalParticleRadiator(QCAlgorithm): def Initialize(self): self.SetStartDate(2010, 1, 4) #start Date self.SetEndDate(2020, 1, 4) # End Date self.SetCash(100000) # Set Strategy Cash self.AddEquity("VTI", Resolution.Daily) # Set Equity for different companies self.AddEquity("IAU", Resolution.Daily) self.AddEquity("VGLT", Resolution.Daily) self.AddEquity("VGIT", Resolution.Daily) self.AddEquity("PDBC", Resolution.Daily) self.smavti = self.SMA("VTI", 305) self.smavglt = self.SMA("VGLT", 305) # SMA for both vglt and vti self.rebal = 4 # Rebalance every 2 weeks self.rebalTimer = self.rebal - 1 # Initialize to trigger first week self.flag1 = 0 self.Schedule.On(self.DateRules.On(2020, 10, 7), self.TimeRules.AfterMarketOpen("VTI", 150), self.Event) # set both events one for the first set holdings self.Schedule.On(self.DateRules.WeekStart("VTI"), self.TimeRules.AfterMarketOpen("VTI", 150), self.Rebalance) # Set event for rebalance def OnData(self, data): if data.HasData == False: return if not data.get(self.Symbol("VTI")): return if not data.get(self.Symbol("VGLT")): return if self.flag1 == 0: if data["VTI"].Close < self.smavti.Current.Value: # Check for Vti data more than the SMA self.SetHoldings("VTI", .50) self.SetHoldings("VGLT", .30) self.SetHoldings("VGIT", .15) self.SetHoldings("IAU", .08) self.SetHoldings("PDBC", .07) elif data["VGLT"].Close < self.smavglt.Current.Value: # Check for Vti data more than the SMA self.SetHoldings("VGLT", .50) self.SetHoldings("VTI", .20) self.SetHoldings("VGIT", .15) self.SetHoldings("IAU", .08) self.SetHoldings("PDBC", .07) else: pass self.rebaltimer = 0 # Reset timer and flag self.flag1 = 0 def Rebalance(self): # Define Rebalance self.rebalTimer +=1 if self.rebalTimer == self.rebal: self.flag1 = 1 def Event(self): # Define first event self.SetHoldings("VTI", .30) self.SetHoldings("VGLT", .50) self.SetHoldings("VGIT", .15) self.SetHoldings("IAU", .08) self.SetHoldings("PDBC", .07)