public class Option extends AbstractProductComponent implements RegressionBasisFunctionsProvider
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).AbstractLIBORMonteCarloProduct,
Serialized Form| Constructor and Description |
|---|
Option(double exerciseDate,
AbstractLIBORMonteCarloProduct underlying)
Creates the function underlying(exerciseDate) ≥ 0 ?
|
Option(double exerciseDate,
boolean isCall,
TermStructureMonteCarloProduct strikeProduct,
AbstractLIBORMonteCarloProduct underlying)
Creates the function underlying(exerciseDate) ≥ strikeProduct ?
|
Option(double exerciseDate,
boolean isCall,
TermStructureMonteCarloProduct strikeProduct,
AbstractLIBORMonteCarloProduct underlying,
RegressionBasisFunctionsProvider regressionBasisFunctionsProvider)
Creates the function underlying(exerciseDate) ≥ strikeProduct ?
|
Option(double exerciseDate,
double strikePrice,
AbstractLIBORMonteCarloProduct underlying)
Creates the function underlying(exerciseDate) ≥ strikePrice ?
|
Option(double exerciseDate,
double strikePrice,
boolean isCall,
AbstractLIBORMonteCarloProduct underlying)
Creates the function underlying(exerciseDate) ≥ strikePrice ?
|
Option(double exerciseDate,
double strikePrice,
boolean isCall,
AbstractLIBORMonteCarloProduct underlying,
RegressionBasisFunctionsProvider regressionBasisFunctionsProvider)
Creates the function underlying(exerciseDate) ≥ strikePrice ?
|
| Modifier and Type | Method and Description |
|---|---|
RandomVariable[] |
getBasisFunctions(double exerciseDate,
LIBORModelMonteCarloSimulationModel model)
Return the regression basis functions.
|
RandomVariable[] |
getBasisFunctions(double evaluationTime,
MonteCarloSimulationModel model)
Provides a set of \( \mathcal{F}_{t} \)-measurable random variables which can serve as regression basis functions.
|
String |
getCurrency()
Returns the currency string of this product.
|
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.
|
Set<String> |
queryUnderlyings()
Returns a set of underlying names referenced by this product component (i.e., required for valuation) or null if none.
|
String |
toString() |
getExecutor, getValuesgetFactorDrift, getValue, getValueForModifiedDatagetValue, getValue, getValues, getValues, getValues, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedDataclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetValue, getValue, getValues, getValues, getValues, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedDatapublic Option(double exerciseDate,
double strikePrice,
boolean isCall,
AbstractLIBORMonteCarloProduct underlying,
RegressionBasisFunctionsProvider regressionBasisFunctionsProvider)
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.regressionBasisFunctionsProvider - Used to determine the regression basis functions for the conditional expectation operator.public Option(double exerciseDate,
boolean isCall,
TermStructureMonteCarloProduct strikeProduct,
AbstractLIBORMonteCarloProduct underlying,
RegressionBasisFunctionsProvider regressionBasisFunctionsProvider)
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.regressionBasisFunctionsProvider - Used to determine the regression basis functions for the conditional expectation operator.public Option(double exerciseDate,
boolean isCall,
TermStructureMonteCarloProduct strikeProduct,
AbstractLIBORMonteCarloProduct underlying)
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.public Option(double exerciseDate,
double strikePrice,
boolean isCall,
AbstractLIBORMonteCarloProduct underlying)
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.public Option(double exerciseDate,
double strikePrice,
AbstractLIBORMonteCarloProduct underlying)
exerciseDate - The exercise date of the option (given as a double).strikePrice - The strike price.underlying - The underlying.public Option(double exerciseDate,
AbstractLIBORMonteCarloProduct underlying)
exerciseDate - The exercise date of the option (given as a double).underlying - The underlying.public String getCurrency()
MonteCarloProductgetCurrency in interface MonteCarloProductgetCurrency in class AbstractMonteCarloProductpublic Set<String> queryUnderlyings()
AbstractProductComponentqueryUnderlyings in class AbstractProductComponentpublic RandomVariable getValue(double evaluationTime, LIBORModelMonteCarloSimulationModel model) throws CalculationException
getValue in interface TermStructureMonteCarloProductgetValue in class AbstractLIBORMonteCarloProductevaluationTime - The time on which this products value should be observed.model - The model used to price the product.CalculationException - Thrown if the valuation fails, specific cause may be available via the cause() method.public RandomVariable[] getBasisFunctions(double evaluationTime, MonteCarloSimulationModel model) throws CalculationException
RegressionBasisFunctionsProvidergetBasisFunctions in interface RegressionBasisFunctionsProviderevaluationTime - The evaluation time \( t \) at which the basis function should be observed.model - The Monte-Carlo model used to derive the basis function.CalculationException - Thrown if derivation of the basis function fails.public RandomVariable[] getBasisFunctions(double exerciseDate, LIBORModelMonteCarloSimulationModel model) throws CalculationException
exerciseDate - The date w.r.t. which the basis functions should be measurable.model - The model.CalculationException - Thrown if the valuation fails, specific cause may be available via the cause() method.public String toString()
toString in class AbstractMonteCarloProductCopyright © 2019. All rights reserved.