Skip navigation links
finMath lib documentation
net.finmath.montecarlo.assetderivativevaluation.products

## Class BermudanOption

• All Implemented Interfaces:
Product

public class BermudanOption
extends AbstractAssetMonteCarloProduct
This class implements the valuation of a Bermudan option paying
N(i) * (S(T(i)) - K(i)) at T(i),
when exercised in T(i), where N(i) is the notional, S is the underlying, K(i) is the strike and T(i) the exercise date. The code "demos" the two prominent methods for the valuation of Bermudan (American) products:
• The valuation may be performed using an estimation of the conditional expectation to determine the exercise criteria. Apart from a possible foresight bias induced by the Monte-Carlo errors, this give a lower bound for the Bermudan value.
• The valuation may be performed using the dual method based on a minimization problem, which gives an upper bound.
Version:
1.4
Author:
Christian Fries
• ### Nested Class Summary

Nested Classes
Modifier and Type Class and Description
static class  BermudanOption.ExerciseMethod
• ### Constructor Summary

Constructors
Constructor and Description
BermudanOption(double[] exerciseDates, double[] notionals, double[] strikes)
Create a Bermudan option paying N(i) * (S(T(i)) - K(i)) at T(i), when exercised in T(i), where N(i) is the notional, S is the underlying, K(i) is the strike and T(i) the exercise date.
BermudanOption(double[] exerciseDates, double[] notionals, double[] strikes, BermudanOption.ExerciseMethod exerciseMethod)
Create a Bermudan option paying N(i) * (S(T(i)) - K(i)) at T(i), when exercised in T(i), where N(i) is the notional, S is the underlying, K(i) is the strike and T(i) the exercise date.
• ### Method Summary

All Methods
Modifier and Type Method and Description
double[] getExerciseDates()
RandomVariableInterface getLastValuationExerciseTime()
double[] getNotionals()
double[] getStrikes()
RandomVariableInterface getValue(double evaluationTime, AssetModelMonteCarloSimulationInterface model)
This method returns the value random variable of the product within the specified model, evaluated at a given evalutationTime.
• ### Methods inherited from class net.finmath.montecarlo.assetderivativevaluation.products.AbstractAssetMonteCarloProduct

getValue
• ### Methods inherited from class net.finmath.montecarlo.AbstractMonteCarloProduct

getCurrency, getValue, getValue, getValues, getValues, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, getValuesForModifiedData, toString
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
• ### Methods inherited from interface net.finmath.modelling.Product

getDescriptor, getValues
• ### Constructor Detail

• #### BermudanOption

public BermudanOption(double[] exerciseDates,
double[] notionals,
double[] strikes,
BermudanOption.ExerciseMethod exerciseMethod)
Create a Bermudan option paying N(i) * (S(T(i)) - K(i)) at T(i), when exercised in T(i), where N(i) is the notional, S is the underlying, K(i) is the strike and T(i) the exercise date.
Parameters:
exerciseDates - The exercise dates (T(i)), given as doubles.
notionals - The notionals (N(i)) for each exercise date.
strikes - The strikes (K(i)) for each exercise date.
exerciseMethod - The exercise method to be used for the estimation of the exercise boundary.
• #### BermudanOption

public BermudanOption(double[] exerciseDates,
double[] notionals,
double[] strikes)
Create a Bermudan option paying N(i) * (S(T(i)) - K(i)) at T(i), when exercised in T(i), where N(i) is the notional, S is the underlying, K(i) is the strike and T(i) the exercise date. The product will use ExerciseMethod.ESTIMATE_COND_EXPECTATION.
Parameters:
exerciseDates - The exercise dates (T(i)), given as doubles.
notionals - The notionals (N(i)) for each exercise date.
strikes - The strikes (K(i)) for each exercise date.
• ### Method Detail

• #### getValue

public RandomVariableInterface getValue(double evaluationTime,
AssetModelMonteCarloSimulationInterface model)
throws CalculationException
This method returns the value random variable of the product within the specified model, evaluated at a given evalutationTime. Cash-flows prior evaluationTime are not considered.
Specified by:
getValue in class AbstractAssetMonteCarloProduct
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.
• #### getLastValuationExerciseTime

public RandomVariableInterface getLastValuationExerciseTime()
• #### getExerciseDates

public double[] getExerciseDates()
• #### getNotionals

public double[] getNotionals()
• #### getStrikes

public double[] getStrikes()
Skip navigation links
Copyright © 2017 Christian P. Fries.

Copyright © 2018. All rights reserved.