コード例 #1
0
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)
コード例 #2
0
ファイル: implied_volatility.py プロジェクト: mikewen/vollib
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
    )
コード例 #3
0
ファイル: implied_volatility.py プロジェクト: fj11/vollib
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
    )
コード例 #4
0
ファイル: implied_volatility.py プロジェクト: rlcjj/vollib
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)
コード例 #5
0
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,
コード例 #6
0
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,