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
5.91
Tracking Error
0.13
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
from QuantConnect.Securities.Option import OptionPriceModels

class BasicTemplateOptionsConsolidationAlgorithm(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2013, 10, 7)
        self.SetEndDate(2013, 10, 8)
        self.SetCash(1000000)

        self.consolidation_period = 60

        self.option = self.AddOption('SPY')
        self.option.SetFilter(-1, +1, 0, 30)
        self.option.PriceModel = OptionPriceModels.CrankNicolsonFD()
        self.SetWarmUp(30, Resolution.Daily)
        
        self.consolidators = dict()
    
    def OnData(self, data):
        for symbol, chain in data.OptionChains.items():
            for contract in chain:
                self.consolidators[contract.Symbol].Update(IndicatorDataPoint(self.Time, contract.ImpliedVolatility))
            

    def OnIVConsolidated(self, sender, bar):
        self.Log(f"Consolidated IV for {bar.Symbol} received at {self.Time} ... O:{bar.Open}; H:{bar.High}; L:{bar.Low}; C:{bar.Close}")
                    
        
    def OnSecuritiesChanged(self, changes):
        for security in changes.AddedSecurities:
            if security.Type == SecurityType.Option:
                symbol = security.Symbol
                consolidator = BaseDataConsolidator(timedelta(hours=1))
                consolidator.DataConsolidated += self.OnIVConsolidated
                self.consolidators[symbol] = consolidator
                
        for security in changes.RemovedSecurities:
            if security.Type == SecurityType.Option:
                consolidator = self.consolidators.pop(security.Symbol)
                consolidator.DataConsolidated -= self.OnIVConsolidated