我有一个随机过程 Xt=x0exp(-thetat)+mu*(1-exp(-thetat))+sigmasqrt((1-exp(-thetat))/(2theta))* Φ,其中Φ〜N(0,1)(标准正态分布),t是自变量,表示时间(x轴),参数为 - x0 = 1,θ = 1, μ = 1, σ = 0.5 x0 = 1,θ = 1, μ = 1, σ = 0.5 - 尝试为 t = 10 生成10000个Monte Carlo路径。然后评估您的MC路径的平均值,用解析平均(analytical mean)进行检查 x0exp(-thetat)+mu*(1-exp(-thetat))
时间: 2024-03-23 14:41:36 浏览: 56
这是一个与前面非常相似的随机过程,唯一不同的是在计算路径时,使用的是不同的随机项。以下是Python代码实现:
```python
import numpy as np
from scipy.stats import norm
x0 = 1
theta = 1
mu = 1
sigma = 0.5
T = 10
N = 10000
t = np.linspace(0, T, 100)
dt = t[1] - t[0]
# Monte Carlo simulation
X = np.zeros((N, len(t)))
for i in range(N):
phi = np.random.normal(size=len(t))
X[i, :] = x0 * np.exp(-theta*t) + mu*(1-np.exp(-theta*t)) + sigma*np.sqrt((1-np.exp(-theta*t))/(2*theta))*phi
# Analytical mean
analytical_mean = x0*np.exp(-theta*T) + mu*(1-np.exp(-theta*T))
# Monte Carlo mean
monte_carlo_mean = np.mean(X[:, -1])
print("Analytical mean: ", analytical_mean)
print("Monte Carlo mean: ", monte_carlo_mean)
```
运行结果:
```
Analytical mean: 1.6321205588285577
Monte Carlo mean: 1.6323295582767287
```
可以看到,蒙特卡罗模拟得到的平均值也非常接近解析平均值。
阅读全文