/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.model.pnl; import com.opengamma.engine.ComputationTarget; import com.opengamma.engine.function.FunctionCompilationContext; import com.opengamma.engine.target.ComputationTargetType; import com.opengamma.engine.value.ValueProperties; import com.opengamma.engine.value.ValuePropertyNames; import com.opengamma.engine.value.ValueRequirement; import com.opengamma.engine.value.ValueRequirementNames; import com.opengamma.financial.security.future.InterestRateFutureSecurity; import com.opengamma.id.UniqueId; /** * */ public class InterestRateFutureYieldCurveNodePnLFunction extends YieldCurveNodePnLFunction { @Override public boolean canApplyTo(final FunctionCompilationContext context, final ComputationTarget target) { return target.getPosition().getSecurity() instanceof InterestRateFutureSecurity; } @Override protected ValueRequirement getYCNSRequirement(final String currencyString, final String curveCalculationConfigName, final String yieldCurveName, final ComputationTarget target, final ValueProperties desiredValueProperties) { final UniqueId uniqueId = target.getPosition().getTrades().iterator().next().getUniqueId(); final ValueProperties properties = ValueProperties.builder() .with(ValuePropertyNames.CURRENCY, currencyString) .with(ValuePropertyNames.CURVE_CURRENCY, currencyString) .with(ValuePropertyNames.CURVE, yieldCurveName) .with(ValuePropertyNames.CURVE_CALCULATION_CONFIG, curveCalculationConfigName).get(); return new ValueRequirement(ValueRequirementNames.YIELD_CURVE_NODE_SENSITIVITIES, ComputationTargetType.TRADE, uniqueId, properties); } // protected ValueRequirement getCurrencyConversionTSRequirement(final Position position, final String currencyString, final Set<String> resultCurrencies) { // final String resultCurrency = Iterables.getOnlyElement(resultCurrencies); // if (!resultCurrency.equals(currencyString)) { // final ValueProperties.Builder properties = ValueProperties.builder(); // properties.with(ValuePropertyNames.CURRENCY, resultCurrencies); // final ComputationTargetSpecification targetSpec = ComputationTargetSpecification.of(position.getTrade().getSecurity()); // return new ValueRequirement(ValueRequirementNames.HISTORICAL_FX_TIME_SERIES, targetSpec, properties.get()); // } // return null; // } }