@Override public Double visitMetalFutureOption( final MetalFutureOption derivative, final StaticReplicationDataBundle data) { ArgumentChecker.notNull(derivative, "derivative"); ArgumentChecker.notNull(data, "data"); return PRICER.forwardGamma(derivative, data); }
@Override public Double visitEnergyFutureOption( final EnergyFutureOption derivative, final StaticReplicationDataBundle data) { ArgumentChecker.notNull(derivative, "derivative"); ArgumentChecker.notNull(data, "data"); return PRICER.presentValue(derivative, data); }
/** Calculates the forward gamma of commodity future options using the Black method. */ public final class CommodityFutureOptionBlackForwardGammaCalculator extends InstrumentDerivativeVisitorAdapter<StaticReplicationDataBundle, Double> { /** A static instance of this calculator */ private static final CommodityFutureOptionBlackForwardGammaCalculator s_instance = new CommodityFutureOptionBlackForwardGammaCalculator(); /** The Black pricer */ private static final CommodityFutureOptionBlackMethod PRICER = CommodityFutureOptionBlackMethod.getInstance(); /** @return The static instance of this calculator */ public static CommodityFutureOptionBlackForwardGammaCalculator getInstance() { return s_instance; } private CommodityFutureOptionBlackForwardGammaCalculator() {} @Override public Double visitAgricultureFutureOption( final AgricultureFutureOption derivative, final StaticReplicationDataBundle data) { ArgumentChecker.notNull(derivative, "derivative"); ArgumentChecker.notNull(data, "data"); return PRICER.forwardGamma(derivative, data); } @Override public Double visitEnergyFutureOption( final EnergyFutureOption derivative, final StaticReplicationDataBundle data) { ArgumentChecker.notNull(derivative, "derivative"); ArgumentChecker.notNull(data, "data"); return PRICER.forwardGamma(derivative, data); } @Override public Double visitMetalFutureOption( final MetalFutureOption derivative, final StaticReplicationDataBundle data) { ArgumentChecker.notNull(derivative, "derivative"); ArgumentChecker.notNull(data, "data"); return PRICER.forwardGamma(derivative, data); } }