/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.commodity.multicurvecommodity.provider; import com.opengamma.analytics.financial.commodity.multicurvecommodity.derivative.CommodityFutureTransaction; import com.opengamma.analytics.financial.provider.description.commodity.CommodityProviderInterface; import com.opengamma.analytics.financial.provider.sensitivity.commodity.MultipleCurrencyCommoditySensitivity; import com.opengamma.util.money.MultipleCurrencyAmount; /** * The unique instance of the calculator for commodity future transaction present value. */ public final class CommodityFutureTransactionForwardMethod extends CommodityFutureTransactionMethod { /** * The unique instance of the calculator. */ private static final CommodityFutureTransactionForwardMethod INSTANCE = new CommodityFutureTransactionForwardMethod(); /** * Gets the calculator instance. * @return The calculator. */ public static CommodityFutureTransactionForwardMethod getInstance() { return INSTANCE; } /** * Constructor. */ private CommodityFutureTransactionForwardMethod() { } private static final CommodityFutureSecurityForwardMethod METHOD_SECURITY = CommodityFutureSecurityForwardMethod.getInstance(); /** * Computes the present value without convexity adjustment. * @param futures The futures. * @param multicurves The multi-curve provider. * @return The present value. */ public MultipleCurrencyAmount presentValue(final CommodityFutureTransaction futures, final CommodityProviderInterface multicurves) { return presentValueFromPrice(futures, METHOD_SECURITY.price(futures.getUnderlying(), multicurves)); } /** * Computes the present value curve sensitivity by discounting without convexity adjustment. * @param futures The futures. * @param multicurves The multi-curve provider. * @return The present value curve sensitivity. */ public MultipleCurrencyCommoditySensitivity presentValueCurveSensitivity(final CommodityFutureTransaction futures, final CommodityProviderInterface multicurves) { return presentValueCurveSensitivity(futures, METHOD_SECURITY.priceCurveSensitivity(futures.getUnderlying(), multicurves)); } }