All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.finmath.singleswaprate.model.volatilities.VolatilityCube Maven / Gradle / Ivy

package net.finmath.singleswaprate.model.volatilities;

import java.time.LocalDate;
import java.util.Map;

import net.finmath.marketdata.model.volatilities.VolatilitySurface.QuotingConvention;
import net.finmath.singleswaprate.model.VolatilityCubeModel;

/**
 * Interface to be implemented by classes providing a volatility cube for a {@link VolatilityCubeModel}. The cubes provide volatilities in three dimensions,
 * being termination, maturity and strike. Maturity being the maturity of a physically settled swaption. Termination being the end date of the underlying swap of said swaption
 * and strike being its strike rate inabsolute terms (not moneyness). The dates are stored as double in correlation to the cubes reference date.
 *
 * @author Christian Fries
 * @author Roland Bachl
 *
 */
public interface VolatilityCube {

	/**
	 * Return the volatility at the specified coordinates in the desired quotation.
	 *
	 * @param model A model providing context.
	 * @param termination End date of the underlying.
	 * @param maturity Maturity date of the option.
	 * @param strike Strike rate of the option.
	 * @param quotingConvention Desired quoting convention.
	 * @return The volatility.
	 */
	double getValue(VolatilityCubeModel model, double termination, double maturity, double strike, QuotingConvention quotingConvention);

	/**
	 * Return the volatility at the specified coordinates in the desired quotation.
	 *
	 * @param termination End date of the underlying.
	 * @param maturity Maturity date of the option.
	 * @param strike Strike rate of the option.
	 * @param quotingConvention Desired quoting convention.
	 * @return The volatility.
	 */
	double getValue(double termination, double maturity, double strike, QuotingConvention quotingConvention);

	/**
	 * Returns the name of the volatility cube.
	 *
	 * @return The name of the volatility cube.
	 */
	String getName();

	/**
	 * Return the reference date of this cube, i.e. the date
	 * associated with t=0.
	 *
	 * @return The date identified as t=0.
	 */
	LocalDate getReferenceDate();

	/**
	 * Return the correlation decay parameter of the cube. This is used to determine the correlation between tenors in a derived volvol cube.
	 *
	 * @return The correlation decay parameter.
	 */
	double getCorrelationDecay();

	/**
	 * Return the IBOR vs OIS decorrelation parameter. This parameter scales the convexity adjustment in a multi curve model, using different curves for forward rates and discounting.
	 *
	 * @return The IBOR vs OIS decorrelation parameter.
	 */
	double getIborOisDecorrelation();

	/**
	 * Returns a map with all implementation dependent parameters of this volatility cube.
	 *
	 * @return A map of all parameters.
	 */
	Map getParameters();

	/**
	 * Returns the lowest possible value of strike that can be evaluated by this cube. This is relevant for instance when an implementation uses a SABR model with displacement.
	 *
	 * @param model A model for context.
	 * @return Lowest possible strike this volatility cube supports.
	 */
	double getLowestStrike(VolatilityCubeModel model);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy