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