Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe 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
# region imports
from AlgorithmImports import *
# endregion


class LearningFutures(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2020, 4, 16)  # Set Start Date
        self.SetEndDate(2020, 4, 23)  
        #self.SetCash(1000000)  # Set Strategy Cash
        self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin)
        
        self.f = self.AddFuture(Futures.Energies.CrudeOilWTI, resolution=Resolution.Daily, extendedMarketHours=False, dataNormalizationMode = DataNormalizationMode.ForwardPanamaCanal, dataMappingMode=DataMappingMode.LastTradingDay,  contractDepthOffset=0) 
        

    def OnData(self, data: Slice):
        if self.IsWarmingUp:
            return
        
        if (len(data.SymbolChangedEvents.Values) > 0):
            for changed_event in data.SymbolChangedEvents.Values:
                if changed_event.OldSymbol in self.Portfolio:
                    self.Debug(f"{self.Time.date}: Contract rollover from {changed_event.OldSymbol} to {changed_event.NewSymbol}")
            return

        d = str(self.Time)
        
        hist_mapped = self.History(self.f.Mapped, 1, Resolution.Daily)        
        offset_c = data[self.f.Symbol].Close - hist_mapped['close'][0]
        offset_o = data[self.f.Symbol].Open - hist_mapped['open'][0]
        offset_h = data[self.f.Symbol].High - hist_mapped['high'][0]
        
        self.Debug(f"{d}: Mapped contract: {self.f.Mapped.Value}; Mapped close: {hist_mapped['close'][0]}; Continuous close: {data[self.f.Symbol].Close}; Offset_close: {offset_c}; Offset_open: {offset_o}; ; Offset_high: {offset_h}")