def implied_volatility_of_undiscounted_option_price_limited_iterations( undiscounted_option_price, F, K, t, flag, N): """Calculate implied volatility of the undiscounted Black option price with limited iterations. :param undiscounted_option_price: undiscounted Black price of a futures option :type undiscounted_option_price: float :param F: underlying futures price :type F: float :param K: strike price :type K: float :param t: time to expiration in years :type t: float >>> F = 100 >>> K = 100 >>> sigma = .232323232 >>> flag = 'c' >>> t = .5 >>> price = undiscounted_black(F, K, sigma, t, flag) >>> iv = implied_volatility_of_undiscounted_option_price_limited_iterations( ... price, F, K, t, flag, 1) >>> print price, iv 6.54635543387 0.232323232 """ return lets_be_rational.implied_volatility_from_a_transformed_rational_guess_with_limited_iterations( undiscounted_option_price, F, K, t, binary_flag[flag], N)
def implied_volatility_limited_iterations(price, S, K, t, r, flag, N): """Calculate the Black-Scholes implied volatility with limited iterations. :param price: the Black-Scholes option price :type price: float :param S: underlying asset price :type S: float :param K: strike price :type K: float :param t: time to expiration in years :type t: float :param r: risk-free interest rate :type r: float :param flag: 'c' or 'p' for call or put. :type flag: str :param N: the maximum number of iterations to perform :type N: int >>> S = 100 >>> K = 100 >>> sigma = .232323232 >>> r = .01 >>> flag = 'c' >>> t = .5 >>> price = black_scholes(flag, S, K, t, r, sigma) >>> iv = implied_volatility_limited_iterations(price, S, K, t, r, flag,1) >>> print price, iv 6.78242400926 0.232323232 """ adjusted_price = price / e**(-r*t) return lets_be_rational.implied_volatility_from_a_transformed_rational_guess_with_limited_iterations( adjusted_price, forward_price(S, t, r), K, t, binary_flag[flag], N )
def implied_volatility_of_undiscounted_option_price_limited_iterations( undiscounted_option_price, F, K, t, flag, N): """Calculate implied volatility of the undiscounted Black option price with limited iterations. :param undiscounted_option_price: undiscounted Black price of a futures option :type undiscounted_option_price: float :param F: underlying futures price :type F: float :param K: strike price :type K: float :param t: time to expiration in years :type t: float >>> F = 100 >>> K = 100 >>> sigma = .232323232 >>> flag = 'c' >>> t = .5 >>> price = undiscounted_black(F, K, sigma, t, flag) >>> iv = implied_volatility_of_undiscounted_option_price_limited_iterations( ... price, F, K, t, flag, 1) >>> print price, iv 6.54635543387 0.232323232 """ return lets_be_rational.implied_volatility_from_a_transformed_rational_guess_with_limited_iterations( undiscounted_option_price, F, K, t, binary_flag[flag], N )
def implied_volatility_limited_iterations(price, S, K, t, r, flag, N): """Calculate the Black-Scholes implied volatility with limited iterations. :param price: the Black-Scholes option price :type price: float :param S: underlying asset price :type S: float :param K: strike price :type K: float :param t: time to expiration in years :type t: float :param r: risk-free interest rate :type r: float :param flag: 'c' or 'p' for call or put. :type flag: str :param N: the maximum number of iterations to perform :type N: int >>> S = 100 >>> K = 100 >>> sigma = .232323232 >>> r = .01 >>> flag = 'c' >>> t = .5 >>> price = black_scholes(flag, S, K, t, r, sigma) >>> iv = implied_volatility_limited_iterations(price, S, K, t, r, flag,1) >>> print price, iv 6.78242400926 0.232323232 """ adjusted_price = price / e**(-r * t) return lets_be_rational.implied_volatility_from_a_transformed_rational_guess_with_limited_iterations( adjusted_price, forward_price(S, t, r), K, t, binary_flag[flag], N)
data['input'] = [] data['output'] = [] for i in range(TestCases): F = _F[i] K = _K[i] sigma = _sigma[i] T = _T[i] q = _q[i] z = _z[i] N = _N[i] black = lets_be_rational.black(F, K, sigma, T, q) iv = lets_be_rational.implied_volatility_from_a_transformed_rational_guess( black, F, K, T, q) ivi = lets_be_rational.implied_volatility_from_a_transformed_rational_guess_with_limited_iterations( black, F, K, T, q, N) x = _x[i] s = _s[i] nblack = lets_be_rational.normalised_black(x, s, q) nblackcall = lets_be_rational.normalised_black_call(x, s) niv = lets_be_rational.normalised_implied_volatility_from_a_transformed_rational_guess( nblack, x, q) nivi = lets_be_rational.normalised_implied_volatility_from_a_transformed_rational_guess_with_limited_iterations( nblack, x, q, N) vega = lets_be_rational.normalised_vega(x, s) norm_cdf = lets_be_rational.norm_cdf(z) data['input'].append({ 'F': F, 'K': K,
data = {} data['input'] = [] data['output'] = [] for i in range(TestCases): F = _F[i] K = _K[i] sigma = _sigma[i] T = _T[i] q = _q[i] z = _z[i] N = _N[i] black = lets_be_rational.black(F, K, sigma, T, q) iv = lets_be_rational.implied_volatility_from_a_transformed_rational_guess(black, F, K, T, q) ivi = lets_be_rational.implied_volatility_from_a_transformed_rational_guess_with_limited_iterations(black, F, K, T, q, N) x = _x[i] s = _s[i] nblack = lets_be_rational.normalised_black(x, s, q) nblackcall = lets_be_rational.normalised_black_call(x, s) niv = lets_be_rational.normalised_implied_volatility_from_a_transformed_rational_guess(nblack, x, q) nivi = lets_be_rational.normalised_implied_volatility_from_a_transformed_rational_guess_with_limited_iterations(nblack, x, q, N) vega = lets_be_rational.normalised_vega(x, s) norm_cdf = lets_be_rational.norm_cdf(z) data['input'].append({'F':F, 'K':K, 'sigma':sigma, 'T':T, 'q':q,