探索GRU(RNN)预测股价

发布于: 雪球转发:0回复:5喜欢:0

先说结论:预测数据还无法使用,不过看到点希望。

1)模型

GRU(input_size=5,hidden_size=512)+nn.Linear(512, 50), nn.Tanh(),nn.Linear(50, 1))

loss_func = torch.nn.MSELoss()

optimizer = torch.optim.Adam(model.parameters(), lr)

2)训练和预测数据

使用ETF来训练和预测。ETF只使用200天以上的股票型基金(去掉国外、港股、期货、货币基金、黄金白银、金属、国债、城投等),筛选出183支ETF。

每支ETF都用于训练和测试。前边训练,后边12天+(batch会丢掉一部分训练数据)做测试评估。

每天的数据是5维(当日涨幅、成交量涨幅、开盘涨幅,最高涨幅,最低涨幅)

预测随后5天的涨跌。

3)结果

经过1000轮以上训练,183支股票的训练误差都能同时收敛到0.5以内。

看图:

前边的训练数据拟合得很好,但是后边的评估数据误差还是很大。原因未知,后续继续探索改进。

2021年11月8日收盘后预测后5天涨幅(其中loss是前一周的总预测误差):

0 sh588000 科创50ETF 0.32_loss=3.19

1 sz159949 创业板50ETF -1.28_loss=3.24

2 sh510050 上证50ETF 0.61_loss=17.32

3 sh510300 沪深300ETF -0.43_loss=13.94

4 sh510500 中证500ETF 1.37_loss=1.20

全部讨论

2022-09-21 10:29

我觉得这个预测为什么会失败呢,因为我用了真实的股价走势做预测,而影响股价走势的因素很多,所以模型学习到了很多错误的东西。
下一步准备手动做标注,让模型只学习人们总结的技术分析方法,做技术分析预测。

2021-11-09 13:11

特征是不是太少了?