/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.provider.description.interestrate;
import com.opengamma.analytics.financial.instrument.index.IborIndex;
import com.opengamma.analytics.math.surface.Surface;
import com.opengamma.util.ArgumentChecker;
/**
* Implementation of a provider of normal volatility (Bachelier model) smile for options on STIR futures. The volatility is time to expiration/strike dependent.
*/
public class NormalSTIRFuturesExpStrikeProviderDiscount extends NormalSTIRFuturesExpStrikeProvider {
/**
* @param multicurveProvider The multi-curves provider.
* @param parameters The normal volatility parameters.
* @param index The cap/floor index.
*/
public NormalSTIRFuturesExpStrikeProviderDiscount(MulticurveProviderDiscount multicurveProvider,
Surface<Double, Double, Double> parameters, final IborIndex index) {
super(multicurveProvider, parameters, index);
}
@Override
public NormalSTIRFuturesExpStrikeProviderDiscount copy() {
MulticurveProviderDiscount multicurveProvider = getMulticurveProvider().copy();
return new NormalSTIRFuturesExpStrikeProviderDiscount(multicurveProvider, getNormalParameters(), getFuturesIndex());
}
@Override
public MulticurveProviderDiscount getMulticurveProvider() {
return (MulticurveProviderDiscount) super.getMulticurveProvider();
}
@Override
public NormalSTIRFuturesExpStrikeProviderDiscount withMulticurve(MulticurveProviderInterface multicurve) {
ArgumentChecker.isTrue(multicurve instanceof MulticurveProviderDiscount,
"multicurve should be MulticurveProviderDiscount");
MulticurveProviderDiscount casted = (MulticurveProviderDiscount) multicurve;
return new NormalSTIRFuturesExpStrikeProviderDiscount(casted, getNormalParameters(), getFuturesIndex());
}
}