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 Sortino 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 2.493 Tracking Error 0.137 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
from AlgorithmImports import * from QuantConnect.DataSource import * from datetime import datetime, timedelta class HyperActiveApricotChicken(QCAlgorithm): def Initialize(self): self.SetStartDate(2023, 2, 1) self.SetEndDate(2023, 3, 10) self.SetCash(100000) self.tickers_list = [Futures.Grains.SRWWheat, Futures.Indices.SP500EMini]#[Futures.Dairy.ClassIIIMilk, Futures.Energies.CrudeOilWTI, Futures.Energies.HeatingOil, Futures.Energies.NaturalGas, Futures.Energies.Gasoline, Futures.Grains.Corn, Futures.Grains.Soybeans, Futures.Grains.SRWWheat, Futures.Indices.SP500EMini, Futures.Indices.NASDAQ100EMini, Futures.Metals.Gold, Futures.Metals.Copper, Futures.Metals.Silver] # MILK (DC), CRUDE OIL (LO), HEATING OIL (OH), NATURAL GAS (ON), GASOLINE (OB), CORN (OZC), SOYABEANS (OZS), WHEAR (OZW), SP500EMINI (ES), NAS100EMINI (NQ), GOLD (OG), COPPER (HXE), SILVER (SO) self.res = Resolution.Daily self.futureSymbols = [] self.Debug("1. Initialization started") for ticker in self.tickers_list: self.Debug(f"2. Subscribing to future: {ticker}") future = self.AddFuture(ticker, self.res) future.SetFilter(2, 90) #future.SetDataNormalizationMode(DataNormalizationMode.Raw) self.AddFutureOption(future.Symbol) self.futureSymbols.append(future.Symbol.Value) self.Debug(f"3. Future symbol stored: {future.Symbol.Value}") def OnData(self, data: Slice): self.Debug(f"5. OnData called at {self.Time}") self.option_w_OInt_OVol = {} volCount = 0 oiCount = 0 if data.OptionChains.Count > 0: self.Debug(f"6. Processing {data.OptionChains.Count} option chains") for optionChain in data.OptionChains.Values: underlyingFutureSymbol = optionChain.Symbol.Underlying.Value optionChainSymbol = optionChain.Symbol.Value self.Debug(f"7. Checking option chain for underlying future symbol: {underlyingFutureSymbol}") self.Debug(f"7i. Available option chain symbol: {optionChainSymbol}") if underlyingFutureSymbol in optionChainSymbol: self.Debug(f"8. Found matching future symbol: {underlyingFutureSymbol}") for contract in optionChain.Contracts.values(): OInt = contract.OpenInterest if OInt>0: oiCount += 1 OVol = contract.Volume if OVol>0: volCount += 1 if OInt != 0 and OVol != 0: vol_OI_Ratio = OVol / OInt self.option_w_OInt_OVol[contract.Symbol] = {"OpenInterest": OInt, "Volume": OVol, "Vol_OI_Ratio": vol_OI_Ratio} self.Debug(f"9. Contract added: {contract.Symbol} with OI: {OInt} and Volume: {OVol}") self.Debug(f"10. oi count is {oiCount}, vol count is {volCount}") sorted_options = sorted(self.option_w_OInt_OVol.items(), key=lambda x: x[1]["Vol_OI_Ratio"], reverse=True)[:1] for option in sorted_options: self.Debug(f"11. Top option: {option[0].Value} - {option[1]}")