final ValueRequirement desiredValue = desiredValues.iterator().next();
final String putCurveName = desiredValue.getConstraint(PUT_CURVE);
final String callCurveName = desiredValue.getConstraint(CALL_CURVE);
final String deltaName = desiredValue.getConstraint(PROPERTY_OTM_DELTA);
final String[] allCurveNames = getCurveNames(putCurrency, putCurveName, callCurrency, callCurveName, baseQuotePairs);
final SmileDeltaTermStructureVannaVolgaDataBundle smiles = getSmiles(putCurrency, callCurrency, allCurveNames, baseQuotePairs, deltaName, inputs);
final ForexOptionVanilla fxOption = (ForexOptionVanilla) getDerivative(security, allCurveNames, baseQuotePairs, now);
final MultipleCurrencyAmount pv = CALCULATOR.presentValue(fxOption, smiles);
ArgumentChecker.isTrue(pv.size() == 1, "result size must be one; have {}", pv.size());
final CurrencyAmount ca = pv.getCurrencyAmounts()[0];
final double amount = ca.getAmount();