基于人工智能的量化交易系统设计与实现
2022-07-07刘力军梁国鹏
刘力军 梁国鹏
摘 要:随着计算机科学技术的快速发展,人工智能在各个领域的应用也越来越广泛,其与各个学科技术相结合,已成为各领域人士关注的焦点。将人工智能应用于量化交易,通过搭建不同的神经网络模型,对股票历史数据进行挖掘,找到股票历史价格与未来价格的非线性关系,实现对未来价格的预测,早已成为历史发展的必然趋势。通过对机器学习展开研究,基于LSTM神经网络实现股票预测模型,为投资者提供参考从而带来更高的收益。
关键词:人工智能;神经网络;量化交易
中图分类号:TP18 文献标识码:A文章编号:2096-4706(2022)04-0045-03
Design and Implementation of Quantization Trading System Based on
Artificial Intelligence
LIU Lijun, LIANG Guopeng
(Nanjing Audit University Jinshen College, Nanjing 210023, China)
Abstract: With the rapid development of computer science and technology, the application of artificial intelligence in various fields has become more and more extensive, and its combination with various disciplines and technologies has become a focus of attention of people in various fields. Applying artificial intelligence to quantization trading, through building different neural network models, mining historical stock data, finding the nonlinear relationship between stock historical prices and future prices, and realizing the prediction of stock price have long become an inevitable trend in historical development. This paper conducts research on machine learning and implements a stock prediction model based on LSTM neural network to provide investors with reference to bring higher returns.
Keywords: artificial intelligence; neural network; quantization trading
0 引 言
其實传统交易和量化交易最主要的核心是要有赚钱的本事,量化无非是把这些本事经验总结出一套规律,根据这个规律写成代码让机器执行。量化交易就是根据对历史行情的进行回测,总结出一定的交易规律,即什么情况下应该如何交易,找到适合某只股票的最优策略,根据这种策略或规律来进行自动化交易获得更大收益。
随着计算机技术的不断发展,依托机器学习技术研究股票市场变化规律方兴未艾,借助于线性回归、支持向量机等机器学习算法对股票市场进行分析并建立模型[1],预测股票市场未来一段时间的走势已成为市场的一个趋势。
1 人工智能相比于传统量化投资的优势
传统的量化交易策略往往通过建立数学模型实现,在股票市场中试图寻找到规律所在,但市场是千变万化的,找到的规律可能也只是暂时的,通过这样的方式进行交易,在市场稳定的时候会有客观的收益,市场一旦不稳定或有其他的状况收益就会急剧减少,甚至产生亏损。人工智能更加强调一个学习的过程,通过AI算法,学习投资过程中的逻辑,将行业、市场、历史数据等因素融入投资模型的载体,在此基础上进行投资组合管理。总的来说,人工智能投资是在人类训练、知识灌输以及自我演化的过程中,形成机器自己的投资决策。
2 研究现状
2.1 国内
国内量化交易市场还处于发展初期的阶段,目前期货市场方面已经有了一定的运用和积累,在证券市场的运用还处在刚刚起步的阶段。随着近年来人工智能的深入发展,机器学习技术在程序化交易中起着越来越重要的作用,它主要着眼于解决线性模型的缺陷和弊端。
2018年,任君等通过对比实验证明了经过改进后的弹性网正则化LSTM模型,对道琼斯指数具有更加良好的预测效果,而且RMES最小,模型精度最好[2]。
2.2 国外
国外的量化交易发展比较早,量化投资的技术从各方面都要远超于陈旧的投资方式,已经达到了可以在秒内进行投资交易的程度[3]。在机器学习的应用方法上,国外的研究以构造量化交易投资策略为主,早在20世纪,就有利用机器学习对股票进行预测的尝试。其技术储备量十分充足,所运用的策略模型和研究水平均高于国内,此外还不断有计算机科学、数学等学科的专家从事量化交易相关技术的研究,量化交易技术的发展也在不断地加速。
2016年,狄克逊,迭戈·克拉巴扬和金勋邦等人提出基于深度学习的深层神经网络的金融市场预测,在5分钟间隔之内对43中不同的商品和外汇期货的价格进行的简单交易策略验证[4]。BF31ABF1-A5C5-4197-9858-2C569ACF40C2
3 相关技术
3.1 开发语言
本系统采用Python语言开发,Python语言具有简单易上手且功能强大等特点,是当今主流的开发语言,市场上大多量化交易系统均采用了Python来开发。本系统所需要的一些工具,也使用了成熟的Python第三方库,如数据处理的numpy、pandas,获取股票数据的tushare,数据可视化matplotlib,系统界面开发的tkinter等。
3.2 金融知识
量化金融是一个系统性的投资和交易方式,不仅包含编程技术,还包含金融,数学,统计等相关知识。量化交易是需要了解一定的金融知识才能够更好地掌握交易投资过程,并且需要了解所投资市场的交易规则以及一些有效的技巧方法。比如一些财务数据的计算规则,或者一些金融相关因子的计算方法等都需要一定的金融知识。
3.3 技术指标
技术指标是通过考虑市场行为的各个方面,建立一个数学模型,给出数学上的计算公式,得到一个体现股票市场的某个方面内在实质的数字[5],常用的技术指标包括:移动平均线(MACD)、随机指标(KDJ)、布林带(BOLL)等,技术指标的存在让我们能够更清楚地看到市场当前的状态,从而更好地做出交易决策,也在一定程度上减小了因为情绪化交易产生的不必要的亏损。
3.4 机器学习
说到机器学习也就会想到人工智能和深度学习,其实三者是包含关系,深度学习属于机器学习,而机器学习又属于人工智能,由于本文使用的是机器学习,所以着重讲一下机器学习。机器学习研究和构建的是一种特殊算法,能够让计算机自己在给定的输入数据和输出数据中学习从而达到预测未知数据的目的。
人工神经网络是机器学习的子集,神经网络由节点层组成,包括输入层、隐藏层和输出层,其中隐藏层可以是一层或多层,每一层又由若干个神经元组成,前一层的神经元与后一层的神经元依次连接,从而实现了整个神经网络,神经网络越复杂,其模型就越可能能够预测关系更为抽象的数据。
4 基于机器学习网络模型的构建
对于机器学习网络模型的构建,其实质就是利用已有的海量数据训练模型,使模型寻找到输入数据和输出数据所存在的函数关系,再根据两者时间的非线性关系,将新的数据输入模型中,模型给出的新的结果即为模型的预测结果。
本模型使用Keras框架构建,Keras是一个高度模块化的神经网络库,它开发重点是支持快速的实验,让开发者能够以更短的时间把自己的想法转化为实验结果,同时也能够让初学者更快地入门。
4.1 神经网络模型的选择
LSTM神经网络模型是一种特殊的RNN类型,同其他的RNNs相比可以更加方便地学习长期依赖关系,因此有很多人试图将其应用于时间序列的预测问题上。股价的走势就是一个时间序列,因此使用LSTM神经网络模型来预测股票未来的走势无疑是一个不错的选择。基于LSTM神经网络模型的预测股票未来价格走势流程图,如图1所示。
4.2 输入数据的获取
输入数据的特征会直接影响到模型输出的结果,因此如果预测股票价格未来一段时间的走势,以影响股票价格最大的四种基础数据作为模型的输入无疑是一个更好的选择,如:开盘价、收盘价、最高价和最低价。
本系统使用Python的Tushare模块来获取股票数据,通过Tushare来获取平安银行6年的股票数据,具体操作:
import tushare as ts
ts.set_token(‘) #引号内填写在tushare平台申请的token
pro = ts.pro_api()
data = pro.daily(ts_code=000001.SZ, start_date=20200101, end_date=20210106)
4.3 處理数据
获取到股票数据后要对其进行数据预处理,才能传给模型进行训练。LSTM神经网络模型往往以数据单元的行数作为数据,这就需要用到滑动窗口技术,通过滑动窗口从股票价格时间序列数据中截取到一个个数据单元作为模型的输入数据。本模型将前60个交易日的数据作为输入,第61个交易日的数据作为输出,重要操作已在注释中标明,具体操作:
def create_dataset(data, time_steps):
dataX, dataY = [], []
for i in range(len(data) - time_steps):
a = data[i:(i + time_steps), 0]
dataX.append(a)
dataY.append(data[i + time_steps, 0])
return np.array(dataX), np.array(dataY)
4.4 LSTM神经网络模型的建立
4.4.1 LSTM神经网络模型的参数确定
模型的参数主要包括神经网络层数和神经元个数,两个参数的变化都会影响到模型结果的输出,所以参数的确定至关重要。
对于神经网络层数的确定,层数多时可以提高精度、降低误差,但随着层数的增加,整个神经网络的复杂度也会变得更大,训练模型时也会消耗更多的时间,相比于改变神经网络层数,改变神经元个数对系统的性能影响较小,所以确定好神经网络层数后,适当的改变神经元个数更容易观察和调整。
对于神经元个数而言,输入层神经元个数即为影响股票价格的特征个数,可根据自己所研究的特征进行确定;输出层神经元为预测日的收盘价或当日某时刻的价格,所以输出神经元个数为1;隐藏层的神经元个数目前没有统一的方法确定,可以通过时间来调整个数,最终确定一个最优值。BF31ABF1-A5C5-4197-9858-2C569ACF40C2
4.4.2 LSTM神经网络结构图
本模型使用四层神经网络,包含两个隐藏层,第一个隐藏层包含256个神经元,第二个隐藏层包含128个神经元,具体结构如图2所示。
4.4.3 LSTM神经网络模型的实现
模型的结构确定后,还需要确定模型训练时的损失函数、优化器、迭代次数等参数,每个参数的变化都会直接影响到模型预测的结果,因此,在模型的实现过程中一般需要经过反复修改测试,才能使模型的预测结果达到一个更优的水平。本模型使用“mean_squared_error”损失函数,使用“adam”优化器,训练模型迭代100次,每次训练抓取的样本数量为64,模型实现的具体操作:
model = Sequential()
model.add(LSTM(128, input_shape=(time_steps, 1),return_sequences=True))
model.add(LSTM(256,return_sequences=True))
model.add(LSTM(128))
model.add(Dense(1))
model.compile(loss=mean_squared_error, optimizer=adam, metrics=[‘accuracy])
model.summary()
model.fit(trainX, trainY, epochs=100, batch_size=64, verbose=1)
4.5 模型測试
模型训练好后要对模型进行测试,验证模型预测的准确性,根据准确性还可以再适当调整参数,使模型达到更高的准确性。先将测试集数据取出并进行预处理,再传给预测模型,将预测结果使用Matplotlib绘制出来,并将真实数据绘制到一起,通过对比两条折线,就可以更直观地看到预测的准确性,预测结果如图3所示,其中红线是预测值,蓝线是真实值。
5 结 论
本文基于keras框架,使用了LSTM神经网络,通过对历史数据的挖掘处理,训练出预测股票价格走势的模型,用户选择相应的股票和时间,系统将预测出该时间后的价格走势,为投资者提供一定的参考和指导,让投资者产生更高的收益。当然本模型对于股票数据和时间选择上还存在一定的局限性,未来可以进一步丰富专家经验的规律特征,相信随着计算机技术的发展和金融工程的不断完善,不久的将来,通过人工智能来预测股票走势将成为金融市场的主流。
参考文献:
[1] 于龙飞.基于深度学习的股市量化交易系统设计与实现 [D].济南:山东大学,2020.
[2] 任君,王建华,王传美,等.基于正则化LSTM模型的股票指数预测 [J].计算机应用与软件,2018,35(4):44-48+108.
[3] 郭笑宇.量化投资交易策略研究 [J].财经界,2019(3):16-17.
[4] 赵雪.深度学习在量化交易中的应用 [D].北京:北方工业大学,2019.
[5] 王高鹏.证券投资技术分析方法应用研究 [J].现代商业,2013(27):48-49.
作者简介:刘力军(1979—),男,汉族,江苏南京人,讲师,硕士,研究方向:网络技术;梁国鹏(1999—),男,满族,河北承德人,在读本科,研究方向:网络工程。BF31ABF1-A5C5-4197-9858-2C569ACF40C2