@Override
protected Set<ComputedValue> getValues(final FunctionExecutionContext executionContext, final FunctionInputs inputs,
final ComputationTarget target, final Set<ValueRequirement> desiredValues, final InstrumentDerivative derivative,
final FXMatrix fxMatrix) {
final BlackSmileShiftCapProviderInterface blackData = getBlackSurface(executionContext, inputs, target, fxMatrix);
final MultipleCurrencyAmount mca = derivative.accept(CALCULATOR, blackData);
final ValueRequirement desiredValue = Iterables.getOnlyElement(desiredValues);
final ValueProperties properties = desiredValue.getConstraints().copy().get();
final Currency currency = FinancialSecurityUtils.getCurrency(target.getTrade().getSecurity());
final ValueSpecification spec = new ValueSpecification(PRESENT_VALUE, target.toSpecification(), properties);