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 System; using System.Linq; using QuantConnect.Data; using QuantConnect.Data.Market; using QuantConnect.Orders; using QuantConnect.Securities.Option; namespace QuantConnect.Algorithm.CSharp { /// <summary> /// Example demonstrating how to access to options history for a given underlying equity security. /// </summary> public class BasicTemplateOptionsHistoryAlgorithm : QCAlgorithm { public override void Initialize() { SetStartDate(2017, 11, 20); SetEndDate(2017, 11, 26); var equity = AddEquity("SPY", Resolution.Daily); var option = AddOption("SPY"); //Default volatility model needs two days of data to start to return non-zero volatility for greek calcs... //SetWarmup(TimeSpan.FromDays(2));//Require minimum warmup of 2 days for option greek calcs } /// <summary> /// Event - v3.0 DATA EVENT HANDLER: (Pattern) Basic template for user to override for receiving all subscription data in a single event /// </summary> /// <param name="slice">The current slice of data keyed by symbol string</param> public override void OnData(Slice slice) { if (!Portfolio.Invested) { foreach (var chain in slice.OptionChains) { var underlying = Securities[chain.Key.Underlying]; foreach (var contract in chain.Value) { Log(String.Format(@"{0},Bid={1} Ask={2} Last={3} OI={4} σ={5:0.000} NPV={6:0.000} Δ={7:0.000} Γ={8:0.000} ν={9:0.000} ρ={10:0.00} Θ={11:0.00} IV={12:0.000}", contract.Symbol.Value, contract.BidPrice, contract.AskPrice, contract.LastPrice, contract.OpenInterest, underlying.VolatilityModel.Volatility, contract.TheoreticalPrice, contract.Greeks.Delta, contract.Greeks.Gamma, contract.Greeks.Vega, contract.Greeks.Rho, contract.Greeks.Theta / 365.0m, contract.ImpliedVolatility)); } } } } public override void OnSecuritiesChanged(SecurityChanges changes) { foreach (var change in changes.AddedSecurities) { var history = History(change.Symbol, 10, Resolution.Hour); foreach (var data in history.OrderByDescending(x => x.Time).Take(3)) { Log($"History: {data.Symbol.Value}: {data.Time} > {data.Close}"); } } } } }