-
Option Payoffs 4
-
Lecture1.1
-
Lecture1.2
-
Lecture1.3
-
Lecture1.4
-
-
Binomial Model 8
-
Lecture2.1
-
Lecture2.2
-
Lecture2.3
-
Lecture2.4
-
Lecture2.5
-
Lecture2.6
-
Lecture2.7
-
Lecture2.8
-
-
Black-Scholes 6
-
Lecture3.1
-
Lecture3.2
-
Lecture3.3
-
Lecture3.4
-
Lecture3.5
-
Lecture3.6
-
-
Monte Carlo Simulations 3
-
Lecture4.1
-
Lecture4.2
-
Lecture4.3
-
Option Greeks Put Options
The delta greek for put option is very similar to call options except it is -d1 now inside of N(), then we also are taking the negative of that result because delta will be negative for put options. This is since the option loses value as the stock goes up.
$$\text{Delta} = -N(-d_{1})$$
Create it in python.
#Create the put delta equation
def black_scholes_put_delta(S, X, sigma, rf, t):
d1 = 1/(sigma*t**.5) * (np.log(S/X) + (rf + sigma **2 /2) * t)
return -norm.cdf(-d1)
Plot the delta for different levels of volatility.
#Compute the delta for different volatilities
df = pd.DataFrame(list(range(101)), columns = ['Stock Price'])
df['Delta 8% Volatility'] = df['Stock Price'].apply(lambda x: black_scholes_put_delta(x, 55, .08, .03, 1))
df['Delta 20% Volatility'] = df['Stock Price'].apply(lambda x: black_scholes_put_delta(x, 55, .20, .03, 1))
df = df.set_index('Stock Price')
ax = df.plot(kind='line')
ax.axhline(0, linestyle='--', color='grey')
plt.xlabel("Stock Price")
plt.ylabel("Delta")
plt.title("Black-Scholes Delta Put Option")
plt.show()
The same for time to maturity.
#And check time to maturity
df = pd.DataFrame(list(range(101)), columns = ['Stock Price'])
df['Delta 1 Year'] = df['Stock Price'].apply(lambda x: black_scholes_put_delta(x, 55, .08, .03, 1))
df['Delta 5 Year'] = df['Stock Price'].apply(lambda x: black_scholes_put_delta(x, 55, .08, .03, 5))
df = df.set_index('Stock Price')
ax = df.plot(kind='line')
ax.axhline(0, linestyle='--', color='grey')
plt.xlabel("Stock Price")
plt.ylabel("Delta")
plt.show()
Gamma is the same for put options as call options. So we can re-use that formula to plot delta and gamma again for the put option.
df = pd.DataFrame(list(range(101)), columns = ['Stock Price'])
df['Delta'] = df['Stock Price'].apply(lambda x: black_scholes_put_delta(x, 55, .08, .03, 1))
df['Gamma'] = df['Stock Price'].apply(lambda x: black_scholes_gamma(x, 55, .08, .03, 1))
df = df.set_index('Stock Price')
fig, ax1 = plt.subplots()
#Build a second axis for the delta plotting
ax2 = ax1.twinx()
ax1.plot(df.index, df['Gamma'], 'blue')
ax2.plot(df.index, df['Delta'], 'red')
ax1.set_xlabel('Stock Price')
ax1.set_ylabel('Gamma')
ax2.set_ylabel('Delta')
ax1.legend(['Gamma'])
ax2.legend(['Delta'])
plt.title("Delta vs. Gamma Put Options")
plt.show()
Next
Delta Hedging Puts