Class AbstractStateIndependentJumpComponent
- All Implemented Interfaces:
Serializable, JumpComponent
- Direct Known Subclasses:
MertonJumpComponent, VarianceGammaJumpComponent
This class provides boilerplate for jump components whose Levy density does not depend on the current PDE state variables. It is intended as a convenient base for models such as Bates and Variance Gamma, where the jump law is typically specified directly in terms of the log-jump size.
The jump contribution is understood in the compensated form
integral [ u(..., x exp(y), ...) - u(..., x, ...)
- x (exp(y) - 1) partial_x u(..., x, ...) ] nu(dy),
where y denotes the log-relative jump size and x is the
affected
state variable.
The integration bounds returned by this class are interpreted as numerical truncation bounds for the jump variable. For finite-support models they may coincide with the true support; for infinite-support models they are numerical cutoffs chosen by the implementation.
- Author:
- Alessandro Gnoatto
- See Also:
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractStateIndependentJumpComponent(double lowerIntegrationBound, double upperIntegrationBound, boolean finiteActivity, boolean finiteVariation) Creates a state-independent jump component acting on the first state variable.protectedAbstractStateIndependentJumpComponent(int stateVariableIndex, double lowerIntegrationBound, double upperIntegrationBound, boolean finiteActivity, boolean finiteVariation) Creates a state-independent jump component. -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract doublegetLevyDensity(double time, double jumpSize) Returns the Levy density at the given log-jump size.final doublegetLevyDensity(double time, double jumpSize, double... stateVariables) Returns the Levy density evaluated at the given jump size.doublegetLowerIntegrationBound(double time, double... stateVariables) Returns the lower integration bound for the jump variable.intReturns the index of the state variable affected by the jump operator.doublegetUpperIntegrationBound(double time, double... stateVariables) Returns the upper integration bound for the jump variable.booleanReturns whether the jump component has finite activity.booleanReturns whether the jump component has finite variation.booleanReturns whether the jump density depends explicitly on the current state.
-
Constructor Details
-
AbstractStateIndependentJumpComponent
protected AbstractStateIndependentJumpComponent(double lowerIntegrationBound, double upperIntegrationBound, boolean finiteActivity, boolean finiteVariation) Creates a state-independent jump component acting on the first state variable.- Parameters:
lowerIntegrationBound- Lower integration bound for the log-jump variable.upperIntegrationBound- Upper integration bound for the log-jump variable.finiteActivity-trueif the jump measure has finite activity.finiteVariation-trueif the jump part has finite variation.
-
AbstractStateIndependentJumpComponent
protected AbstractStateIndependentJumpComponent(int stateVariableIndex, double lowerIntegrationBound, double upperIntegrationBound, boolean finiteActivity, boolean finiteVariation) Creates a state-independent jump component.- Parameters:
stateVariableIndex- Index of the affected state variable.lowerIntegrationBound- Lower integration bound for the log-jump variable.upperIntegrationBound- Upper integration bound for the log-jump variable.finiteActivity-trueif the jump measure has finite activity.finiteVariation-trueif the jump part has finite variation.
-
-
Method Details
-
getStateVariableIndex
public int getStateVariableIndex()Description copied from interface:JumpComponentReturns the index of the state variable affected by the jump operator.The default is
0, corresponding to the first PDE state variable.- Specified by:
getStateVariableIndexin interfaceJumpComponent- Returns:
- The index of the affected state variable.
-
getLowerIntegrationBound
public double getLowerIntegrationBound(double time, double... stateVariables) Description copied from interface:JumpComponentReturns the lower integration bound for the jump variable.The jump variable is interpreted as a log-relative jump size
y. For infinite-support models this bound will typically be a numerical truncation chosen by the implementation.- Specified by:
getLowerIntegrationBoundin interfaceJumpComponent- Parameters:
time- The evaluation time.stateVariables- The current PDE state variables.- Returns:
- The lower integration bound.
-
getUpperIntegrationBound
public double getUpperIntegrationBound(double time, double... stateVariables) Description copied from interface:JumpComponentReturns the upper integration bound for the jump variable.The jump variable is interpreted as a log-relative jump size
y. For infinite-support models this bound will typically be a numerical truncation chosen by the implementation.- Specified by:
getUpperIntegrationBoundin interfaceJumpComponent- Parameters:
time- The evaluation time.stateVariables- The current PDE state variables.- Returns:
- The upper integration bound.
-
getLevyDensity
public final double getLevyDensity(double time, double jumpSize, double... stateVariables) Description copied from interface:JumpComponentReturns the Levy density evaluated at the given jump size.The argument
jumpSizeis interpreted as the log-relative jumpy. In the standard stock-coordinate convention, the affected state variablexjumps tox * exp(y).- Specified by:
getLevyDensityin interfaceJumpComponent- Parameters:
time- The evaluation time.jumpSize- The log-relative jump size.stateVariables- The current PDE state variables.- Returns:
- The Levy density
nu(y).
-
isStateDependent
public boolean isStateDependent()Description copied from interface:JumpComponentReturns whether the jump density depends explicitly on the current state.Bates and Variance Gamma in their standard forms are typically state- independent in the jump part, so the default is
false.- Specified by:
isStateDependentin interfaceJumpComponent- Returns:
trueif the jump density depends on the current state variables.
-
isFiniteActivity
public boolean isFiniteActivity()Description copied from interface:JumpComponentReturns whether the jump component has finite activity.This is metadata only and may be useful for later numerical choices.
- Specified by:
isFiniteActivityin interfaceJumpComponent- Returns:
trueif the jump measure has finite total mass.
-
isFiniteVariation
public boolean isFiniteVariation()Description copied from interface:JumpComponentReturns whether the jump component has finite variation.This is metadata only and may be useful for later numerical choices.
- Specified by:
isFiniteVariationin interfaceJumpComponent- Returns:
trueif the jump part has finite variation.
-
getLevyDensity
protected abstract double getLevyDensity(double time, double jumpSize) Returns the Levy density at the given log-jump size.Implementations only need to provide the state-independent density
nu(y). Dependence on the PDE state variables is intentionally excluded from this base class.- Parameters:
time- The evaluation time.jumpSize- The log-relative jump size.- Returns:
- The Levy density at the given jump size.
-