| 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