public class SwaptionAnalyticApproximationRebonato extends AbstractLIBORMonteCarloProduct implements Swaption
SwaptionSingleCurveAnalyticApproximation).
The approximation assumes that the forward rates (LIBOR) follow a
log normal model and that the model provides the integrated
instantaneous covariance of the log-forward rates.
The getValue method calculates the approximated integrated instantaneous variance of the swap rate,
using the approximation of
\[
\frac{d log(S(t))}{d log(L(t))}
\]
according to Rebonato (1999).
Since \( L \) is a vector, \( w \) is a gradient (vector). The class then approximates
the Black volatility of a swaption via
\[
\sigma_S^{2} T := \sum_{i,j} w_{i} \gamma_{i,j} w_{j}
\]
where \( (\gamma_{i,j})_{i,j = 1,...,m} \) is the covariance matrix of the forward rates.
The valuation can be performed in terms of value or implied Black volatility.
In this implementation we use the weights as specified by Rebonato (1998) and
not the one derived by Hull and White (1999/2000).Swaption.ValueUnit| Constructor and Description |
|---|
SwaptionAnalyticApproximationRebonato(double swaprate,
double[] swapTenor,
Swaption.ValueUnit valueUnit)
Create an analytic swaption approximation product for
log normal forward rate model.
|
SwaptionAnalyticApproximationRebonato(double swaprate,
TimeDiscretization swapTenor)
Create an analytic swaption approximation product for
log normal forward rate model.
|
| Modifier and Type | Method and Description |
|---|---|
static double[][][] |
getIntegratedLIBORCovariance(LIBORMarketModelFromCovarianceModel model) |
static Map<String,double[]> |
getLogSwaprateDerivative(TimeDiscretization liborPeriodDiscretization,
DiscountCurve discountCurve,
ForwardCurve forwardCurve,
double[] swapTenor)
This function calculate the partial derivative d log(S) / d log(Lk) for
a given swap rate with respect to a vector of forward rates (on a given forward rate tenor).
|
RandomVariable |
getValue(double evaluationTime,
LIBORModelMonteCarloSimulationModel model)
This method returns the value random variable of the product within the specified model, evaluated at a given evalutationTime.
|
RandomVariable |
getValues(double evaluationTime,
LIBORMarketModel model)
Calculates the approximated integrated instantaneous variance of the swap rate,
using the approximation d log(S(t))/d log(L(t)) = d log(S(0))/d log(L(0)).
|
getFactorDrift, getValue, getValueForModifiedData, getValuesgetCurrency, getValue, getValue, getValues, getValues, getValues, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetCurrency, getValue, getValue, getValues, getValues, getValues, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedDatapublic SwaptionAnalyticApproximationRebonato(double swaprate,
TimeDiscretization swapTenor)
swaprate - The strike swap rate of the swaption.swapTenor - The swap tenor in doubles.public SwaptionAnalyticApproximationRebonato(double swaprate,
double[] swapTenor,
Swaption.ValueUnit valueUnit)
swaprate - The strike swap rate of the swaption.swapTenor - The swap tenor in doubles.valueUnit - The unit of the quantity returned by the getValues method.public RandomVariable getValue(double evaluationTime, LIBORModelMonteCarloSimulationModel model)
TermStructureMonteCarloProductgetValue in interface TermStructureMonteCarloProductgetValue in class AbstractLIBORMonteCarloProductevaluationTime - The time on which this products value should be observed.model - The model used to price the product.public RandomVariable getValues(double evaluationTime, LIBORMarketModel model)
evaluationTime - Time at which the product is evaluated.model - A model implementing the LIBORModelMonteCarloSimulationModelpublic static Map<String,double[]> getLogSwaprateDerivative(TimeDiscretization liborPeriodDiscretization, DiscountCurve discountCurve, ForwardCurve forwardCurve, double[] swapTenor)
liborPeriodDiscretization - The libor period discretization.discountCurve - The discount curve. If this parameter is null, the discount curve will be calculated from the forward curve.forwardCurve - The forward curve.swapTenor - The swap tenor.public static double[][][] getIntegratedLIBORCovariance(LIBORMarketModelFromCovarianceModel model)
Copyright © 2019. All rights reserved.