/// <summary> /// Initializes a new instance of the <see cref="PriceableRepo"/> class. /// </summary> /// <param name="baseDate">The base date.</param> /// <param name="amount">Notional Amount.</param> /// <param name="nodeStruct">The deposit nodeStruct.</param> /// <param name="businessDayAdjustments">The business day adjustments.</param> /// <param name="fixingCalendar">The fixing Calendar.</param> /// <param name="paymentCalendar">The payment Calendar.</param> /// <param name="fixedRate">The fixed rate.</param> public PriceableRepo(DateTime baseDate, Decimal amount, RepoNodeStruct nodeStruct, IBusinessCalendar fixingCalendar, IBusinessCalendar paymentCalendar, BusinessDayAdjustments businessDayAdjustments, BasicQuotation fixedRate) : base(nodeStruct.Deposit.id, baseDate, amount, businessDayAdjustments, fixedRate) { SpotDateOffset = nodeStruct.SpotDate; Deposit = nodeStruct.Deposit; UnderlyingAsset = nodeStruct.UnderlyingAsset; AdjustedStartDate = GetSpotDate(baseDate, fixingCalendar, nodeStruct.SpotDate); RiskMaturityDate = GetEffectiveDate(AdjustedStartDate, paymentCalendar, nodeStruct.Deposit.term, nodeStruct.BusinessDayAdjustments.businessDayConvention); YearFraction = GetYearFraction(Deposit.dayCountFraction.Value, AdjustedStartDate, RiskMaturityDate); }
/// <summary> /// Initializes a new instance of the <see cref="PriceableSpreadRepo"/> class. /// </summary> /// <param name="baseDate">The base date.</param> /// <param name="nodeStruct">The nodeStruct.</param> /// <param name="fixingCalendar">The fixingCalendar.</param> /// <param name="spread">The spread.</param> /// <param name="paymentCalendar">A paymentCalendar.</param> public PriceableSpreadRepo(DateTime baseDate, RepoNodeStruct nodeStruct, IBusinessCalendar fixingCalendar, IBusinessCalendar paymentCalendar, BasicQuotation spread) : base(baseDate, nodeStruct.BusinessDayAdjustments, spread) { Id = nodeStruct.Deposit.id; Deposit = nodeStruct.Deposit; FixingDateOffset = nodeStruct.SpotDate; UnderlyingAsset = nodeStruct.UnderlyingAsset; AdjustedStartDate = GetSpotDate(baseDate, fixingCalendar, nodeStruct.SpotDate); AdjustedEffectiveDate = AdjustedStartDate; RiskMaturityDate = GetEffectiveDate(AdjustedStartDate, paymentCalendar, nodeStruct.Deposit.term, nodeStruct.BusinessDayAdjustments.businessDayConvention); YearFraction = GetYearFractions()[0]; TimeToExpiry = GetTimeToMaturity(baseDate, RiskMaturityDate); SetSpread(spread); }