public BasicFixedLeg(IsdaCompliantDiscountCurveCalibrator outerInstance, LocalDate curveSpotDate, LocalDate maturityDate, Period swapInterval, DayCount swapDCC, DayCount curveDcc, BusinessDayAdjustment busAdj, ReferenceData refData) { this.outerInstance = outerInstance; IList <LocalDate> list = new List <LocalDate>(); LocalDate tDate = maturityDate; int step = 1; while (tDate.isAfter(curveSpotDate)) { list.Add(tDate); tDate = maturityDate.minus(swapInterval.multipliedBy(step++)); } // remove spotDate from list, if it ends up there list.Remove(curveSpotDate); nPayment = list.Count; swapPaymentTime = new double[nPayment]; yearFraction = new double[nPayment]; LocalDate prev = curveSpotDate; int j = nPayment - 1; for (int i = 0; i < nPayment; i++, j--) { LocalDate current = list[j]; LocalDate adjCurr = busAdj.adjust(current, refData); yearFraction[i] = swapDCC.relativeYearFraction(prev, adjCurr); swapPaymentTime[i] = curveDcc.relativeYearFraction(curveSpotDate, adjCurr); // Payment times always good business days prev = adjCurr; } }
//------------------------------------------------------------------------- private static ImmutableCreditRatesProvider createRatesProvider(LocalDate tradeDate, LocalDate snapDate, double rateScale, double recoveryRate) { ImmutableMarketDataBuilder builder = ImmutableMarketData.builder(snapDate); for (int j = 0; j < NUM_INSTRUMENTS; j++) { builder.addValue(QuoteId.of(StandardId.of("OG", ID_VALUES[j])), RATES[j] * rateScale); } ImmutableMarketData quotes = builder.build(); IsdaCreditCurveDefinition curveDefinition = IsdaCreditCurveDefinition.of(CurveName.of("yield"), EUR, tradeDate, ACT_365F, DSC_NODES, false, false); IsdaCreditDiscountFactors yc = IsdaCompliantDiscountCurveCalibrator.standard().calibrate(curveDefinition, quotes, REF_DATA); return(ImmutableCreditRatesProvider.builder().valuationDate(tradeDate).discountCurves(ImmutableMap.of(EUR, yc)).recoveryRateCurves(ImmutableMap.of(LEGAL_ENTITY, ConstantRecoveryRates.of(LEGAL_ENTITY, tradeDate, recoveryRate))).creditCurves(ImmutableMap.of()).build()); }