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 GeekyRedOrangeArmadillo(QCAlgorithm): def Initialize(self): self.SetStartDate(2021, 3, 15) # Set Start Date self.SetCash(100000) # Set Strategy Cash self.equity_symbol = self.AddEquity("SPY", Resolution.Minute, dataNormalizationMode = DataNormalizationMode.Raw).Symbol option = self.AddOption(self.equity_symbol) option.SetFilter(self.contract_selector) self.option_symbol = option.Symbol def contract_selector(self, option_filter_universe: OptionFilterUniverse) -> OptionFilterUniverse: strikes = sorted(set([symbol.ID.StrikePrice for symbol in option_filter_universe])) strike_distance = strikes[1] - strikes[0] self.Debug(f"Strike distance: {strike_distance}") self.Debug(f"Unfiltered contract count: {len([symbol for symbol in option_filter_universe])}") threshold = 0.1 underlying_price = option_filter_universe.Underlying.Price symbols = [] for symbol in option_filter_universe: if underlying_price * (1-threshold) < symbol.ID.StrikePrice < underlying_price * (1+threshold): symbols.append(symbol) self.Debug(f"Filtered contract count: {len(symbols)}") return option_filter_universe.Contracts(symbols) def OnData(self, data: Slice): self.Quit()