public void ReturnsNoneIfNotWarmedUp() { const decimal underlyingPrice = 200m; const decimal underlyingVol = 0.15m; var tz = TimeZones.NewYork; var evaluationDate = new DateTime(2015, 2, 19); var spy = Symbols.SPY; var SPY_C_192_Feb19_2016E = GetOptionSymbol(spy, OptionStyle.European, OptionRight.Call); var SPY_P_192_Feb19_2016E = GetOptionSymbol(spy, OptionStyle.European, OptionRight.Put); // setting up underlying var equity = GetEquity(spy, underlyingPrice, underlyingVol, tz); // setting up European style call option var contractCall = GetOptionContract(SPY_C_192_Feb19_2016E, spy, evaluationDate); var optionCall = GetOption(SPY_C_192_Feb19_2016E, equity, tz); // setting up European style put option var contractPut = GetOptionContract(SPY_P_192_Feb19_2016E, spy, evaluationDate); var optionPut = GetOption(SPY_P_192_Feb19_2016E, equity, tz); // running evaluation var volatilityModel = new Mock <IQLUnderlyingVolatilityEstimator>(); volatilityModel.SetupGet(s => s.IsReady).Returns(false); var priceModel = new QLOptionPriceModel(process => new AnalyticEuropeanEngine(process), volatilityModel.Object, null, null); var resultsCall = priceModel.Evaluate(optionCall, null, contractCall); var resultsPut = priceModel.Evaluate(optionPut, null, contractPut); Assert.AreEqual(OptionPriceModelResult.None, resultsCall); Assert.AreEqual(OptionPriceModelResult.None, resultsCall); }
public void HasBeenWarmedUp(bool warmUp) { var volatilityModel = new Mock <IQLUnderlyingVolatilityEstimator>(); volatilityModel.SetupGet(s => s.IsReady).Returns(warmUp); var priceModel = new QLOptionPriceModel( process => new IntegralEngine(process), volatilityModel.Object, null, null); Assert.AreEqual(warmUp, priceModel.VolatilityEstimatorWarmedUp); }
public void ReturnsNoneIfNotWarmedUp() { const decimal underlyingPrice = 200m; const decimal underlyingVol = 0.15m; const decimal riskFreeRate = 0.01m; var tz = TimeZones.NewYork; var evaluationDate = new DateTime(2015, 2, 19); var SPY_C_192_Feb19_2016E = Symbol.CreateOption("SPY", Market.USA, OptionStyle.European, OptionRight.Call, 192m, new DateTime(2016, 02, 19)); var SPY_P_192_Feb19_2016E = Symbol.CreateOption("SPY", Market.USA, OptionStyle.European, OptionRight.Put, 192m, new DateTime(2016, 02, 19)); // setting up underlying var equity = new Equity( SecurityExchangeHours.AlwaysOpen(tz), new SubscriptionDataConfig(typeof(TradeBar), Symbols.SPY, Resolution.Minute, tz, tz, true, false, false), new Cash(Currencies.USD, 0, 1m), SymbolProperties.GetDefault(Currencies.USD), ErrorCurrencyConverter.Instance, RegisteredSecurityDataTypesProvider.Null ); equity.SetMarketPrice(new Tick { Value = underlyingPrice }); equity.VolatilityModel = new DummyVolatilityModel(underlyingVol); // setting up European style call option var contractCall = new OptionContract(SPY_C_192_Feb19_2016E, Symbols.SPY) { Time = evaluationDate }; var optionCall = new Option( SecurityExchangeHours.AlwaysOpen(tz), new SubscriptionDataConfig(typeof(TradeBar), SPY_C_192_Feb19_2016E, Resolution.Minute, tz, tz, true, false, false), new Cash(Currencies.USD, 0, 1m), new OptionSymbolProperties(SymbolProperties.GetDefault(Currencies.USD)), ErrorCurrencyConverter.Instance, RegisteredSecurityDataTypesProvider.Null ); optionCall.Underlying = equity; // setting up European style put option var contractPut = new OptionContract(SPY_P_192_Feb19_2016E, Symbols.SPY) { Time = evaluationDate }; var optionPut = new Option( SecurityExchangeHours.AlwaysOpen(tz), new SubscriptionDataConfig(typeof(TradeBar), SPY_P_192_Feb19_2016E, Resolution.Minute, tz, tz, true, false, false), new Cash(Currencies.USD, 0, 1m), new OptionSymbolProperties(SymbolProperties.GetDefault(Currencies.USD)), ErrorCurrencyConverter.Instance, RegisteredSecurityDataTypesProvider.Null ); optionPut.Underlying = equity; // running evaluation var volatilityModel = new Mock <IQLUnderlyingVolatilityEstimator>(); volatilityModel.SetupGet(s => s.IsReady).Returns(false); var priceModel = new QLOptionPriceModel(process => new AnalyticEuropeanEngine(process), volatilityModel.Object, null, null); var resultsCall = priceModel.Evaluate(optionCall, null, contractCall); var resultsPut = priceModel.Evaluate(optionPut, null, contractPut); Assert.AreEqual(OptionPriceModelResult.None, resultsCall); Assert.AreEqual(OptionPriceModelResult.None, resultsCall); }