public PresentValueSABRSensitivityDataBundle priceSABRSensitivity(final InterestRateFutureOptionMarginSecurity security, final SABRInterestRateDataBundle sabrData) {
final PresentValueSABRSensitivityDataBundle sensi = new PresentValueSABRSensitivityDataBundle();
// Forward sweep
final double priceFuture = METHOD_FUTURE.price(security.getUnderlyingFuture(), sabrData);
final double rateStrike = 1.0 - security.getStrike();
final EuropeanVanillaOption option = new EuropeanVanillaOption(rateStrike, security.getExpirationTime(), !security.isCall());
final double forward = 1 - priceFuture;
final double delay = security.getUnderlyingFuture().getLastTradingTime() - security.getExpirationTime();
final double[] volatilityAdjoint = sabrData.getSABRParameter().getVolatilityAdjoint(security.getExpirationTime(), delay, rateStrike, forward);
final BlackFunctionData dataBlack = new BlackFunctionData(forward, 1.0, volatilityAdjoint[0]);
final double[] priceAdjoint = BLACK_FUNCTION.getPriceAdjoint(option, dataBlack);