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 |
namespace QuantConnect { public partial class CoveredCallAlgorithm : QCAlgorithm { Symbol _optionSymbol; // Manual add symbols required in your initialize method: public override void Initialize() { SetStartDate(2015, 8, 8); SetEndDate(2015,11, 12); var option = AddOption("GOOG", Resolution.Minute); _optionSymbol = option.Symbol; // set our strike/expiry filter for this option chain option.SetFilter(-2, +2, TimeSpan.Zero, TimeSpan.FromDays(10)); } // v3.0 Technique: Access data via grouped time slice method handlers: public override void OnData(Slice slice) { 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) { var quantity = CalculateOrderQuantity(contract.Symbol, -1m); MarketOrder(contract.Symbol, quantity); MarketOnCloseOrder(contract.Symbol, -quantity); }else{ Log("no contract"); } }else{ Log("no chain available"); } } } }