0

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

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

其中t1000 个时间步长范围内从01 , p0 = 100A = 0.1ω = 100η(t)是具有零均值单位方差的iid 高斯随机变量序列。

我已经使用如下代码生成价格,但似乎不是必需的。所以我需要社区的帮助。提前致谢。

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()
4

2 回答 2

2

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

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()

这给出了情节 在此处输入图像描述

于 2020-03-31T08:39:52.823 回答
0

我的试用,不知道是否正确,欢迎给我一些意见。

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()

出去:

在此处输入图像描述

于 2020-03-31T08:41:23.793 回答