Class FDMBlackScholesModel
- All Implemented Interfaces:
FiniteDifferenceBoundary, FiniteDifferenceEquityModel, FiniteDifferenceModel, Model
The model supports both the classical constant-volatility Black-Scholes case
and the local-volatility case. Constant volatility is represented internally
as a ConstantLocalVolatility.
- Author:
- Alessandro Gnoatto (this version), Christian Fries, Ralph Rudd, Jorg Kienitz (original version)
-
Constructor Summary
ConstructorsConstructorDescriptionFDMBlackScholesModel(double initialValue, double riskFreeRate, double dividendYieldRate, double volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a Black-Scholes finite difference model for option pricing.FDMBlackScholesModel(double initialValue, double riskFreeRate, double volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a Black-Scholes finite difference model for option pricing without dividend yield.FDMBlackScholesModel(double initialValue, double riskFreeRate, double dividendYieldRate, LocalVolatility volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a local-volatility finite difference model for option pricing.FDMBlackScholesModel(double initialValue, double riskFreeRate, LocalVolatility volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a local-volatility finite difference model for option pricing without dividend yield.FDMBlackScholesModel(double initialValue, DiscountCurve riskFreeCurve, double volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a Black-Scholes finite difference model for option pricing without dividend yield.FDMBlackScholesModel(double initialValue, DiscountCurve riskFreeCurve, DiscountCurve dividendYieldCurve, double volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a Black-Scholes finite difference model for option pricing.FDMBlackScholesModel(double initialValue, DiscountCurve riskFreeCurve, DiscountCurve dividendYieldCurve, LocalVolatility volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a local-volatility finite difference model for option pricing.FDMBlackScholesModel(double initialValue, DiscountCurve riskFreeCurve, LocalVolatility volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a local-volatility finite difference model for option pricing without dividend yield. -
Method Summary
Modifier and TypeMethodDescriptiongetBoundaryConditionsAtLowerBoundary(FiniteDifferenceEquityProduct product, double time, double... riskFactors) Returns the boundary conditions at the lower boundary.getBoundaryConditionsAtUpperBoundary(FiniteDifferenceEquityProduct product, double time, double... riskFactors) Returns the boundary conditions at the upper boundary.getCloneWithModifiedSpaceTimeDiscretization(SpaceTimeDiscretization newSpaceTimeDiscretization) Returns a clone of this model with a modified space-time discretization.doubleReturns the constant volatility if the model has been constructed with a constant volatility.Returns the dividend-yield discount curve.double[]getDrift(double time, double... stateVariables) Returns the drift vector of the model state variables.double[][]getFactorLoading(double time, double... stateVariables) Returns the factor-loading matrix of the model state variables.double[]Returns the initial value, i.e. the spot value, of the underlying.Returns the risk-free discount curve used for pricing.Returns the space-time discretization used by this finite difference model.Returns the volatility function.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface FiniteDifferenceEquityModel
getDividendYieldCurves, getJumpComponent
-
Constructor Details
-
FDMBlackScholesModel
public FDMBlackScholesModel(double initialValue, DiscountCurve riskFreeCurve, DiscountCurve dividendYieldCurve, double volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a Black-Scholes finite difference model for option pricing.- Parameters:
initialValue- Initial spot price.riskFreeCurve- Risk-free discount curve.dividendYieldCurve- Dividend yield discount curve.volatility- Constant volatility of the underlying asset.spaceTimeDiscretization- Grid object defining the spatial discretization.
-
FDMBlackScholesModel
public FDMBlackScholesModel(double initialValue, DiscountCurve riskFreeCurve, DiscountCurve dividendYieldCurve, LocalVolatility volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a local-volatility finite difference model for option pricing.- Parameters:
initialValue- Initial spot price.riskFreeCurve- Risk-free discount curve.dividendYieldCurve- Dividend yield discount curve.volatility- Local volatility function.spaceTimeDiscretization- Grid object defining the spatial discretization.
-
FDMBlackScholesModel
public FDMBlackScholesModel(double initialValue, DiscountCurve riskFreeCurve, double volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a Black-Scholes finite difference model for option pricing without dividend yield.- Parameters:
initialValue- Initial spot price.riskFreeCurve- Risk-free discount curve.volatility- Constant volatility of the underlying asset.spaceTimeDiscretization- Grid object defining the spatial discretization.
-
FDMBlackScholesModel
public FDMBlackScholesModel(double initialValue, DiscountCurve riskFreeCurve, LocalVolatility volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a local-volatility finite difference model for option pricing without dividend yield.- Parameters:
initialValue- Initial spot price.riskFreeCurve- Risk-free discount curve.volatility- Local volatility function.spaceTimeDiscretization- Grid object defining the spatial discretization.
-
FDMBlackScholesModel
public FDMBlackScholesModel(double initialValue, double riskFreeRate, double dividendYieldRate, double volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a Black-Scholes finite difference model for option pricing.- Parameters:
initialValue- Initial spot price.riskFreeRate- Constant risk-free rate.dividendYieldRate- Constant dividend yield rate.volatility- Constant volatility of the underlying asset.spaceTimeDiscretization- Grid object defining the spatial discretization.
-
FDMBlackScholesModel
public FDMBlackScholesModel(double initialValue, double riskFreeRate, double dividendYieldRate, LocalVolatility volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a local-volatility finite difference model for option pricing.- Parameters:
initialValue- Initial spot price.riskFreeRate- Constant risk-free rate.dividendYieldRate- Constant dividend yield rate.volatility- Local volatility function.spaceTimeDiscretization- Grid object defining the spatial discretization.
-
FDMBlackScholesModel
public FDMBlackScholesModel(double initialValue, double riskFreeRate, double volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a Black-Scholes finite difference model for option pricing without dividend yield.- Parameters:
initialValue- Initial spot price.riskFreeRate- Constant risk-free rate.volatility- Constant volatility of the underlying asset.spaceTimeDiscretization- Grid object defining the spatial discretization.
-
FDMBlackScholesModel
public FDMBlackScholesModel(double initialValue, double riskFreeRate, LocalVolatility volatility, SpaceTimeDiscretization spaceTimeDiscretization) Constructs a local-volatility finite difference model for option pricing without dividend yield.- Parameters:
initialValue- Initial spot price.riskFreeRate- Constant risk-free rate.volatility- Local volatility function.spaceTimeDiscretization- Grid object defining the spatial discretization.
-
-
Method Details
-
getRiskFreeCurve
Description copied from interface:FiniteDifferenceEquityModelReturns the risk-free discount curve used for pricing.- Specified by:
getRiskFreeCurvein interfaceFiniteDifferenceEquityModel- Returns:
- The risk-free discount curve.
-
getInitialValue
public double[] getInitialValue()Returns the initial value, i.e. the spot value, of the underlying.- Specified by:
getInitialValuein interfaceFiniteDifferenceEquityModel- Returns:
- The initial value.
-
getDrift
public double[] getDrift(double time, double... stateVariables) Description copied from interface:FiniteDifferenceEquityModelReturns the drift vector of the model state variables.The returned coefficients must be expressed in the same coordinates as the PDE state variables used by the finite-difference solver.
If the state vector is
X = (X1, ..., Xn), then this method returns the vectormu(t, X)indX_i(t) = mu_i(t, X_t) dt + ....- Specified by:
getDriftin interfaceFiniteDifferenceEquityModel- Parameters:
time- The evaluation time.stateVariables- The current values of the model state variables.- Returns:
- The drift vector.
-
getFactorLoading
public double[][] getFactorLoading(double time, double... stateVariables) Description copied from interface:FiniteDifferenceEquityModelReturns the factor-loading matrix of the model state variables.The returned coefficients must be expressed in the same coordinates as the PDE state variables used by the finite-difference solver.
If the state vector is
X = (X1, ..., Xn), then this method returns the matrixb(t, X)indX_i(t) = mu_i(t, X_t) dt + sum_j b_{i,j}(t, X_t) dW_j(t).- Specified by:
getFactorLoadingin interfaceFiniteDifferenceEquityModel- Parameters:
time- The evaluation time.stateVariables- The current values of the model state variables.- Returns:
- The factor-loading matrix.
-
getVolatility
Returns the volatility function.- Returns:
- The local volatility function.
-
getConstantVolatility
public double getConstantVolatility()Returns the constant volatility if the model has been constructed with a constant volatility.- Returns:
- The constant volatility.
-
getDividendYieldCurve
Description copied from interface:FiniteDifferenceEquityModelReturns the dividend-yield discount curve.This is the legacy single-asset accessor and remains part of the interface to preserve backward compatibility with the current code base.
For true multi-asset models with one dividend curve per underlying, prefer
FiniteDifferenceEquityModel.getDividendYieldCurves(). Such models may override this method with a convention suitable for backward compatibility.- Specified by:
getDividendYieldCurvein interfaceFiniteDifferenceEquityModel- Returns:
- The dividend-yield discount curve.
-
getSpaceTimeDiscretization
Description copied from interface:FiniteDifferenceModelReturns the space-time discretization used by this finite difference model.The discretization defines the grid in both time and space on which the PDE approximation is constructed.
- Specified by:
getSpaceTimeDiscretizationin interfaceFiniteDifferenceModel- Returns:
- The
SpaceTimeDiscretizationused by this model.
-
getBoundaryConditionsAtLowerBoundary
public BoundaryCondition[] getBoundaryConditionsAtLowerBoundary(FiniteDifferenceEquityProduct product, double time, double... riskFactors) Description copied from interface:FiniteDifferenceBoundaryReturns the boundary conditions at the lower boundary.The returned array is indexed by state-variable dimension.
- Specified by:
getBoundaryConditionsAtLowerBoundaryin interfaceFiniteDifferenceBoundary- Parameters:
product- The product being valued.time- The running time.riskFactors- The state variables specifying the boundary location.- Returns:
- The lower-boundary conditions by dimension.
-
getBoundaryConditionsAtUpperBoundary
public BoundaryCondition[] getBoundaryConditionsAtUpperBoundary(FiniteDifferenceEquityProduct product, double time, double... riskFactors) Description copied from interface:FiniteDifferenceBoundaryReturns the boundary conditions at the upper boundary.The returned array is indexed by state-variable dimension.
- Specified by:
getBoundaryConditionsAtUpperBoundaryin interfaceFiniteDifferenceBoundary- Parameters:
product- The product being valued.time- The running time.riskFactors- The state variables specifying the boundary location.- Returns:
- The upper-boundary conditions by dimension.
-
getCloneWithModifiedSpaceTimeDiscretization
public FiniteDifferenceEquityModel getCloneWithModifiedSpaceTimeDiscretization(SpaceTimeDiscretization newSpaceTimeDiscretization) Description copied from interface:FiniteDifferenceEquityModelReturns a clone of this model with a modified space-time discretization.The returned model should represent the same stochastic dynamics and market data as the original one, but on the provided discretization.
- Specified by:
getCloneWithModifiedSpaceTimeDiscretizationin interfaceFiniteDifferenceEquityModel- Parameters:
newSpaceTimeDiscretization- The new space-time discretization.- Returns:
- A clone of this model with the modified discretization.
-