Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return -100.000% Drawdown 3.900% Expectancy 0 Net Profit -3.202% 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.25 |
using System; using System.Linq; using QuantConnect.Data; using QuantConnect.Data.Market; using QuantConnect.Orders; using QuantConnect.Securities; namespace QuantConnect.Algorithm.CSharp { /// <summary> /// This example demonstrates how to add options for a given underlying equity security. /// It also shows how you can prefilter contracts easily based on strikes and expirations. /// It also shows how you can inspect the option chain to pick a specific option contract to trade. /// </summary> public class TastyIronCondorAlgorithm : QCAlgorithm { private const string UnderlyingTicker = "GOOG"; public readonly Symbol Underlying = QuantConnect.Symbol.Create(UnderlyingTicker, SecurityType.Equity, Market.USA); public readonly Symbol OptionSymbol = QuantConnect.Symbol.Create(UnderlyingTicker, SecurityType.Option, Market.USA); public override void Initialize() { SetStartDate(2015, 12, 24); SetEndDate(2015, 12, 24); SetCash(10000); var equity = AddEquity(UnderlyingTicker); var option = AddOption(UnderlyingTicker); // set our custom filter for this option chain option.SetFilter(universe => from symbol in universe .WeeklysOnly() .Expiration(TimeSpan.Zero, TimeSpan.FromDays(10)) where symbol.ID.OptionRight != OptionRight.Put && universe.Underlying.Price - symbol.ID.StrikePrice < 60 select symbol); // use the underlying equity as the benchmark SetBenchmark(equity.Symbol); } public override void OnData(Slice slice) { if (!Portfolio.Invested) { OptionChain chain; if (slice.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) { MarketOrder(contract.Symbol, 1); } } } } public override void OnOrderEvent(OrderEvent orderEvent) { Log(orderEvent.ToString()); } } }