FinancePy

FinancePy API Reference

equity asian option

financepy.products.equity.equity_asian_option

Types

AsianOptionValuationTypes

No description available.

Members

KEMNA_VORST = 1
TURNBULL_WAKEMAN = 2
CURRAN = 3

Class

EquityAsianOption

EquityAsianOption( start_averaging_dt: Date, expiry_dt: Date, strike_price: float, opt_type: OptionTypes, num_obs_per_year: int = 100, ) -> None
Inherits from: EquityOption
Class for an Equity Asian Option. This is an option with a final payoff linked to the averaging of the stock price over some specified period before the option expires. The valuation is done for both an arithmetic and a geometric average but the former can only be done either using an analytical approximation of the arithmetic average distribution or by using Monte-Carlo simulation. An Asian option on an arithmetic average and strike K has a payoff Max(SA(T)-K,0) where SA is the arithmetic average We define three dates - Valuation date for which we want the price - Start Averaging Date for when the averaging starts - Expiry date for when the payoff is made and the option expires In the model we have tv = is the time now t0 = time to the start averaging date in years t = time to the expiry date in years tau = length of averaging period in years at the start of the option We can be before the start of the averaging period in which case t0 > 0 We can be after the start of the averaging period in which case we set t0=0 and we note that t <= tau If we are in the averaging period then we need to know the accrued average I call this AA and the new average is now given by the accrued average The option payoff is now Max( (AA x (tau-t) + SA(t0) x (t-t0))/tau - K,0) This simplifies to (1/tau) * Max( (AA x (tau-t) + - K x tau + SA(t0) x (t-t0)),0) (1/tau) * Max( (AA x (tau-t) + - K x tau + SA(t0) x (t-t0)),0)

Methods

value

value( self, value_dt: Date, stock_price: float, discount_curve: DiscountCurve, dividend_curve: DiscountCurve, model: Model, method: AsianOptionValuationTypes = <AsianOptionValuationTypes.CURRAN: 3>, accrued_average: float = None, )
Calculate the value of an Asian option using one of the specified analytical approximations for an average rate option. These are the three enumerated values in the enum AsianOptionValuationTypes. The choices of approximation are (i) KEMNA-VORST - a geometric average is used as in paper by Kenna and Worst (1990), (ii) TURNBULL_WAKEMAN - this is a value based on the moments (I have discretised it) of the arithmetic average, and (iii) CURRAN - another approximative approach by Curran based on conditioning on the geometric mean price. Just choose the corresponding enumerated value to switch between these different approaches. Note that the accrued average is only required if the value date is inside the averaging period for the option.

value_mc

value_mc( self, value_dt: Date, stock_price: float, discount_curve: DiscountCurve, dividend_curve: DiscountCurve, model: Model, num_paths: int, seed: int, accrued_average: float = None, ) -> MCResult
Monte Carlo valuation of the Asian Average option using standard Monte Carlo code enhanced by Numba. I have discontinued the use of this as it is both slow and has limited variance reduction.

value_mc_sobol

value_mc_sobol( self, value_dt: Date, stock_price: float, discount_curve: DiscountCurve, dividend_curve: DiscountCurve, model: Model, num_paths: int, seed: int, accrued_average: float = None, num_scrambles: int = 8, ) -> MCResult
Randomized Sobol/antithetic Asian option valuation. Uses independent scrambled Sobol replications to estimate QMC uncertainty. num_paths must equal 2 * num_scrambles * 2**m with m >= 1, including antithetic paths. Does not alter the pseudo-random Monte Carlo methods.

value_mc_fast

value_mc_fast( self, value_dt: Date, stock_price: float, discount_curve: DiscountCurve, dividend_curve: DiscountCurve, model: Model, num_paths: int, seed: int, accrued_average: float = None, ) -> MCResult
Monte Carlo valuation of the Asian Average option. This method uses a lot of Numpy vectorisation. It is also helped by Numba.

value_mc_fast_cv

value_mc_fast_cv( self, value_dt: Date, stock_price: float, discount_curve: DiscountCurve, dividend_curve: DiscountCurve, model: Model, num_paths: int, seed: int, accrued_average: float = None, ) -> MCResult
Monte Carlo valuation of the Asian Average option using a control variate method that improves accuracy and reduces the variance of the price. This uses Numpy and Numba. This is the standard MC pricer.
Generated automatically from the FinancePy source code. Do not edit this file manually.