Hi, I've been trying to backtest locally using the CLI and daily EOD option data I had laying around from IVolatility. Right now, my code to handle custom data looks like this:

class OptionContract(PythonData):
    def __init__(self, symbol, value, time):
        super().__init__()
        self.Symbol = symbol
        self.Value = value
        self.Time = time


class IVolatilityChain(PythonData):

    def GetSource(self, config, date, isLive):
        if isLive:
            raise NotImplementedError
        symbol = config.Symbol.Value
        date_str = date.strftime('%d-%m-%Y')
        request = "http://localhost:5000/IVolatility?date={}&underlying={}".format(date_str, symbol)

        return SubscriptionDataSource(request, SubscriptionTransportMedium.Rest)

    def Reader(self, config, line, date, isLive):

        data = json.loads(line)
        chain = IVolatilityChain()
        
        chain.Symbol = config.Symbol
        chain.Value = 0
        chain.Time = data[0]['DataDate']

        option_contracts = []
        for option_contract in data:
            option_contracts.append(OptionContract(symbol=option_contract['OptionSymbol'].replace("  ", "_"),
                                                   value=option_contract['MeanPrice'],
                                                   time=option_contract['DataDate']))
        chain['Chain'] = option_contracts

        return chain

class SomeAlgorithm(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2018, 1, 8)
        self.SetEndDate(2018, 1, 8)
        self.SetCash(100000)

        self.AddData(IVolatilityChain, "AAPL", Resolution.Daily)
        
   def OnData(self, data):
        chain = data['AAPL.IVolatilityChain'].Chain
    	
        contract = chain[0]
        # throws exception due to individual option contract symbol not being registered:
        self.Order(contract.Symbol, 1)

Given the underlying and current date, the relevant option chain is fetched. This works. The custom data object gets registered as ‘AAPL.IVolatilityChain’ and I can access it in the OnData method. However, the individual option contracts within the chain never get subscribed/registered anywhere, making it impossible to order them. Can anyone provide any pointers on how I should handle this case?