def BSM_gamma(St, K, t, T, r, sigma): ''' Black-Scholes-Merton GAMMA of European call option. Parameters ========== St : float stock/index level at time t K : float strike price t : float valuation date T : float date of maturity/time-to-maturity if t = 0; T > t r : float constant, risk-less short rate sigma : float volatility Returns ======= gamma : float European call option GAMM ''' d1 = d1f(St, K, t, T, r, sigma) gamma = dN(d1) / (St * sigma * math.sqrt(T - t)) return gamma
def BSM_theta(St, K, t, T, r, sigma): ''' Black-Scholes-Merton THETA of European call option. Parameters ========== St : float stock/index level at time t K : float strike price t : float valuation date T : float date of maturity/time-to-maturity if t = 0; T > t r : float constant, risk-less short rate sigma : float volatility Returns ======= theta : float European call option THETA ''' d1 = d1f(St, K, t, T, r, sigma) d2 = d1 - sigma * math.sqrt(T - t) theta = -(St * dN(d1) * sigma / (2 * math.sqrt(T - t)) + r * K * math.exp(-r * (T - t)) * N(d2)) return theta
def BSM_vega(St, K, t, T, r, sigma): d1 = dlf(St, K, t, T, r, sigma) vega = St * dN(d1) * math.sqrt(T - t) return vega
def BSM_theta(St, K, t, T, r, sigma): d1= dlf(St, K, t, T, r, sigma) d2 = d1 - sigma * math.sqrt(T - t) theta = -(St * dN(d1) * sigma / (2 * math.sqrt(T-t)) + r * K * math.exp(-r * (T - t) * N(d2))) return theta
def BSM_gamma(St, K, t, T, r, sigma): gamma = dN(d1) / (St * sigma * math.sqrt(T - t)) return gamma