final RecombiningBinomialTree<BinomialTreeNode<Double>> assetPriceTree = BUILDER.buildAssetTree(T, data, 200);
RecombiningBinomialTree<BinomialTreeNode<Double>> optionPriceTree = BUILDER.buildOptionPriceTree(OPTION, data, assetPriceTree);
for (int i = 0; i < 10; i++) {
final double m = -1.5 + 3.0 * i / 10.0;
final double strike = FORWARD * Math.exp(ATM_VOL * Math.sqrt(T) * m);
final OptionDefinition option = new EuropeanVanillaOptionDefinition(strike, OPTION.getExpiry(), OPTION.isCall());
optionPriceTree = BUILDER.buildOptionPriceTree(option, data, assetPriceTree);
final EuropeanVanillaOption o = new EuropeanVanillaOption(strike, T, true);
final CEVFunctionData cfd = new CEVFunctionData(FORWARD, YIELD_CURVE.getDiscountFactor(T), SIGMA_BETA, BETA);
final double cevPrice = CEV_PRICE.getPriceFunction(o).evaluate(cfd);
final double cevVol = BLACK_IMPLIED_VOL.getImpliedVolatility(new BlackFunctionData(FORWARD, YIELD_CURVE.getDiscountFactor(T), SIGMA_BETA), o, cevPrice);