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