finMath lib documentation
net.finmath.montecarlo.interestrate.products.components

## Class Option

• All Implemented Interfaces:
Serializable, ProductInterface

public class Option
extends AbstractProductComponent
An option. Implements the function max(underlying(t)-strike,0) for any underlying object implementing an AbstractLIBORMonteCarloProduct. The strike may be a fixed constant value or an object implementing AbstractLIBORMonteCarloProduct (resulting in a stochastic strike or exchange option). More precise, the getVaue method returns the value $\left\{ \begin{array}{ll} U(t)-S(t) & \text{if E(t) > 0} \\ U(t)-S(t) & \text{else.} \end{array} \right.$ where $$E$$ is an estimator for the expectation of $$U(t)-S(t)$$ and $$U$$ is the value returned by the call to getValue of the underlying product, which may return a sum on discounted futures cash-flows / values (i.e. not yet performing the expectation) and $$S$$ is the strike (which may be a fixed value or another underlying product).
Version:
1.2
Author:
Christian Fries
AbstractLIBORMonteCarloProduct, Serialized Form
• ### Constructor Detail

• #### Option

public Option(double exerciseDate,
AbstractLIBORMonteCarloProduct underlying)
Creates the function underlying(exerciseDate) ≥ 0 ? underlying : 0
Parameters:
exerciseDate - The exercise date of the option (given as a double).
underlying - The underlying.
• #### Option

public Option(double exerciseDate,
double strikePrice,
AbstractLIBORMonteCarloProduct underlying)
Creates the function underlying(exerciseDate) ≥ strikePrice ? underlying : strikePrice
Parameters:
exerciseDate - The exercise date of the option (given as a double).
strikePrice - The strike price.
underlying - The underlying.
• #### Option

public Option(double exerciseDate,
double strikePrice,
boolean isCall,
AbstractLIBORMonteCarloProduct underlying)
Creates the function underlying(exerciseDate) ≥ strikePrice ? underlying : strikePrice
Parameters:
exerciseDate - The exercise date of the option (given as a double).
strikePrice - The strike price.
isCall - If true, the function implements is underlying(exerciseDate) ≥ strikePrice ? underlying : strikePrice. Otherwise it is underlying(exerciseDate) < strikePrice ? underlying : strikePrice.
underlying - The underlying.
• #### Option

public Option(double exerciseDate,
boolean isCall,
AbstractLIBORMonteCarloProduct strikeProduct,
AbstractLIBORMonteCarloProduct underlying)
Creates the function underlying(exerciseDate) ≥ strikeProduct ? underlying : strikeProduct
Parameters:
exerciseDate - The exercise date of the option (given as a double).
isCall - If true, the function implements is underlying(exerciseDate) ≥ strikePrice ? underlying : strikePrice. Otherwise it is underlying(exerciseDate) < strikePrice ? underlying : strikePrice.
strikeProduct - The strike (can be a general AbstractLIBORMonteCarloProduct).
underlying - The underlying.
• ### Method Detail

• #### queryUnderlyings

public Set<String> queryUnderlyings()
Description copied from class: AbstractProductComponent
Returns a set of underlying names referenced by this product component (i.e., required for valuation) or null if none.
Specified by:
queryUnderlyings in class AbstractProductComponent
Returns:
A set of underlying names referenced by this product component (i.e., required for valuation) or null if none.
• #### getValue

public RandomVariableInterface getValue(double evaluationTime,
LIBORModelMonteCarloSimulationInterface model)
throws CalculationException
This method returns the value random variable of the product within the specified model, evaluated at a given evalutationTime. Note: For a lattice this is often the value conditional to evalutationTime, for a Monte-Carlo simulation this is the (sum of) value discounted to evaluation time. Cashflows prior evaluationTime are not considered.
Specified by:
getValue in class AbstractLIBORMonteCarloProduct
Parameters:
evaluationTime - The time on which this products value should be observed.
model - The model used to price the product.
Returns:
The random variable representing the value of the product discounted to evaluation time
Throws:
CalculationException - Thrown if the valuation fails, specific cause may be available via the cause() method.