* @param multicurves The multi-curves provider.
* @return The sensitivity.
*/
public MulticurveSensitivity presentValueBasisPointSecondOrderCurveSensitivity(final SwapFixedCoupon<? extends Payment> fixedCouponSwap, final DayCount dayCount,
final Calendar calendar, final MulticurveProviderInterface multicurves) {
final AnnuityCouponFixed annuityFixed = fixedCouponSwap.getFixedLeg();
final Currency ccy = annuityFixed.getCurrency();
double time;
final List<DoublesPair> list = new ArrayList<>();
for (int loopcpn = 0; loopcpn < annuityFixed.getPayments().length; loopcpn++) {
time = annuityFixed.getNthPayment(loopcpn).getPaymentTime();
final DoublesPair s = new DoublesPair(time, time * time * multicurves.getDiscountFactor(ccy, time)
* dayCount.getDayCountFraction(annuityFixed.getNthPayment(loopcpn).getAccrualStartDate(), annuityFixed.getNthPayment(loopcpn).getAccrualEndDate(), calendar)
* Math.abs(annuityFixed.getNthPayment(loopcpn).getNotional()));
list.add(s);
}
final Map<String, List<DoublesPair>> mapDsc = new HashMap<>();
mapDsc.put(multicurves.getName(annuityFixed.getCurrency()), list);
final MulticurveSensitivity result = MulticurveSensitivity.ofYieldDiscounting(mapDsc);
return result;
}