/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.commodity.calculator;
import com.opengamma.analytics.financial.commodity.derivative.AgricultureFutureOption;
import com.opengamma.analytics.financial.commodity.derivative.EnergyFutureOption;
import com.opengamma.analytics.financial.commodity.derivative.MetalFutureOption;
import com.opengamma.analytics.financial.equity.StaticReplicationDataBundle;
import com.opengamma.analytics.financial.interestrate.InstrumentDerivativeVisitorAdapter;
import com.opengamma.util.ArgumentChecker;
/**
* Calculates the delta of commodity future options using the Black formula.
*/
public final class CommodityFutureOptionBlackDeltaCalculator extends InstrumentDerivativeVisitorAdapter<StaticReplicationDataBundle, Double> {
/** Static instance of this calculator */
private static final CommodityFutureOptionBlackDeltaCalculator s_instance = new CommodityFutureOptionBlackDeltaCalculator();
/** The Black pricer */
private static final CommodityFutureOptionBlackMethod PRICER = CommodityFutureOptionBlackMethod.getInstance();
/**
* @return The static instance of this class
*/
public static CommodityFutureOptionBlackDeltaCalculator getInstance() {
return s_instance;
}
/**
* Private constructor.
*/
private CommodityFutureOptionBlackDeltaCalculator() {
}
@Override
public Double visitAgricultureFutureOption(final AgricultureFutureOption derivative, final StaticReplicationDataBundle data) {
ArgumentChecker.notNull(derivative, "derivative");
ArgumentChecker.notNull(data, "data");
return PRICER.delta(derivative, data);
}
@Override
public Double visitEnergyFutureOption(final EnergyFutureOption derivative, final StaticReplicationDataBundle data) {
ArgumentChecker.notNull(derivative, "derivative");
ArgumentChecker.notNull(data, "data");
return PRICER.delta(derivative, data);
}
@Override
public Double visitMetalFutureOption(final MetalFutureOption derivative, final StaticReplicationDataBundle data) {
ArgumentChecker.notNull(derivative, "derivative");
ArgumentChecker.notNull(data, "data");
return PRICER.delta(derivative, data);
}
}