/// <summary> /// Initializes a new instance of the <see cref="PriceableCEROption"/> class. /// </summary> /// <param name="baseDate">The base date.</param> /// <param name="nodeStruct">The nodeStruct.</param> /// <param name="rollCalendar">THe rollCalendar.</param> /// <param name="fixedRate"></param> public PriceableCEROption(DateTime baseDate, CommodityFutureNodeStruct nodeStruct, IBusinessCalendar rollCalendar, BasicQuotation fixedRate) : base(baseDate, nodeStruct, rollCalendar, fixedRate) { Id = nodeStruct.Future.id; Future = nodeStruct.Future; ModelIdentifier = "CommoditiesFuturesOptionAsset"; var idParts = Id.Split('-'); var exchangeCommodityName = idParts[2]; var immCode = idParts[3]; int intResult; //Catch the relative rolls. if (int.TryParse(immCode, out intResult)) { var tempTradingDate = LastTradingDayHelper.ParseCode(immCode); immCode = tempTradingDate.GetNthMainCycleCode(baseDate, intResult); } var lastTradingDay = LastTradingDayHelper.Parse(exchangeCommodityName, immCode); LastTradeDate = lastTradingDay.GetLastTradingDay(baseDate); RiskMaturityDate = LastTradeDate; OptionsExpiryDate = LastTradeDate; TimeToExpiry = (decimal)DayCounter.YearFraction(BaseDate, RiskMaturityDate); }
/// <summary> /// Initializes a new instance of the <see cref="PriceableCER"/> class. /// </summary> /// <param name="baseDate">The base date.</param> /// <param name="nodeStruct">The nodeStruct.</param> /// <param name="rollCalendar">THe rollCalendar.</param> /// <param name="fixedRate"></param> public PriceableCER(DateTime baseDate, CommodityFutureNodeStruct nodeStruct, IBusinessCalendar rollCalendar, BasicQuotation fixedRate) : base(baseDate, nodeStruct.Future, nodeStruct.BusinessDayAdjustments, fixedRate, null) { Id = nodeStruct.Future.id; Future = nodeStruct.Future; PriceQuoteUnits = nodeStruct.PriceQuoteUnits; ModelIdentifier = "CommoditiesFuturesAsset"; SettlementBasis = "The business day prior to the 15th calendar day of the contract month"; ContractMonthPeriod = nodeStruct.ContractMonthPeriod; ContractSeries = "March (H), May (K), July (N), September (U) & December (Z)"; var idParts = Id.Split('-'); var exchangeCommodityNames = idParts[2].Split('.'); var commodityCode = exchangeCommodityNames[0]; if (exchangeCommodityNames.Length > 1) { commodityCode = exchangeCommodityNames[1]; } var immCode = idParts[3]; //Catch the relative rolls. if (int.TryParse(immCode, out var intResult)) { var tempTradingDate = LastTradingDayHelper.ParseCode(commodityCode); immCode = tempTradingDate.GetNthMainCycleCode(baseDate, intResult); } var lastTradingDay = LastTradingDayHelper.Parse(commodityCode, immCode); LastTradeDate = lastTradingDay.GetLastTradingDay(baseDate); RiskMaturityDate = LastTradeDate; TimeToExpiry = (decimal)DayCounter.YearFraction(BaseDate, RiskMaturityDate); }