public override void OnData(Slice slice) { if (!Portfolio.Invested) { OptionChain chain; if (slice.OptionChains.TryGetValue(_optionSymbol, out chain)) { var atmStraddle = chain .OrderBy(x => Math.Abs(chain.Underlying.Price - x.Strike)) .ThenByDescending(x => x.Expiry) .FirstOrDefault(); if (atmStraddle != null) { Sell(OptionStrategies.Straddle(_optionSymbol, atmStraddle.Strike, atmStraddle.Expiry), 2); } } } else { Liquidate(); } foreach (var kpv in slice.Bars) { Log($"---> OnData: {Time}, {kpv.Key.Value}, {kpv.Value.Close:0.00}"); } }