/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.equity.variance; import com.opengamma.analytics.financial.equity.StaticReplicationDataBundle; import com.opengamma.analytics.financial.equity.variance.pricing.VarianceSwapStaticReplication; import com.opengamma.analytics.financial.interestrate.InstrumentDerivativeVisitorAdapter; import com.opengamma.analytics.financial.varianceswap.VarianceSwap; import com.opengamma.util.ArgumentChecker; /** * */ public class VarianceSwapPresentValueCalculator extends InstrumentDerivativeVisitorAdapter<StaticReplicationDataBundle, Double> { private static final VarianceSwapPresentValueCalculator s_instance = new VarianceSwapPresentValueCalculator(); private static final VarianceSwapStaticReplication PRICER = new VarianceSwapStaticReplication(); public static VarianceSwapPresentValueCalculator getInstance() { return s_instance; } public VarianceSwapPresentValueCalculator() { } @Override public Double visitVarianceSwap(final VarianceSwap derivative, final StaticReplicationDataBundle market) { ArgumentChecker.notNull(market, "market"); ArgumentChecker.notNull(derivative, "derivative"); return PRICER.presentValue(derivative, market); } @Override public Double visitEquityVarianceSwap(final EquityVarianceSwap derivative, final StaticReplicationDataBundle market) { ArgumentChecker.notNull(market, "market"); ArgumentChecker.notNull(derivative, "derivative"); return PRICER.presentValue(derivative, market); } }