Class BasketOptionMultiAssetBlackScholesModelBoundary
- All Implemented Interfaces:
FiniteDifferenceBoundary
BasketOption under
FDMMultiAssetBlackScholesModel.
The product payoff is
\left( \omega \left( q_1 S_1(T) + q_2 S_2(T) - K \right) \right)^{+},
where q1 and q2 are signed asset quantities and
\omega \in \{+1,-1\} is the call/put sign.
The multidimensional boundary convention of the framework is used:
- index
0of the returned array corresponds to the first state variable, - index
1corresponds to the second state variable.
On the lower faces S1 = 0 and S2 = 0, the option reduces to
a one-dimensional signed-quantity option on the remaining asset. Accordingly,
this boundary class requires both asset grids to start at zero. On upper
faces, the boundary value is chosen according to the sign of the quantity
multiplying the boundary asset:
- if
callOrPut.toInteger() * quantityBoundaryAsset > 0, the option is asymptotically linear in the boundary asset and the discounted linear intrinsic approximation is used, - if
callOrPut.toInteger() * quantityBoundaryAsset < 0, the option tends to zero as the boundary asset grows and a zero Dirichlet value is used, - if the boundary-asset quantity is zero, the boundary reduces exactly to a one-dimensional option on the remaining asset.
This single boundary class therefore covers ordinary basket options, spread options, and exchange options as special cases.
- Author:
- Alessandro Gnoatto
-
Constructor Summary
ConstructorsConstructorDescriptionPerforms the operation. -
Method Summary
Modifier and TypeMethodDescriptiongetBoundaryConditionsAtLowerBoundary(FiniteDifferenceEquityProduct product, double time, double... stateVariables) Returns the boundary conditions at the lower boundary.getBoundaryConditionsAtUpperBoundary(FiniteDifferenceEquityProduct product, double time, double... stateVariables) Returns the boundary conditions at the upper boundary.
-
Constructor Details
-
BasketOptionMultiAssetBlackScholesModelBoundary
Performs the operation.- Parameters:
model- The value.
-
-
Method Details
-
getBoundaryConditionsAtLowerBoundary
public BoundaryCondition[] getBoundaryConditionsAtLowerBoundary(FiniteDifferenceEquityProduct product, double time, double... stateVariables) 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.stateVariables- The state variables specifying the boundary location.- Returns:
- The lower-boundary conditions by dimension.
-
getBoundaryConditionsAtUpperBoundary
public BoundaryCondition[] getBoundaryConditionsAtUpperBoundary(FiniteDifferenceEquityProduct product, double time, double... stateVariables) 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.stateVariables- The state variables specifying the boundary location.- Returns:
- The upper-boundary conditions by dimension.
-