Class AsianOption
java.lang.Object
net.finmath.functions.AsianOption
Utility class collecting analytical or semi-analytical pricing formulas for
Asian options.
Included formulas:
- Continuous geometric-average price Asian option (Black-Scholes exact formula)
- Discrete geometric-average price Asian option (Black-Scholes exact formula)
- Discrete geometric-average strike Asian option (Black-Scholes exact formula)
- Continuous arithmetic-average price Asian option, Levy approximation
- Discrete arithmetic-average price Asian option, Turnbull-Wakeman approximation
- Author:
- Alessandro Gnoatto
-
Method Summary
Modifier and TypeMethodDescriptionstatic doubleblackPrice(CallOrPut optionType, double forward, double strike, double stdDev, double discountFactor) Black-style price using forward, strike, std-dev and discount factor.static doublepriceContinuousArithmeticAveragePriceLevy(CallOrPut optionType, double spot, double strike, double riskFreeRate, double dividendYield, double volatility, double averagingStartTime, double maturity, double currentAverage) Levy approximation for a continuous arithmetic-average price Asian option.static doublepriceContinuousGeometricAveragePrice(CallOrPut optionType, double spot, double strike, double riskFreeRate, double dividendYield, double volatility, double maturity) Exact Black-Scholes price for a continuous geometric-average Asian option.static doublepriceDiscreteArithmeticAveragePriceTurnbullWakeman(CallOrPut optionType, double spot, double strike, double riskFreeRate, double dividendYield, double volatility, double exerciseTime, double[] futureFixingTimes, int pastFixings, double runningSum) Turnbull-Wakeman approximation for a discrete arithmetic-average price Asian option.static doublepriceDiscreteGeometricAveragePrice(CallOrPut optionType, double spot, double strike, double riskFreeRate, double dividendYield, double volatility, double maturity, double[] futureFixingTimes, int pastFixings, double runningProduct) Exact Black-Scholes price for a discrete geometric-average price Asian option.static doublepriceDiscreteGeometricAverageStrike(CallOrPut optionType, double spot, double riskFreeRate, double dividendYield, double volatility, double residualTime, double[] fixingTimesFromStart, int pastFixings, double runningProduct) Exact Black-Scholes price for a discrete geometric-average strike Asian option.
-
Method Details
-
blackPrice
public static double blackPrice(CallOrPut optionType, double forward, double strike, double stdDev, double discountFactor) Black-style price using forward, strike, std-dev and discount factor.- Parameters:
optionType- The value.forward- The value.strike- The value.stdDev- The value.discountFactor- The value.- Returns:
- The value.
-
priceContinuousGeometricAveragePrice
public static double priceContinuousGeometricAveragePrice(CallOrPut optionType, double spot, double strike, double riskFreeRate, double dividendYield, double volatility, double maturity) Exact Black-Scholes price for a continuous geometric-average Asian option.- Parameters:
optionType- The value.spot- spot S0strike- strike KriskFreeRate- continuously compounded risk-free rate rdividendYield- continuously compounded dividend yield qvolatility- Black-Scholes volatility sigmamaturity- maturity T- Returns:
- The value.
-
priceDiscreteGeometricAveragePrice
public static double priceDiscreteGeometricAveragePrice(CallOrPut optionType, double spot, double strike, double riskFreeRate, double dividendYield, double volatility, double maturity, double[] futureFixingTimes, int pastFixings, double runningProduct) Exact Black-Scholes price for a discrete geometric-average price Asian option.This matches the QuantLib analytic discrete geometric average price engine.
- Parameters:
optionType- The value.spot- The value.strike- The value.riskFreeRate- The value.dividendYield- The value.volatility- The value.maturity- option maturity / exercise timefutureFixingTimes- strictly non-negative, increasing fixing times (in years from valuation time) for remaining fixingspastFixings- number of already observed fixingsrunningProduct- product of already observed fixings; use 1.0 if pastFixings = 0- Returns:
- The value.
-
priceDiscreteGeometricAverageStrike
public static double priceDiscreteGeometricAverageStrike(CallOrPut optionType, double spot, double riskFreeRate, double dividendYield, double volatility, double residualTime, double[] fixingTimesFromStart, int pastFixings, double runningProduct) Exact Black-Scholes price for a discrete geometric-average strike Asian option.This mirrors the QuantLib engine limitation: past fixings are not supported.
- Parameters:
optionType- The value.spot- The value.riskFreeRate- The value.dividendYield- The value.volatility- The value.residualTime- time from first fixing date to exercise datefixingTimesFromStart- fixing times measured from the first fixing date; normally the first entry is 0.0pastFixings- The value.runningProduct- product of past fixings; only 1.0 with pastFixings = 0 is supported here- Returns:
- The value.
-
priceContinuousArithmeticAveragePriceLevy
public static double priceContinuousArithmeticAveragePriceLevy(CallOrPut optionType, double spot, double strike, double riskFreeRate, double dividendYield, double volatility, double averagingStartTime, double maturity, double currentAverage) Levy approximation for a continuous arithmetic-average price Asian option.- Parameters:
optionType- The value.spot- The value.strike- The value.riskFreeRate- The value.dividendYield- The value.volatility- The value.averagingStartTime- start of averaging window, measured from valuation time; must satisfy0 <= averagingStartTime <= maturitymaturity- maturity / exercise time T2 from valuationcurrentAverage- already accrued arithmetic average if averaging has started; ignored if averagingStartTime == 0- Returns:
- The value.
-
priceDiscreteArithmeticAveragePriceTurnbullWakeman
public static double priceDiscreteArithmeticAveragePriceTurnbullWakeman(CallOrPut optionType, double spot, double strike, double riskFreeRate, double dividendYield, double volatility, double exerciseTime, double[] futureFixingTimes, int pastFixings, double runningSum) Turnbull-Wakeman approximation for a discrete arithmetic-average price Asian option.- Parameters:
optionType- The value.spot- The value.strike- The value.riskFreeRate- The value.dividendYield- The value.volatility- The value.exerciseTime- option maturity / exercise time, typically >= max futureFixingTimesfutureFixingTimes- remaining fixing times in years from valuation timepastFixings- number of already observed fixingsrunningSum- sum of already observed fixings; use 0.0 if pastFixings = 0- Returns:
- The value.
-