| Overall Statistics |
|
Total Orders 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Start Equity 100000 End Equity 100000 Net Profit 0% Sharpe Ratio 0 Sortino Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
# region imports
from AlgorithmImports import *
from QuantConnect.DataSource import *
# endregion
class FuturesPractice4(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2022, 12, 13)
self.SetEndDate(2022, 12, 14)
self.SetCash(100000)
self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin)
self.esContinuous = self.AddFuture(Futures.Indices.SP500EMini,
Resolution.Minute,
dataMappingMode=DataMappingMode.OpenInterest,
dataNormalizationMode = DataNormalizationMode.Raw,
extendedMarketHours=True)
self.esContinuous.SetFilter(0, 182)
# self.esContinuous.SetFilter(lambda future_filter_universe: future_filter_universe.OnlyApplyFilterAtMarketOpen())
self.esCurrent = None
def OnSecuritiesChanged(self, changes):
for security in changes.AddedSecurities:
self.Debug(f"Time: {self.Time} .... Added: {security.Symbol}")
for security in changes.RemovedSecurities:
self.Debug(f"Time: {self.Time} .... Removed: {security.Symbol}")
def OnData(self, slice: Slice) -> None:
for changed_event in slice.SymbolChangedEvents.Values:
self.Debug(f" Time: {self.Time} .... Contract rollover from {changed_event.OldSymbol} to {changed_event.NewSymbol}")
if self.esContinuous.Close != self.Securities[self.esContinuous.Mapped].Close:
if slice['ES Y6URRFPZ86BL'].Close == self.esContinuous.Close:
self.Log("Price mismatch, continous future showing price for ES Y6URRFPZ86BL before roll event")
self.Plot(f"Future Plot", "Continuous Future", self.esContinuous.Close)
self.Plot(f"Future Plot", "Continuous Future Mapped value", self.Securities[self.esContinuous.Mapped].Close)
self.Plot("Future Plot", "Current future contract", slice['ES Y4D62XFM9IPT'].Close)
self.Plot("Future Plot", "Next future contract", slice['ES Y6URRFPZ86BL'].Close)
self.Log(f"Time: {self.Time} .... Mapped: {self.esContinuous.Mapped.Value} .... Close: {self.esContinuous.Close} ... Mapped Close: {self.Securities[self.esContinuous.Mapped].Close}")