Module net.finmath.lib
Class SABRShiftedSmileCalibration
java.lang.Object
net.finmath.singleswaprate.calibration.SABRShiftedSmileCalibration
Calibration of a
SABRVolatilityCube
by shifting increments in the market data of cash settled swaptions onto physically settled swaptions and calibrating a SABR model
on the resulting smiles. The calibration happens per node and is thus much faster than a calibration of the whole cube at once.- Author:
- Christian Fries, Roland Bachl
-
Constructor Summary
ConstructorsConstructorDescriptionSABRShiftedSmileCalibration(LocalDate referenceDate, SwaptionDataLattice cashPayerPremiums, SwaptionDataLattice cashReceiverPremiums, SwaptionDataLattice physicalPremiumsATM, AnalyticModel model, double sabrDisplacement, double sabrBeta, double correlationDecay, double iborOisDecorrelation)
Create the calibrator to be able to modify calibration parameters before building the cube. -
Method Summary
Modifier and TypeMethodDescriptionPerform the calibrations and build the cube.static SABRVolatilityCube
createSABRVolatilityCube(String name, LocalDate referenceDate, SwaptionDataLattice cashPayerPremiums, SwaptionDataLattice cashReceiverPremiums, SwaptionDataLattice physicalPremiumsATM, AnalyticModel model, double sabrDisplacement, double sabrBeta, double correlationDecay, double iborOisDecorrelation)
Calibrate a cube via shifting cash settled swaption smiles onto physically settled swaption atm volatility.createVolatilityCubeLattice(String name, LocalDate referenceDate, SwaptionDataLattice cashPayerPremiums, SwaptionDataLattice cashReceiverPremiums, SwaptionDataLattice physicalPremiumsATM, AnalyticModel model)
Return all data points as volatilities that serve as calibration targets.int
int
boolean
void
setCalibrationParameters(int maxIterations, int numberOfThreads)
Set the parameters for calibration.void
setUseLinearInterpolation(boolean useLinearInterpolation)
-
Constructor Details
-
SABRShiftedSmileCalibration
public SABRShiftedSmileCalibration(LocalDate referenceDate, SwaptionDataLattice cashPayerPremiums, SwaptionDataLattice cashReceiverPremiums, SwaptionDataLattice physicalPremiumsATM, AnalyticModel model, double sabrDisplacement, double sabrBeta, double correlationDecay, double iborOisDecorrelation)Create the calibrator to be able to modify calibration parameters before building the cube.- Parameters:
referenceDate
- The reference date of the calibrated cube.cashPayerPremiums
- Lattice containing cash settled payer swaption premiums.cashReceiverPremiums
- Lattice containing cash settled receiver swaption premiums.physicalPremiumsATM
- Table containing physical settled swaption atm premiums.model
- The model providing context.sabrDisplacement
- The displacement parameter the SABR smiles of the cube is supposed to have.sabrBeta
- The beta parameter the SABR smiles of the cubes are supposed to have.correlationDecay
- The correlation decay parameter the cube is supposed to have.iborOisDecorrelation
- The ibor ois decorrelation parameter the calibrated cube is supposed to have.
-
-
Method Details
-
createSABRVolatilityCube
public static SABRVolatilityCube createSABRVolatilityCube(String name, LocalDate referenceDate, SwaptionDataLattice cashPayerPremiums, SwaptionDataLattice cashReceiverPremiums, SwaptionDataLattice physicalPremiumsATM, AnalyticModel model, double sabrDisplacement, double sabrBeta, double correlationDecay, double iborOisDecorrelation) throws SolverExceptionCalibrate a cube via shifting cash settled swaption smiles onto physically settled swaption atm volatility. Using the default calibration parameters.- Parameters:
name
- The name of the calibrated cube.referenceDate
- The reference date of the tables.cashPayerPremiums
- Lattice containing cash settled payer swaption premiums.cashReceiverPremiums
- Lattice containing cash settled receiver swaption premiums.physicalPremiumsATM
- Table containing physical settled swaption atm premiums.model
- The model for context.sabrDisplacement
- The displacement parameter the SABR smiles of the cube is supposed to have.sabrBeta
- The beta parameter the SABR smiles of the cubes are supposed to have.correlationDecay
- The correlation decay parameter the cube is supposed to have.iborOisDecorrelation
- The ibor ois decorrelation parameter the calibrated cube is sipposed to have.- Returns:
- The calibrated cube.
- Throws:
SolverException
- Thrown when solvers fail to find suitable parameters.
-
createVolatilityCubeLattice
public static Map<Integer,DataTable> createVolatilityCubeLattice(String name, LocalDate referenceDate, SwaptionDataLattice cashPayerPremiums, SwaptionDataLattice cashReceiverPremiums, SwaptionDataLattice physicalPremiumsATM, AnalyticModel model)Return all data points as volatilities that serve as calibration targets. Points are sorted into maps according to their strike in moneyness.- Parameters:
name
- The name of the tables. Will be amended by their strike in moneyness.referenceDate
- The reference date of the tables.cashPayerPremiums
- Lattice containing cash settled payer swaption premiums.cashReceiverPremiums
- Lattice containing cash settled receiver swaption premiums.physicalPremiumsATM
- Table containing physical settled swaption atm premiums.model
- The model for context.- Returns:
- The set of maps containing market data volatility points.
-
build
Perform the calibrations and build the cube.- Parameters:
name
- The name of the cube.- Returns:
- The calibrated cube.
- Throws:
SolverException
- Thrown when solvers fail to find suitable parameters.
-
setCalibrationParameters
public void setCalibrationParameters(int maxIterations, int numberOfThreads)Set the parameters for calibration.- Parameters:
maxIterations
- The maximum number of iterations done during calibration.numberOfThreads
- The number of processor threads to be used.
-
getMaxIterations
public int getMaxIterations()- Returns:
- The maximum number of iterations of the optimizer.
-
getNumberOfThreads
public int getNumberOfThreads()- Returns:
- The number of threads the optimizer is allowed to use.
-
isUseLinearInterpolation
public boolean isUseLinearInterpolation()- Returns:
- True if tables holding SABR parameters use linear interpolation, false if piecewise cubic spline.
-
setUseLinearInterpolation
public void setUseLinearInterpolation(boolean useLinearInterpolation)- Parameters:
useLinearInterpolation
- Set whether the interpolation of SABR parameters should be linear as opposed to piecewise cubic spline.
-