final List<Double> ptsInt = new ArrayList<>();
final List<Double> ptsDiff = new ArrayList<>();
final List<Double> payTime = new ArrayList<>();
while (!loopdate.isAfter(endDate)) {
final ForexDefinition fxSwapDefinition = new ForexDefinition(EUR, USD, loopdate, notionalEUR, fxEURUSDFwdInit);
final Forex fxSwap = fxSwapDefinition.toDerivative(NOW);
final MultipleCurrencyAmount pvFxSwap = fxSwap.accept(PVDC, multicurves);
final double pvUSDCurved = FX_MATRIX.convert(pvFxSwap, USD).getAmount();
pvUSDCurve.add(pvUSDCurved);
final double pvUSDPtsd = -(fxEURUSDFwdInit - FX_EURUSD - pointsCurve.getYValue(fxSwap.getPaymentTime()))
* multicurves.getDiscountFactor(USD, fxSwap.getPaymentTime()) * notionalEUR;
pvUSDPts.add(pvUSDPtsd);
pvUSDDiff.add(pvUSDCurved - pvUSDPtsd);
// double testUSDI = (fxEURUSDFwdInit)
// * multicurves.getDiscountFactor(USD, fxSwap.getPaymentTime()) * notionalEUR;
// double testUSDC = (FX_EURUSD + pointsCurve.getYValue(fxSwap.getPaymentTime()))
// * multicurves.getDiscountFactor(USD, fxSwap.getPaymentTime()) * notionalEUR;
// double testEURUSD = pvFxSwap.getAmount(EUR) * FX_EURUSD;
final double ptC = (multicurves.getDiscountFactor(EUR, fxSwap.getPaymentTime()) / multicurves.getDiscountFactor(USD, fxSwap.getPaymentTime()) - 1) * FX_EURUSD;
ptsCurve.add(ptC);
ptsInt.add(pointsCurve.getYValue(fxSwap.getPaymentTime()));
ptsDiff.add((ptC - pointsCurve.getYValue(fxSwap.getPaymentTime())) * 10000);
payTime.add(fxSwap.getPaymentTime());
loopdate = ScheduleCalculator.getAdjustedDate(loopdate, 1, TARGET);
}
}