| 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.Algorithm.CSharp
{
/// <summary>
/// Option chain for a given underlying at a specified date, time.
/// </summary>
public class BasicTemplateOptionChain : QCAlgorithm
{
private const string UnderlyingTicker = "SPY";
public readonly Symbol Underlying = QuantConnect.Symbol.Create(UnderlyingTicker, SecurityType.Equity, Market.USA);
public readonly Symbol OptionSymbol = QuantConnect.Symbol.Create(UnderlyingTicker, SecurityType.Option, Market.USA);
private DateTime selDateTime = DateTime.ParseExact("2017-08-14 16:00", "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);
private bool printedInfo = false;
public override void Initialize()
{
SetStartDate(2017, 8, 14);
SetEndDate(2017, 8, 14);
SetWarmup(TimeSpan.FromDays(7));
SetCash(10000);
var equity = AddEquity(UnderlyingTicker);
var option = AddOption(UnderlyingTicker);
equity.SetDataNormalizationMode(DataNormalizationMode.Raw);
//option.PriceModel = OptionPriceModels.BlackScholes();
//option.PriceModel = OptionPriceModels.BinomialJoshi();
option.PriceModel = OptionPriceModels.BinomialJarrowRudd();
option.SetFilter(-10, +10, TimeSpan.FromDays(500), TimeSpan.FromDays(750));
// CAUTION: Match these columns with the Log in OnData!
Log("TimeAndContract,Right,Expiry,Strike,Bid,Ask,Last,TheoreticalPrice,OI,Underlying,IV,HV");
}
public override void OnData(Slice slice)
{
if (!printedInfo && Time >= selDateTime)
{
foreach (var chain in slice.OptionChains)
{
var underlying = Securities[chain.Key.Underlying];
foreach (var contract in chain.Value)
{
Log(String.Format(@"{0},{1},{2},{3:0.00},{4:0.000},{5:0.000},{6:0.000},{7:0.000},{8},{9:0.000},{10:0.0000},{11:0.0000}",
contract.Symbol.Value,
contract.Right,
contract.Expiry,
contract.Strike,
contract.BidPrice,
contract.AskPrice,
contract.LastPrice,
contract.TheoreticalPrice,
contract.OpenInterest,
contract.UnderlyingLastPrice,
underlying.VolatilityModel.Volatility,
contract.ImpliedVolatility));
}
}
printedInfo = true;
}
}
}
}