final InstrumentDerivative derivative = defn.toDerivative(now);
final double timeToExpiry = derivative.accept(LastTimeCalculator.getInstance());
if (timeToExpiry < 0.0) {
throw new OpenGammaRuntimeException("Future option " + security + " has already settled.");
}
final StaticReplicationDataBundle market = buildMarketBundle(underlyingId, executionContext, inputs, target, desiredValues);
final ValueRequirement desiredValue = desiredValues.iterator().next();
final ValueProperties resultProperties = desiredValue.getConstraints().copy()
.with(ValuePropertyNames.FUNCTION, getUniqueId())
.get();
return computeValues(derivative, market, inputs, desiredValues, target.toSpecification(), resultProperties);