Double atm = fxVolatilitySurface.getVolatility(tenor, ObjectsPair.of(deltaValues[0], FXVolQuoteType.ATM));
if (atm != null) {
if (shiftMultiplier != 1) {
atm = atm * shiftMultiplier;
}
final DoubleArrayList deltas = new DoubleArrayList();
final DoubleArrayList riskReversals = new DoubleArrayList();
final DoubleArrayList butterflies = new DoubleArrayList();
for (int j = 0; j < nSmileValues; j++) {
final Number delta = deltaValues[j + 1];
if (delta != null) {
Double rr = fxVolatilitySurface.getVolatility(tenor, ObjectsPair.of(delta, FXVolQuoteType.RISK_REVERSAL));
Double butterfly = fxVolatilitySurface.getVolatility(tenor, ObjectsPair.of(delta, FXVolQuoteType.BUTTERFLY));
if (rr != null && butterfly != null) {
rr = rr * shiftMultiplier;
butterfly = butterfly * shiftMultiplier;
deltas.add(delta.doubleValue() / 100.);
riskReversals.add(rr);
butterflies.add(butterfly);
}
} else {
s_logger.info("Had a null delta value for tenor {}", j);
}
}
smile.add(new SmileDeltaParameters(t, atm, deltas.toDoubleArray(), riskReversals.toDoubleArray(), butterflies.toDoubleArray()));
} else {
s_logger.info("Could not get atm data for tenor {}", tenor);
}
}
if (smile.size() == 0) {