Hi, I was working on a project and whenever I try to run it it says that I am referring to future data. What am I doing wrong? Thanks in advance. The code is posted below.

 

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

Author