有一个随机过程 其中Φ〜N(0,1)(标准正态分布),t 是自变量,表示时 间(x 轴),参数为 �0 = 1,θ = 1, μ = 1, σ = 0.5 尝试为 t = 10 生成 N 个 Monte Carlo 路径(N 不确定, 需要你根据实际情况来选择模拟的次数)。然后评估您的 MC 路径的平均值,用解析平均(analytical mean)进行检查
时间: 2024-03-18 13:40:52 浏览: 137
根据描述,该随机过程应该是 Ornstein-Uhlenbeck 过程。根据该过程的 SDE 方程,可以使用欧拉-马鞍巴赫方法模拟路径。下面是 Python 代码示例:
```
import math
import numpy as np
import matplotlib.pyplot as plt
# Parameters
T = 10 # Terminal time
N = 1000 # Number of time steps
dt = T/N
mu = 1 # Mean reversion level
theta = 1 # Mean reversion speed
sigma = 0.5 # Volatility
X0 = 1 # Initial value
M = 1000 # Number of Monte Carlo paths
# Monte Carlo simulation
t = np.linspace(0, T, N+1)
dW = np.random.normal(0, math.sqrt(dt), (M, N))
X = np.zeros((M, N+1))
X[:,0] = X0
for i in range(N):
X[:,i+1] = X[:,i] + theta*(mu-X[:,i])*dt + sigma*dW[:,i]
# Analytical mean
analytical_mean = mu + (X0-mu)*math.exp(-theta*T)
# Sample paths plot
plt.plot(t, X.T, alpha=0.2)
plt.xlabel('Time')
plt.ylabel('X')
plt.title('Sample Paths of Ornstein-Uhlenbeck Process')
plt.show()
# MC mean and error
MC_mean = np.mean(X[:,N])
MC_error = np.std(X[:,N])/math.sqrt(M)
print('MC mean:', MC_mean)
print('MC error:', MC_error)
print('Analytical mean:', analytical_mean)
```
在上面的代码中,我们使用欧拉-马鞍巴赫方法模拟了M个 Monte Carlo 路径,并使用解析平均公式计算了解析平均值。最后计算了 Monte Carlo 路径的平均值和标准误差。您可以根据需要修改代码中的参数和绘图选项。
阅读全文