public void ExpiryFunctionsReturnExpectedResults(string futureTicker, string market, DateTime expected) { var future = Symbol.Create(futureTicker, SecurityType.Future, market); var futureOption = Symbol.CreateOption(future, market, default(OptionStyle), default(OptionRight), default(decimal), SecurityIdentifier.DefaultDate); var december = new DateTime(2020, 12, 1); var actual = FuturesOptionsExpiryFunctions.FuturesOptionExpiry(futureOption, december); Assert.AreEqual(expected, actual); }
[TestCase("GC", Market.COMEX, 11, 1)] // No mapping is done for this Symbol as expected, although rules exist. public void FutureContractMonthDelta(string futureTicker, string market, int expiryMonth, int expectedDelta) { var contractMonth = new DateTime(2020, 12, 1); var future = Symbol.Create(futureTicker, SecurityType.Future, market); var option = Symbol.CreateOption( future, market, default(OptionStyle), default(OptionRight), default(decimal), SecurityIdentifier.DefaultDate); var futureOptionExpiry = FuturesOptionsExpiryFunctions.FuturesOptionExpiry(option, contractMonth); Assert.AreEqual(expectedDelta, contractMonth.Month - futureOptionExpiry.Month); }
public void GetUnderlyingSymbolFromFutureOption(string futureTicker, string market, int year, int month, int day, int fopContractYear, int fopContractMonth, bool nullExpected) { var optionTicker = FuturesOptionsSymbolMappings.Map(futureTicker); var expectedFuture = Symbol.CreateFuture(futureTicker, market, new DateTime(year, month, day)); var canonicalFutureOption = Symbol.CreateOption(expectedFuture, market, default(OptionStyle), default(OptionRight), default(decimal), SecurityIdentifier.DefaultDate); var futureContractMonthDelta = FuturesExpiryUtilityFunctions.GetDeltaBetweenContractMonthAndContractExpiry(futureTicker, expectedFuture.ID.Date); var futureContractMonth = expectedFuture.ID.Date.AddMonths(futureContractMonthDelta); var futuresOptionsExpiration = FuturesOptionsExpiryFunctions.FuturesOptionExpiry(canonicalFutureOption, futureContractMonth); var actualFuture = FuturesOptionsUnderlyingMapper.GetUnderlyingFutureFromFutureOption(optionTicker, market, futuresOptionsExpiration, new DateTime(2021, 1, 1)); if (nullExpected) { // There were no futures that appeared on the or subsequent contract months from the future option. Assert.IsNull(actualFuture); } else { Assert.AreEqual(expectedFuture, actualFuture); } }