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);
// Backward sweep
final double priceBar = 1.0;
final double volatilityBar = priceAdjoint[2] * priceBar;
final DoublesPair expiryDelay = new DoublesPair(security.getExpirationTime(), delay);