/** * Computes the present value curve sensitivity of a transaction. * * @param transaction The future option transaction. * @param curves The yield curve bundle. * @return The present value curve sensitivity. */ public InterestRateCurveSensitivity presentValueCurveSensitivity( final BondFutureOptionPremiumTransaction transaction, final YieldCurveBundle curves) { ArgumentChecker.notNull(transaction, "transaction"); ArgumentChecker.notNull(curves, "curves"); final InterestRateCurveSensitivity premiumSensitivity = PVCSC.visit(transaction.getPremium(), curves); final InterestRateCurveSensitivity securitySensitivity = METHOD_SECURITY.priceCurveSensitivity(transaction.getUnderlyingOption(), curves); return premiumSensitivity.plus( securitySensitivity.multipliedBy( transaction.getQuantity() * transaction.getUnderlyingOption().getUnderlyingFuture().getNotional())); }
/** * Compute the present value of a bond future option transaction from the quoted option price. * * @param option The future option, not null * @param curves The curves, not null * @param price The quoted price * @return The present value. */ public CurrencyAmount presentValueFromPrice( final BondFutureOptionPremiumTransaction option, final YieldCurveBundle curves, final double price) { ArgumentChecker.notNull(option, "option"); ArgumentChecker.notNull(curves, "curves"); final Currency ccy = option.getUnderlyingOption().getCurrency(); final CurrencyAmount premiumPV = option.getPremium().accept(PVC, curves).getCurrencyAmount(ccy); final double optionPV = price * option.getQuantity() * option.getUnderlyingOption().getUnderlyingFuture().getNotional(); return premiumPV.plus(optionPV); }