final double strike = option.getStrike();
final double forward = forwardCurve.getForward(expiry);
final double[] moneynesses = grid.getSpaceNodes();
final double[] modifiedPrices = pdeGrid.getTerminalResults();
final int n = modifiedPrices.length;
final DoubleArrayList strikes = new DoubleArrayList();
final DoubleArrayList prices = new DoubleArrayList();
for (int i = 0; i < n; i++) {
try {
final double impliedVol = BlackFormulaRepository.impliedVolatility(modifiedPrices[i], 1, moneynesses[i], expiry, isCall);
prices.add(BlackFormulaRepository.price(forward, strike, expiry, impliedVol, isCall));
strikes.add(forward * moneynesses[i]);
} catch (final Exception e) {
}
}
return _interpolator.getDataBundleFromSortedArrays(strikes.toDoubleArray(), prices.toDoubleArray());
}