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 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 |
using QuantConnect.Securities.Option; namespace QuantConnect { /* * Basic Template Algorithm * * The underlying QCAlgorithm class has many methods which enable you to use QuantConnect. * We have explained some of these here, but the full base class can be found at: * https://github.com/QuantConnect/Lean/tree/master/Algorithm */ public class BasicTemplateAlgorithm : QCAlgorithm { public static String UnderlyingTicker = "AAPL"; //"MSFT"; //"SPY"; // "GLD"; public readonly Symbol Underlying = QuantConnect.Symbol.Create(UnderlyingTicker, SecurityType.Equity, Market.USA); public readonly Symbol OptionSymbol = QuantConnect.Symbol.Create(UnderlyingTicker, SecurityType.Option, Market.USA); // Manual add symbols required in your initialize method: public override void Initialize() { SetCash(10000); SetStartDate(2017, 1, 1); SetEndDate(2017,1, 05); var equity = AddEquity(UnderlyingTicker, Resolution.Minute); var option = AddOption(UnderlyingTicker, Resolution.Minute); //option.SetFilter(-2, +2, TimeSpan.Zero, TimeSpan.FromDays(10)); } public override void OnData(Slice data) { // enough to do the below once a day if (this.Time.Hour != 9) return; if (this.Time.Minute != 55) return; OptionChain chain; if (data.OptionChains.TryGetValue(OptionSymbol, out chain)) { // find the second call strike under market price expiring today var contract = ( from optionContract in chain.OrderByDescending(x => x.Strike) where optionContract.Right == OptionRight.Call where optionContract.Expiry == Time.Date where optionContract.Strike < chain.Underlying.Price select optionContract ).Skip(2).FirstOrDefault(); if (contract != null) { Log("Contract: " + contract.Symbol + "/" + contract.Expiry); } else Log("No contract found at: " + this.Time); } else Log("TryGetValue did not return any chain at: " + this.Time); Log("OptionChains: " + data.OptionChains.Count); } } }