前言

AI技术的快速发展,自然会让人们想到是否可以用到股票预测上面,毕竟财富自由是无数人的梦想,对于此国外也已经有很多的文献进行了报道,使用的神经网络包括但不限于循环神经网络(RNN),长短记忆神经网络(LTSM)、卷积神经网络(CNN)等。

关于神经网络的介绍已经有很多的书籍,这里推荐复旦邱锡鹏老师的《神经网络与深度学习》。

本策略的核心原理:主观交易者可以利用历史K线进行交易,比如著名的W底,M顶等。通过人对历史K线的总结可以对未来的走势进行预测

获取数据

要想构建一份合格的量化策略第一步是获取数据,这个我们可以通过akshare进行获得。比如我们可以使用著名的沪深300指数,这里为了方便交易我们使用目前最大的ETF 沪深300ETF159915)。

Python
#获取个股
import akshare as ak
ak_code = 'sh000300'
df = ak.stock_zh_index_daily_em(symbol=ak_code)
df.to_csv('./data/'+ak_code+'.csv',index=False)
df.tail()

运行结果如下:

 

 

数据处理

获得好数据就要开始对数据进行处理。我们先试用最简单的人工神经网络(ANN),神经网络我们可以将其当做一个万能拟合函数,关于我们是要搞清楚输入的x是什么,输出的y是什么。这里就遇到第一个陷阱。有的人可能会觉得输入就是过去的openclosehighlowvolumeamount,输出就是明日的close不久行啦。这个时候你使用神经网络拟合,包括(LSTM),你会发现神经网络偷懒了,是的,他一般就是你当日的close加一个小的随机噪声然后就传给你了,最关键的是你训练的曲线非常完美,loss下降也是非常漂亮,但是实盘就不行了。

所以,是不能用原始数据,这个时候我们一般使用return,即涨跌幅。我们需要对所有数据都使用涨跌幅。

Python
for k in ["open","high","low","close",'volume','amount']:
        for i in range(0, lookback_minutes):
            ts[k+"Lookback%s" % str(i+1)] = ts[k].shift(i+1).copy()
        for i in range(0, lookforward_minutes):
            ts[k+"Lookforward%s" % str(i+1)] = ts[k].shift(-(i+1)).copy()

类似上面那样,这样我们的训练输入x就是OHLCV数据,输出就是明日的涨跌幅。

训练我们就使用最简单的多层感知机

Python
model = MLPClassifier(alpha=1,early_stopping=False,validation_fraction=0.1,max_fun=15000,tol=0.0001,\
                      hidden_layer_sizes=(300,),random_state=55, max_iter=50000,activation='relu',\
                      solver='lbfgs',warm_start=False ,\
                     batch_size='auto')
                     

然后预测

Go
model.fit(X_train,y_train)
pre_test = model.predict(X_test)
# print("AUC Score (Train): %f" % metrics.roc_auc_score(y_test, pre_test))
print("Hit-Rate(Test): %s" % model.score(X_test, y_test))
print("%s\n" % confusion_matrix(pre_test, y_test))
print("Hit-Rate(Train): %s" % model.score(X_train, y_train))
print("%s\n" % confusion_matrix(model.predict(X_train), y_train))

一般情况下,你很容易获得结果是下面这样的

 

 

即训练集完美训练,测试集基本就是随机预测,这个时候就说明过拟合了,使用一些调参技巧,逐渐提高测试集的准确率,这里还有一个重要点需要注意,就是一般不可以针对test数据集进行调参而是准备交叉验证集进行调参,不然实盘有可能继续过拟合。因为test数据集只能使用一次,即:你把所有数据集都优化好了,拿出来实盘(test集)。

最后对测试集进行回测与沪深300实际走势对比:

 

 

可以看到,可以明显跑赢沪深300基准。过去四年可以实现超额30%+

当然上面只是一个最原始的模型,后面还会继续进行优化。如果你想获得全部代码,请关注公众号小李同学314,后台回复AI预测股票,就可以获得完整代码.

 

posted on 2025-06-08 15:58  小李同学314  阅读(30)  评论(0)    收藏  举报