用python实现:通过给定的s,u,d,T,N,K,r绘图展现crr模型的收敛性
时间: 2023-06-26 08:07:28 浏览: 92
首先,我们需要了解一下CRR模型是什么。CRR模型是一种离散时间模型,用于估计期权价格。该模型假设股票价格在每个时间段内只有两种可能的变化,即上涨或下跌,其变动幅度由两个参数u和d控制。假设初始股票价格为S,期权到期时间为T,每个时间段长度为Δt,则有以下公式:
- u = e^(σ * √Δt) # 上涨幅度
- d = 1/u # 下跌幅度
- p = (e^(r*Δt) - d) / (u - d) # 上涨概率
- q = 1 - p # 下跌概率
- f(T, S) = max(S * u^k * d^(n-k) - K, 0) # 期权价值
- C(0, S) = e^(-r*T) * Σ(n=0 to N) (p^n * q^(N-n) * f(T, S * u^k * d^(n-k))) # 求期权价格
其中,σ为股票的波动率,r为无风险利率,K为期权行权价格,N为模型中的最大时间步数,k为股票价格变动的次数。
接下来,我们可以通过给定的参数,使用Python代码绘制CRR模型的收敛性曲线。
```python
import matplotlib.pyplot as plt
import numpy as np
# 给定参数
s = 100 # 初始股票价格
u = 1.1 # 上涨幅度
d = 0.9 # 下跌幅度
T = 1 # 期权到期时间
N = 1000 # 最大时间步数
K = 100 # 期权行权价格
r = 0.05 # 无风险利率
# 计算期权价格
def f(n, k):
return max(s * u**k * d**(n-k) - K, 0)
def C(n, s):
if n == N:
return f(n, 0)
else:
p = (np.exp(r * T/N) - d) / (u - d)
q = 1 - p
return np.exp(-r * T/N) * (p * C(n+1, s*u) + q * C(n+1, s*d))
prices = []
for i in range(1, N+1):
prices.append(C(0, s))
# 绘制收敛性曲线
plt.plot(prices)
plt.xlabel("Number of iterations")
plt.ylabel("Option price")
plt.title("Convergence of CRR model")
plt.show()
```
运行以上代码,即可得到CRR模型的收敛性曲线。
阅读全文