用GM(1,1)模型预测未来特定时间内的股票价格的Python代码
时间: 2024-04-02 16:34:15 浏览: 50
GM(1,1)预测
5星 · 资源好评率100%
以下是使用 GM(1,1) 模型预测股票价格的 Python 代码:
```
import numpy as np
def GM11(x0):
# 累加生成序列
x1 = np.cumsum(x0)
# 紧邻均值生成序列
z1 = (x1[:-1] + x1[1:]) / 2.0
# 紧邻均值生成序列矩阵
B = np.vstack([-z1, np.ones_like(z1)]).T
# 原始数据矩阵
Y = x0[1:].reshape((len(x0) - 1, 1))
# 计算参数矩阵
[[a], [b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)
# 还原值
result = np.zeros_like(x0)
result[0] = x0[0]
for i in range(1, len(x0)):
result[i] = (x0[0] - b / a) * np.exp(-a * (i - 1)) - (x0[0] - b / a) * np.exp(-a * i)
# 预测未来值
future_result = np.zeros((5, ))
for i in range(len(x0), len(x0) + 5):
future_result[i - len(x0)] = (x0[0] - b / a) * np.exp(-a * (i - 1)) - (x0[0] - b / a) * np.exp(-a * i)
# 返回预测结果
return result, future_result
# 示例数据
x0 = np.array([12.3, 13.2, 14.5, 15.8, 16.5, 18.2, 20.3, 22.5, 25.6, 27.8])
# 预测结果
result, future_result = GM11(x0)
print("历史值预测结果:", result)
print("未来5期预测结果:", future_result)
```
其中,`x0` 是历史数据序列,`result` 是历史值预测结果,`future_result` 是未来 5 期预测结果。可以根据需要修改 `x0` 的值,来预测不同的股票价格。
阅读全文