/// <summary> /// Initializes a new instance of the <see cref="PriceableCommoditySpot"/> class. /// </summary> /// <param name="notionalAmount"></param> /// <param name="baseDate"></param> /// <param name="nodeStruct">The nodeStruct.</param> /// <param name="fixingCalendar">The fixingCalendar.</param> /// <param name="paymentCalendar">The paymentCalendar.</param> /// <param name="commoditySpotRate">The commodity SpotRate.</param> public PriceableCommoditySpot(DateTime baseDate, decimal notionalAmount, CommoditySpotNodeStruct nodeStruct, IBusinessCalendar fixingCalendar, IBusinessCalendar paymentCalendar, BasicQuotation commoditySpotRate) { PaymentDiscountFactorCcy12 = 1.0m; PaymentDiscountFactorCcy1 = 1.0m; Ccy2CurveName = string.Empty; Ccy1CurveName = string.Empty; ModelIdentifier = "SimpleCommodityAsset"; if (nodeStruct.Commodity != null) { Id = nodeStruct.Commodity.id; } NotionalAmount = notionalAmount; CommodityAsset = nodeStruct.Commodity; BaseDate = baseDate; SpotDateOffset = nodeStruct.SpotDate; RiskMaturityDate = GetSpotDate(baseDate, fixingCalendar, SpotDateOffset); SetRate(commoditySpotRate); }
/// <summary> /// Initializes a new instance of the <see cref="PriceableCommoditySpot"/> class. /// </summary> /// <param name="notionalAmount"></param> /// <param name="baseDate"></param> /// <param name="term">The tenor.</param> /// <param name="nodeStruct">The nodeStruct.</param> /// <param name="fixingCalendar">The fixingCalendar.</param> /// <param name="paymentCalendar">The paymentCalendar.</param> /// <param name="commodityForward">The forward points.</param> public PriceableCommodityForward(DateTime baseDate, decimal notionalAmount, string term, CommoditySpotNodeStruct nodeStruct, IBusinessCalendar fixingCalendar, IBusinessCalendar paymentCalendar, BasicQuotation commodityForward) { PaymentDiscountFactorCcy12 = 1.0m; PaymentDiscountFactorCcy1 = 1.0m; Ccy2CurveName = string.Empty; Ccy1CurveName = string.Empty; ModelIdentifier = "SimpleCommodityAsset"; if (nodeStruct.Commodity != null) { Id = nodeStruct.Commodity.id; } Tenor = PeriodHelper.Parse(term); NotionalAmount = notionalAmount; CommodityAsset = nodeStruct.Commodity; BaseDate = baseDate; SpotDateOffset = nodeStruct.SpotDate; //FixingCalendar = BusinessCenterHelper.ToBusinessCalendar(SpotDateOffset.businessCenters); var spotDate = GetSpotDate(baseDate, fixingCalendar, SpotDateOffset); RiskMaturityDate = GetForwardDate(spotDate, paymentCalendar, Tenor, SpotDateOffset.businessDayConvention); SetRate(commodityForward); }
/// <summary> /// Initializes a new instance of the <see cref="PriceableCommoditySpread"/> class. /// </summary> /// <param name="identifier">The asset identifier</param> /// <param name="baseDate">The base date.</param> /// <param name="tenor">The tenor.</param> /// <param name="nodeStruct">The nodeStruct.</param> /// <param name="spread">The spread.</param> /// <param name="fixingAndPaymentCalendar">A fixing and payment Calendar.</param> public PriceableCommoditySpread(String identifier, DateTime baseDate, string tenor, CommoditySpotNodeStruct nodeStruct, IBusinessCalendar fixingAndPaymentCalendar, BasicQuotation spread) : base(baseDate, spread) { Id = identifier; SpotDate = GetSpotDate(baseDate, fixingAndPaymentCalendar, nodeStruct.SpotDate); CommodityAsset = nodeStruct.Commodity; Tenor = PeriodHelper.Parse(tenor); RiskMaturityDate = GetEffectiveDate(SpotDate, fixingAndPaymentCalendar, Tenor, nodeStruct.SpotDate.businessDayConvention); TimeToExpiry = GetTimeToMaturity(baseDate, RiskMaturityDate); SetRate(spread); }