コード例 #1
0
ファイル: analytical.py プロジェクト: fj11/vollib
def rho(flag, S, K, t, r, sigma, q):


    """Returns the Black-Scholes-Merton rho of an option.


    :param flag: 'c' or 'p' for call or put.
    :type flag: str
    :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: annual risk-free interest rate
    :type r: float
    :param sigma: volatility
    :type sigma: float
    :param q: annualized continuous dividend yield
    :type q: float

    :returns:  float 

    """


    D2 = d2(S, K, t, r, sigma, q)

    if flag == 'c':

        return t * K * numpy.exp(-r*t) * cnd(D2) * .01

    else:

        return -t * K * numpy.exp(-r*t) * cnd(-D2) * .01
コード例 #2
0
def rho(flag, S, K, t, r, sigma, q):
    """Returns the Black-Scholes-Merton rho of an option.


    :param flag: 'c' or 'p' for call or put.
    :type flag: str
    :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: annual risk-free interest rate
    :type r: float
    :param sigma: volatility
    :type sigma: float
    :param q: annualized continuous dividend yield
    :type q: float

    :returns:  float 

    """

    D2 = d2(S, K, t, r, sigma, q)

    if flag == 'c':

        return t * K * numpy.exp(-r * t) * cnd(D2) * .01

    else:

        return -t * K * numpy.exp(-r * t) * cnd(-D2) * .01
コード例 #3
0
ファイル: analytical.py プロジェクト: fj11/vollib
def theta(flag, S, K, t, r, sigma, q):

    """Returns the Black-Scholes-Merton theta of an option.


    :param flag: 'c' or 'p' for call or put.
    :type flag: str
    :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: annual risk-free interest rate
    :type r: float
    :param sigma: volatility
    :type sigma: float
    :param q: annualized continuous dividend yield
    :type q: float

    :returns:  float 

    """


    D1 = d1(S, K, t, r, sigma, q)
    D2 = d2(S, K, t, r, sigma, q)

    first_term = (S * numpy.exp(-q*t) * pdf(D1) * sigma) / (2 * numpy.sqrt(t))

    if flag == 'c':

        second_term = -q * S * numpy.exp(-q*t) * cnd(D1)
        third_term = r * K * numpy.exp(-r*t) * cnd(D2)

        return - (first_term + second_term + third_term) / 365.0

    else:

        second_term = -q * S * numpy.exp(-q*t) * cnd(-D1)
        third_term = r * K * numpy.exp(-r*t) * cnd(-D2)

        return (-first_term + second_term + third_term) / 365.0
コード例 #4
0
def theta(flag, S, K, t, r, sigma, q):
    """Returns the Black-Scholes-Merton theta of an option.


    :param flag: 'c' or 'p' for call or put.
    :type flag: str
    :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: annual risk-free interest rate
    :type r: float
    :param sigma: volatility
    :type sigma: float
    :param q: annualized continuous dividend yield
    :type q: float

    :returns:  float 

    """

    D1 = d1(S, K, t, r, sigma, q)
    D2 = d2(S, K, t, r, sigma, q)

    first_term = (S * numpy.exp(-q * t) * pdf(D1) * sigma) / (2 *
                                                              numpy.sqrt(t))

    if flag == 'c':

        second_term = -q * S * numpy.exp(-q * t) * cnd(D1)
        third_term = r * K * numpy.exp(-r * t) * cnd(D2)

        return -(first_term + second_term + third_term) / 365.0

    else:

        second_term = -q * S * numpy.exp(-q * t) * cnd(-D1)
        third_term = r * K * numpy.exp(-r * t) * cnd(-D2)

        return (-first_term + second_term + third_term) / 365.0