public double priceGamma(final BondFutureOptionPremiumSecurity security, final BlackBondFuturesSmilePriceProviderInterface blackPrice) {
ArgumentChecker.notNull(security, "security");
ArgumentChecker.notNull(blackPrice, "YieldCurveWithBlackCubeBundle was unexpectedly null");
// Forward sweep
final double strike = security.getStrike();
final EuropeanVanillaOption option = new EuropeanVanillaOption(strike, security.getExpirationTime(), security.isCall());
final double volatility = blackPrice.getBlackProvider().getVolatility(security.getExpirationTime(), security.getStrike());
final BlackFunctionData dataBlack = new BlackFunctionData(blackPrice.getFuturesPrice(), 1.0, volatility);
final double[] firstDerivs = new double[3];
final double[][] secondDerivs = new double[3][3];
BLACK_FUNCTION.getPriceAdjoint2(option, dataBlack, firstDerivs, secondDerivs);