throw new IllegalStateException("Expecting a single payment in the currency of the interest rate future");
}
final YieldCurveBundle tomorrowData = CURVE_ROLLDOWN.rollDown(data, shiftTime);
final Currency currency = paymentToday.getCurrencyAmounts()[0].getCurrency(); //TODO assuming that currencies are all the same
final PresentValueCalculator pvCalculator = PresentValueCalculator.getInstance();
final double result = instrumentTomorrow.accept(pvCalculator, tomorrowData) - instrumentToday.accept(pvCalculator, data) + paymentToday.getAmount(currency);
return MultipleCurrencyAmount.of(CurrencyAmount.of(currency, result));
}
public MultipleCurrencyAmount getTheta(final InterestRateFutureOptionMarginTransactionDefinition definition, final ZonedDateTime date, final String[] yieldCurveNames,
final YieldCurveWithBlackCubeBundle data, final Double lastMarginPrice, final int daysForward) {