public void setSpotRateIdentifier(final Function2<Currency, Currency, ExternalId> spotRateIdentifier) {
_spotRateIdentifier = spotRateIdentifier;
}
private FunctionExecutionContext createFunctionExecutionContext(final LocalDate valuationTime) {
final FunctionExecutionContext context = new FunctionExecutionContext();
context.setValuationTime(valuationTime.atTime(LocalTime.NOON).toInstant(ZoneOffset.UTC));
context.setValuationClock(DateUtils.fixedClockUTC(context.getValuationTime()));
context.setComputationTargetResolver(
new DefaultComputationTargetResolver(context.getSecuritySource()).atVersionCorrection(VersionCorrection.LATEST));
OpenGammaExecutionContext.setHolidaySource(context, getHolidaySource());
OpenGammaExecutionContext.setRegionSource(context, getRegionSource());
OpenGammaExecutionContext.setConventionBundleSource(context, getConventionBundleSource());
OpenGammaExecutionContext.setConventionSource(context, getConventionSource());
OpenGammaExecutionContext.setSecuritySource(context, new MasterSecuritySource(getSecurityMaster()));