PyMPDATA_examples.utils.financial_formulae.asian_option
Closed-forms for geometric Asian options are taken from: Derivatives Markets Appendix 19A
1# pylint: disable=line-too-long 2""" 3Closed-forms for geometric Asian options are taken from: 4[Derivatives Markets Appendix 19A](https://media.pearsoncmg.com/ph/bp/bridgepages/teamsite/mcdonald/McDonald-web-19-A.pdf) 5""" 6 7import numpy as np 8 9from .Black_Scholes_1973 import c_euro_with_dividend, p_euro_with_dividend 10 11# for fun in (c_euro_with_dividend, p_euro_with_dividend): 12# locals()['geometric_asian_average_price_'+fun.__name__[0]] = lambda **args: fun( 13# **{key:value for key, value in args.items() if key not in ('sgma', 'dividend_yield')}, 14# sgma=args['sgma']/np.sqrt(3), 15# dividend_yield=0.5*(args['r'] + args['dividend_yield'] + args['sgma']**2/6), 16# ) 17 18 19def geometric_asian_average_price_c(S, K, T, r, sgma, dividend_yield): 20 return c_euro_with_dividend( 21 S=S, 22 K=K, 23 T=T, 24 r=r, 25 sgma=sgma / np.sqrt(3), 26 dividend_yield=0.5 * (r + dividend_yield + sgma**2 / 6), 27 ) 28 29 30def geometric_asian_average_price_p(S, K, T, r, sgma, dividend_yield): 31 return p_euro_with_dividend( 32 S=S, 33 K=K, 34 T=T, 35 r=r, 36 sgma=sgma / np.sqrt(3), 37 dividend_yield=0.5 * (r + dividend_yield + sgma**2 / 6), 38 ) 39 40 41def geometric_asian_average_strike_c(S, K, T, r, sgma, dividend_yield): 42 return c_euro_with_dividend( 43 S=S, 44 K=K, 45 T=T, 46 dividend_yield=dividend_yield, 47 sgma=sgma * np.sqrt(T / 3), 48 r=0.5 * (r + dividend_yield + sgma**2 / 6), 49 ) 50 51 52def geometric_asian_average_strike_p(S, K, T, r, sgma, dividend_yield): 53 return p_euro_with_dividend( 54 S=S, 55 K=K, 56 T=T, 57 dividend_yield=dividend_yield, 58 sgma=sgma * np.sqrt(T / 3), 59 r=0.5 * (r + dividend_yield + sgma**2 / 6), 60 )
def
geometric_asian_average_price_c(S, K, T, r, sgma, dividend_yield):
def
geometric_asian_average_price_p(S, K, T, r, sgma, dividend_yield):
def
geometric_asian_average_strike_c(S, K, T, r, sgma, dividend_yield):
def
geometric_asian_average_strike_p(S, K, T, r, sgma, dividend_yield):