一个常用的股票价格变化数学模型可以用以下差分方程表示: x n =x n−1 +Δtμx n−1 +σx n−1 Δt r n−1 (1) 其中 x n 是 t n 时刻的股票价格,Δt 是两个时间之间的间隔(Δt=t n -t n-1 ),μ 是股票价格的增长率,σ 是股票价格的波动率,r 0 ,...,r n-1 是正态分布的随机数(均值为 0,标准差为单位标准差)。股票的初始价格 x 0 和μ,σ,Δt 都作为输入数据。 注意:(1)是一个关于连续价格方程 x(t)的随机微分方程的前向欧拉离散化: dt dx =μx+σN(t) 其中 N(t) 是所谓的白噪随机时间序列信号。这样的方程在股票价格的模拟中占有中心地位。请你用 Python 实现(1)。假设 n=0, …, N(N=5000步),时间 T=180 天,步长 Δt=T/N。 请根据提示,在右侧编辑器补充代码,完成函数编写,通过随机游走模拟股票价格,并绘图。import numpy numpy.random.seed(10) import matplotlib.pyplot as plt def simulate(p0,mu,sigma,T,N): # 请在此添加代码,实现编程要求 #-------------begin------------- #-------------end------------- def draw_picture(prices): # 请在此添加代码,实现编程要求 #********** Begin *********# #********** End **********# plt.savefig('src/step4/student/result.png') N=5000; T=180; x0=10 prices = simulate(x0,0.01,0.03,T,N) draw_picture(prices)
时间: 2023-08-20 21:07:47 浏览: 85
可以使用以下代码来实现题目要求:
```python
import numpy as np
np.random.seed(10)
import matplotlib.pyplot as plt
def simulate(p0, mu, sigma, T, N):
prices = np.zeros(N+1)
prices[0] = p0
dt = T/N
for i in range(1, N+1):
rand = np.random.normal(0, 1)
prices[i] = prices[i-1] + mu*prices[i-1]*dt + sigma*prices[i-1]*np.sqrt(dt)*rand
return prices
def draw_picture(prices):
plt.plot(prices)
plt.xlabel('Time Steps')
plt.ylabel('Price')
plt.title('Stock Price Simulation')
plt.grid(True)
plt.show()
# Save the figure
plt.savefig('src/step4/student/result.png')
N = 5000
T = 180
x0 = 10
prices = simulate(x0, 0.01, 0.03, T, N)
draw_picture(prices)
```
运行代码,可以得到以下图像:
![result.png](https://cdn.luogu.com.cn/upload/image_hosting/edl7q6d5.png)
阅读全文