Overall Statistics |
Total Trades 2 Average Win 0% Average Loss -0.28% Compounding Annual Return -78.105% Drawdown 0.300% Expectancy -1 Net Profit -0.280% Sharpe Ratio 0 Loss Rate 100% 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.50 |
namespace QuantConnect.Algorithm.CSharp { public class BasicTemplateOptionsAlgorithm : QCAlgorithm { private const string UnderlyingTicker = "GOOG"; public readonly Symbol Underlying = QuantConnect.Symbol.Create(UnderlyingTicker, SecurityType.Equity, Market.USA); private Symbol option_symbol; public override void Initialize() { SetStartDate(2015, 12, 24); SetEndDate(2015, 12, 24); SetCash(100000); var equity = AddEquity(UnderlyingTicker); var option = AddOption(UnderlyingTicker); option.SetFilter(u => u.Strikes(-2, +2) .Expiration(TimeSpan.Zero, TimeSpan.FromDays(180))); option_symbol = option.Symbol; SetBenchmark(equity.Symbol); } public override void OnData(Slice slice) { if (!Portfolio.Invested && IsMarketOpen(option_symbol)) { OptionChain chain; if (slice.OptionChains.TryGetValue(option_symbol, out chain)) { // we find at the money (ATM) put contract with farthest expiration var atmContract = chain .OrderByDescending(x => x.Expiry) .ThenBy(x => Math.Abs(chain.Underlying.Price - x.Strike)) .ThenByDescending(x => x.Right) .FirstOrDefault(); if (atmContract != null) { // if found, trade it MarketOrder(atmContract.Symbol, 1); MarketOnCloseOrder(atmContract.Symbol, -1); } } } } } }