通过python绘图展示CRR模型的收敛性
时间: 2023-11-28 20:04:04 浏览: 215
Cox_Ross_Rubenstein_Model:Cox,Ross,Rubenstein(CRR)模型的期权定价方法
5星 · 资源好评率100%
CRR模型(Cox-Ross-Rubinstein模型)是二叉树模型的一种,用于定价欧式和美式期权。下面给出一个使用Python绘制CRR模型收敛性的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
def CRR(S, K, r, sigma, T, N):
dt = T / N
u = np.exp(sigma * np.sqrt(dt))
d = 1 / u
p = (np.exp(r * dt) - d) / (u - d)
# 初始化树
stock_price = np.zeros((N+1, N+1))
option_price = np.zeros((N+1, N+1))
for j in range(N+1):
stock_price[N][j] = S * u ** (N-j) * d ** j
option_price[N][j] = max(stock_price[N][j] - K, 0)
# 向下递推
for i in range(N-1, -1, -1):
for j in range(i+1):
stock_price[i][j] = stock_price[i+1][j] / u
stock_price[i][j+1] = stock_price[i+1][j] * d
option_price[i][j] = np.exp(-r*dt) * (p * option_price[i+1][j+1] + (1-p) * option_price[i+1][j])
return option_price[0][0]
# 参数设定
S = 100
K = 100
r = 0.05
sigma = 0.2
T = 1
N = 20
# 绘制不同步数下的收敛性
steps = np.arange(5, 100, 5)
prices = []
for n in steps:
prices.append(CRR(S, K, r, sigma, T, n))
# 绘图
plt.plot(steps, prices)
plt.xlabel('Steps')
plt.ylabel('Option Price')
plt.title('Convergence of CRR Model')
plt.show()
```
运行以上代码,会输出一个收敛性的折线图,横轴为步数,纵轴为期权价格。可以看到,随着步数的增加,期权价格收敛于一个稳定值。这是因为二叉树模型是一种离散化的方法,只有在步数无限大时才能精确地定价期权。
阅读全文