/// <summary> /// Initializes a new instance of the <see cref="PriceableSimpleFra"/> class. /// This is a special case for use with the factry for bootstrapping, as it /// uses no calendar logic. This is done by the factory. /// </summary> /// <param name="baseDate">The base date.</param> /// <param name="nodeStruct">A special class containing all salient data required.</param> /// <param name="fixingCalendar">The fixing calendar.</param> /// <param name="paymentCalendar">The payment calendar.></param> /// <param name="notional">The notional. The default value is 1.00m.</param> /// <param name="normalisedRate">Thhhe fixed rate as a decimal contained in a basic quotation.</param> public PriceableSimpleFra(DateTime baseDate, SimpleFraNodeStruct nodeStruct, IBusinessCalendar fixingCalendar, IBusinessCalendar paymentCalendar, Decimal notional, BasicQuotation normalisedRate) : base(nodeStruct.SimpleFra.id, baseDate, notional, nodeStruct.BusinessDayAdjustments, normalisedRate) { SimpleFra = nodeStruct.SimpleFra; FixingDateOffset = nodeStruct.SpotDate; UnderlyingRateIndex = nodeStruct.RateIndex; SpotDate = GetSpotDate(baseDate, fixingCalendar, nodeStruct.SpotDate); AdjustedStartDate = GetEffectiveDate(SpotDate, paymentCalendar, nodeStruct.SimpleFra.startTerm, nodeStruct.BusinessDayAdjustments.businessDayConvention);//GetSpotDate(); RiskMaturityDate = GetEffectiveDate(SpotDate, paymentCalendar, nodeStruct.SimpleFra.endTerm, nodeStruct.BusinessDayAdjustments.businessDayConvention); YearFraction = GetYearFraction(SimpleFra.dayCountFraction.Value, AdjustedStartDate, RiskMaturityDate); TimeToExpiry = GetTimeToMaturity(baseDate, RiskMaturityDate); }
/// <summary> /// Initializes a new instance of the <see cref="PriceableSpreadFra"/> class. /// </summary> /// <param name="baseDate">The base date.</param> /// <param name="nodeStruct">The nodeStruct.</param> /// <param name="fixingCalendar">The fixingCalendar.</param> /// <param name="underlyingRateIndex">The underlying rate index.</param> /// <param name="spread">The spread.</param> /// <param name="paymentCalendar">A paymentCalendar.</param> public PriceableSpreadFra(DateTime baseDate, SimpleFraNodeStruct nodeStruct, IBusinessCalendar fixingCalendar, IBusinessCalendar paymentCalendar, RateIndex underlyingRateIndex, BasicQuotation spread) : base(baseDate, nodeStruct.BusinessDayAdjustments, spread) { Id = nodeStruct.SimpleFra.id; SimpleFra = nodeStruct.SimpleFra; FixingDateOffset = nodeStruct.SpotDate; UnderlyingRateIndex = underlyingRateIndex; AdjustedStartDate = GetSpotDate(baseDate, fixingCalendar, nodeStruct.SpotDate); AdjustedEffectiveDate = GetEffectiveDate(AdjustedStartDate, paymentCalendar, nodeStruct.SimpleFra.startTerm, nodeStruct.BusinessDayAdjustments.businessDayConvention); RiskMaturityDate = GetEffectiveDate(AdjustedStartDate, paymentCalendar, nodeStruct.SimpleFra.endTerm, nodeStruct.BusinessDayAdjustments.businessDayConvention); YearFraction = GetYearFractions()[0]; TimeToExpiry = GetTimeToMaturity(baseDate, RiskMaturityDate); SetSpread(spread); }
/// <summary> /// Initializes a new instance of the <see cref="PriceableSimpleDiscountFra"/> class. /// This is a special case for use with the factry for bootstrapping, as it /// uses no calendar logic. This is done by the factory. /// </summary> /// <param name="baseDate">The base date.</param> /// <param name="nodeStruct">A special class containing all salient data required.</param> /// <param name="fixingCalendar">The fixing calendar.</param> /// <param name="paymentCalendar">The payment calendar.></param> /// <param name="notional">The notional. The default value is 1.00m.</param> /// <param name="normalisedRate">Thhhe fixed rate as a decimal contained in a basic quotation.</param> public PriceableSimpleDiscountFra(DateTime baseDate, SimpleFraNodeStruct nodeStruct, IBusinessCalendar fixingCalendar, IBusinessCalendar paymentCalendar, Decimal notional, BasicQuotation normalisedRate) : base(baseDate, nodeStruct, fixingCalendar, paymentCalendar, notional, normalisedRate) { ModelIdentifier = "SimpleDiscountAsset"; }