FinancePy

FinancePy API Reference

Equity Asian Option

financepy.products.equity.equity_asian_option

Classes

EquityAsianOption

EquityAsianOption(start_averaging_dt: financepy.utils.date.Date, expiry_dt: financepy.utils.date.Date, strike_price: float, opt_type: financepy.utils.global_types.OptionTypes, num_obs_per_year: int = 100)
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.

Methods

value

value(self, value_dt: financepy.utils.date.Date, stock_price: float, discount_curve: financepy.market.curves.discount_curve.DiscountCurve, dividend_curve: financepy.market.curves.discount_curve.DiscountCurve, model, method: financepy.utils.global_types.AsianOptionValuationTypes, 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) GEOMETRIC - the average is a geometric one as in paper by Kenna and Worst (1990), (ii) TURNBULL_WAKEMAN - this is a value based on an edgeworth expansion of the moments 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: financepy.utils.date.Date, stock_price: float, discount_curve: financepy.market.curves.discount_curve.DiscountCurve, dividend_curve: financepy.market.curves.discount_curve.DiscountCurve, model, num_paths: int, seed: int, accrued_average: float)
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_fast

value_mc_fast(self, value_dt: financepy.utils.date.Date, stock_price: float, discount_curve: financepy.market.curves.discount_curve.DiscountCurve, dividend_curve: financepy.market.curves.discount_curve.DiscountCurve, model, num_paths, seed, accrued_average)
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: financepy.utils.date.Date, stock_price: float, discount_curve: financepy.market.curves.discount_curve.DiscountCurve, dividend_curve: financepy.market.curves.discount_curve.DiscountCurve, model, num_paths, seed, accrued_average)
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.