While trying to implement Black-Scholes delta hedging for a European call option using Python, I came across the following phenomena:
Given a portfolio consisting of longing a delta shares of stocks and shorting a call option, its value can never be greater than the strike price of the call option.
Is this true? If yes, can this be proven?
For reference, the following is my Python code:
# evolve stock prices under GBM SDE solution in N steps
# BS parameters
S0 = 120
K = 100
r = 0.05
d = 0
sigma = 0.2
T = 1
# number of discretization steps
N = 50
stock_prices = np.ndarray(shape = (50))
stock_prices[0] = S0
num_rows, num_cols = 5, 5
num_graphs = num_rows * num_cols
_, ax = plt.subplots(num_rows, num_cols, figsize = (15,8))
for j in range(num_graphs):
for i in range(1, N):
stock_prices[i] = GBM_formula(stock_prices[i-1], K, r, d, sigma, T)
ax[j // num_cols, j % num_cols].plot(stock_prices, label = 'Stock Prices')
# Black-Scholes hedging strategy
# hedging simulator
# A delta-neutral portfolio (from option's seller point of view) consists of longing delta shares of stocks and shorting a call option.
len_of_stock_prices = len(stock_prices)
portfolio = [0] * len_of_stock_prices
for i in range(len_of_stock_prices):
portfolio[i] = Greeks(stock_prices[i], K, r, d, sigma, T).delta() * stock_prices[i] - Option(stock_prices[i], K, r, d, sigma, T).european_call()
ax[j // num_cols, j % num_cols].plot(portfolio, label = 'Portfolio value')
ax[j // num_cols, j % num_cols].legend()
The GBM_formula
scripts can be found at my Github https://github.com/hongwai1920/Implement-Option-Pricing-Model-using-Python/blob/master/scripts/GBM.py. Same goes to Option
and Greek
https://github.com/hongwai1920/Implement-Option-Pricing-Model-using-Python/blob/master/scripts/Option.py
The following contain 20 plots of stock prices and the corresponding portfolio values.