Ticker | ES |
From | 2008-01-01 00:00:00 |
To | 2009-05-01 00:00:00 |
Security Type | Future |
Market | USA |
Resolution | Minute |
Status | Resolved |
Corrupted Files Missing Files Listing/Delisting Error Dividend Error Missing Points Wrong Values Split Error Name Mapping Error TickerESFrom2008-01-01 00:00:00To2009-05-01 00:00:00Security TypeFutureMarketUSAResolutionMinuteStatusWaiting Review
Corrupted Files Missing Files Listing/Delisting Error Dividend Error Missing Points Wrong Values Split Error Name Mapping Error TickerESFrom2008-01-01 00:00:00To2009-05-01 00:00:00Security TypeFutureMarketUSAResolutionMinuteStatusWaiting Review
The documentation on the data library page [link] says that futures data is supposed to begin Jan 1, 2008 but for the ES EMINI no data futures show up until ~May 2009.
class Algorithm(QCAlgorithm):
def Initialize(self):
"""Initial algorithm settings"""
self.SetStartDate(2008, 1, 30) # Set Start Date
self.SetEndDate(2009, 12, 31) # Set End Date
self.SetCash(100000) # Set Strategy Cash
# -----------------------------------------------------------------------------
# init brokerage model, important for realistic slippage/commission modeling
# especially important if using leverage which requires margin account
# -----------------------------------------------------------------------------
self.SetBrokerageModel(
BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin
)
futureES = self.AddFuture(Futures.Indices.SP500EMini)
#futureES.SetFilter(timedelta(0), timedelta(180))
futureES.SetFilter(lambda x: x.FrontMonth())
self.futureES = futureES
self.front_ES = None
self.Settings.FreePortfolioValuePercentage = 0.1
self.i = 0
def OnData(self, data):
#self.Debug(f'{self.Time} | front month symbol: {self.front_ES}')
for chain in data.FutureChains:
if chain.Key.Value == Futures.Indices.SP500EMini:
if self.front_ES is None or ((self.front_ES.Expiry-self.Time).days <= 1):
contracts = list(filter(lambda x: x.Expiry >= self.Time + timedelta(days = 2), chain.Value))
sorted_contracts = sorted(contracts, key = lambda x: x.Expiry)
if len(sorted_contracts) < 1:
self.front_ES = None
else:
self.front_ES = sorted_contracts[0]
self.i += 1
if self.i % 100 == 0:
self.Debug(f'{self.Time} | front month symbol: {self.front_ES}')
return