public void test_price_presentValue_afterExpiry() {
for (int i = 0; i < NB_STRIKES; ++i) {
ResolvedFxVanillaOption call = CALLS[i];
ResolvedFxVanillaOptionTrade callTrade = ResolvedFxVanillaOptionTrade.builder()
.product(call)
.premium(Payment.of(EUR, 0, VOLS_AFTER.getValuationDate()))
.build();
double computedPriceCall = PRICER.price(call, RATES_PROVIDER_AFTER, VOLS_AFTER);
CurrencyAmount computedCall = PRICER.presentValue(call, RATES_PROVIDER_AFTER, VOLS_AFTER);
assertEquals(computedPriceCall, 0d, TOL);
assertEquals(computedCall.getAmount(), 0d, TOL);
ResolvedFxVanillaOption put = PUTS[i];
ResolvedFxVanillaOptionTrade putTrade = ResolvedFxVanillaOptionTrade.builder()
.product(put)
.premium(Payment.of(EUR, 0, VOLS_AFTER.getValuationDate()))
.build();
double computedPricePut = PRICER.price(put, RATES_PROVIDER_AFTER, VOLS_AFTER);
CurrencyAmount computedPut = PRICER.presentValue(put, RATES_PROVIDER_AFTER, VOLS_AFTER);
assertEquals(computedPricePut, 0d, TOL);
assertEquals(computedPut.getAmount(), 0d, TOL);
assertEquals(computedCall, TRADE_PRICER.presentValue(callTrade, RATES_PROVIDER_AFTER, VOLS_AFTER).getAmount(USD));
assertEquals(computedPut, TRADE_PRICER.presentValue(putTrade, RATES_PROVIDER_AFTER, VOLS_AFTER).getAmount(USD));
}
}