根据 Python 中的给定方程模拟股票价格
Simulate stock price based on a given equation in Python
如何使用以下等式生成价格时间序列:
p(t) = p0(1+A * sin(ωt +0.5η(t)))
其中 t 的范围从 0 到 1 在 1000 时间步长,p0 = 100,A = 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()
输出:
如何使用以下等式生成价格时间序列:
p(t) = p0(1+A * sin(ωt +0.5η(t)))
其中 t 的范围从 0 到 1 在 1000 时间步长,p0 = 100,A = 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()
输出: