根据 Python 中的给定方程模拟股票价格

Simulate stock price based on a given equation in Python

如何使用以下等式生成价格时间序列:

p(t) = p0(1+A * sin(ωt +0.5η(t)))

其中 t 的范围从 011000 时间步长,p0 = 100A = 0.1ω = 100η(t)i.i.d 高斯随机变量 的序列 零均值 单位方差.

我用下面的代码生成了价格,但好像不符合要求。所以我需要社区的帮助。提前致谢。

from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
mu = 0
sigma = 1
np.random.seed(2020)

dist = norm(loc = mu,scale=sigma)
sample = dist.rvs(size = 1000)
stock_price = np.exp(sample.cumsum())
print(stock_price)
plt.plot(stock_price)
plt.xlabel("Day")
plt.ylabel("Price")
plt.title("Simulated Stock price")
plt.show()

假设我没有遗漏任何东西,这应该可以解决问题

import numpy as np
import matplotlib.pyplot as plt

n_t = np.random.normal(0, 1, 1000)
t = np.arange(0, 1, 1/1000)

p_0, A, w = 100, 0.1, 100
ts = p_0 * (1 + A * np.sin(w * t + 0.5 * n_t))

plt.plot(t, ts)
plt.xlabel("Day")
plt.ylabel("Price")
plt.show()

给出了情节

我的试用,不知道对不对,欢迎大家多提意见

import numpy as np
import math
np.random.seed(2020)

mu = 0
sigma = 1
dt = 0.01
p0 = 100
A = 0.1
w = 100
N = 1000
for t in np.linspace(0, 1, 1000):
    X = np.random.normal(mu * dt, sigma* np.sqrt(dt), N)
    X = np.cumsum(X)
    pt = p0 * (1+ A*np.sin(w*t + 0.5*X))
#     print(pt)
plt.plot(pt)
plt.xlabel("Day")
plt.ylabel("Price")
plt.title("Simulated Stock price")
plt.show()

输出: