摘 要:人工智能有朝一日必定会在金融策略的制定上发挥重要作用,但就目前来说技术上还存在一些难点问题,在本文当中重点基于现有的技术条件,探讨了人工智能在金融领域当中的应用,突出了人工智能在股票走势预测上的一些内容,仅供参考。 关键词:人工智能;金融;应用;股票 伴随人工智能、云计算、大数据等技术的崛起,金融行业正在智慧金融的大道上大步前进,这是金融与科技结合的必然趋势。股市在金融领域是重要一环,投资股市的目的当然是为了盈利,这其中有很多的影响因素导致风险非常大,在技术层面上就考虑用人工智能技术来预测股市的涨跌,理论上这种方式是可行的,为此本文则重点讨论人工智能在股市预测上的应用。 一、关于人工智能与股市涨跌 随着计算机性能不断提升,大数据技术的不断进步,人工智能在近些年来发展非常迅猛,深度学习神经网络阶段发生了三大具有突破性的事件,将人工智能推上了风口浪尖。具有代表性的事件包括2012年Google无人驾驶汽车上路,2013年深度学习算法在语音和视觉识别上有重大突破,2016年AlphaGo战胜围棋冠军。随着数据量不断增大,计算能力不断增强,深度学习的影响力也越来越大,从目前的形势来看,所接触到的人工智能,可以简单理解为通过历史数据结果,生成复杂多元的公式,然后根据公式拟合所有数据,并套用公式得到实际场景的结果。 从技术层面上来讲,只要存在规律的事物,基本都能够通过学习相关的特征数据来做决策。股市的变化也是有特征的,具体来说,股市价格的变化,实质是一个随时间变化的序列。在金融领域有专门的时间序列分析方法,该方法是通过历史数据的处理,寻找前后数据之间的关系并建立关系模型,然后基于历史数据和模型来预测时间序列的未来值。因此用人工智能来预测股市涨跌成为可能。现在也有一些实践和探索,比如投顾问,是人工智能股票预测引擎,其基于大数据提取多股票特征,应用于tensorflow、LSTM预测股票未来五日开盘价、收盘价、最高价、最低价,并使用Recursive Feature Elimination和Pearson相关系数等进行多轮训练,移除若干权值系数特征,再基于新的特征集进行下一轮训练,保证稳定上升的准确性。现在股市标注清晰、数据量庞大,应用简单、直接变现,股市AI已经具备人工智能应用爆发的要素。 二、关于人工智能在金融领域的应用 对于股市而言虽然有特征,但是股市确实一个非线性,混沌行的复杂非线性系统。影响股市涨跌的并不仅仅只有历史数据,还有更多的因素,包括公司的近况,股民对股票的态度,政策方面的影响等等,而这些因素存在相互聯系相互影响的关系,牵一发而动全身,这就是所谓的混沌现象,虽然混沌现象目前不可预知,但是理论上用人工智能来预测股市涨跌是可行的,不过仅仅简单地将历史数据纳入到关联模型当中来预测涨跌,往往效果不太好,但不意味着人工智能就不能预测股票涨跌,大概率是技术条件还不具备。为此我们从一个深度学习的练习项目来探讨人工智能在股票市场上的应用问题。 (一)项目的概况 本项目是为了实现人工智能股市价格预测的一个深度学习练习项目,旨在通过机器学习算法,结合过去几年以及某只股票相关的K线图走势,公司的相关报道来作为数据集,通过训练来得到可预测的股市价格机器学习模型,并用这个模型来预测股市价格的涨跌。项目拟使用线性回归,神经网络以及随机森林来进行预测,并对三种算法的预测效果进行比较。项目使用Python编程。 (二)自然人如何投资股市 在编写人工智能程序之前,需要考虑自然人是如何投资股市的,这是一个关键点,因为股市时一个复杂非线性系统,即混沌系统,影响股市价格走向的因素很多。在投资股市时,往往会在决定购买哪只股票之前,会查询与股票相关公司的信息,如果查到的信息以正面信息为主,那么投资这只股票的回报率就可能会高一些,当然还需要看K线图。总结起来则可以确定机器学习模型需要股价数据和对股票的情感数据。 (三)数据获取 机器学习模型需要数据,没有数据就没办法训练机器学习模型。所以在数据获取方面股价数据使用Pandas进行分析,对于情感数据则使用NLTK来进行处理。具体来说读取往年股价数据,并对其进行简单处理后生成Pandas的DataFrame格式,构成系列化,并成为文件的Python对象。通过print(df-stocks)来查看df-stocks DataFrame对象并输出可得到股票的股价以及相关文章内容,进一步开始分析股票的情感数据与股价数据。先将price Series从df-stocks中独立出来,成为单独的DataFrame对象,然后添加几个新的Series,随后使用NLTK对文章进行情感分析。使用NLTK的情感强度分析器对文章情感进行分析,并将情感强度写入新独立出来的DataFrame中,其中的neg Series存放文章的负面指数,neu Series存放中立指数,pos Series存放正面指数,Compound存放合成指数,然后将数据输出,得到相应的情感分析数据。 (四)划分数据集 根据输出的情感分析数据,开始时间为2007年1月1日,结束时间是2016年12月31日,再8:2的比例来划分训练集和测试集。划分完df后,新建一个对每个时间点情感评分的list,将训练集和测试集的数据加入其中。因为要预测股票涨跌,也就是预测股价的走势,那么定义一个y标签作为股价。 (五)股市涨跌预测 1.随机森林算法预测 使用Scikit learn,其中封装好了随机森林算法。 在控制台输入rf = RandomForestRegressor) rf.fit(numpy_df_train,y_train) #print(rf.feature_inportances) prediction,bias,contributions = ti.predict(rf,numpy_df_test) print(preditcion) 当看到控制台有输出以后,输出正确那么可以证明随机森林预测成功,为了可视化分析因此使用Matplotlip來绘图。绘制出没有平滑的股价走势,并且保存为RF-noSmoothing.png。输出到桌面,就可以得到一个预测股价走势和真实股票走势的对比图,按照走势图来看,预测的数据和实际的股价走势存在比较大偏差,因此还需要进一步对数据进行处理,通过添加一个常数来表示测试阶段的闭市股价。然后再次通过Matplotlip绘制走势图,修正以后预测走势曲线与实际的股价走势曲线接近,但是预测走势曲线抖动比较明显,需要进行平滑。而平滑处理方法可以使用Pandas的EWMA来实现。但平滑后发现预测走势与最后部分真实的股票价格走势出现了相反的情况,进一步处理,只绘制平滑后的实际故事走势与预测股价走势的折现,结果还是表面预测效果并不是很理想。 2.线性回归算法预测 因为随机森林预测效果不佳,为此使用基于TensorFlow的线性回归算法,基本上的思路与上文的思路相当,只是TensorFlow的操作不一样。实际上线性回归模型在机器学习和统计领域,是非常简单的模型,但也是应用最广泛的模型。在具体的使用当中基于TensorFlow先导入需要的Python包,然后设置Pandas与TensorFlow的关联,然后加载上文建立的数据集,使用numpy随机方法对数据进行处理,随后通过Pandas提供的describe()函数来进行数据预览。在tensorFlow中用特征列来表示特征的数据类型,为此先定义输入特征,并配置素质特征,同时定义标签。配置一个线性回归模型,然后用GradientAescentOptimizer训练这个模型。按照同样的方式输出图形后进行分析,根据预测结果来看,效果要比随机森林算法要好一些,但是参考的价值并不大。 3.神经网络算法预测 同样结合Scikit Learn的MLP来对股价进行预测分析,思路同上,加载数据集,分隔出数据集和测试集,并计算情感分数,创建一个MLP模型,按照上文的方式绘制出走势图,看情况进行修正,输出走势图,最后再进行平滑。基于这种方法的预测相对来说效果要好很多,至少对比前两者来看效果最好。 三、关于金融时间序列中的人工智能 在金融时间序列分析当中早期使用的是时间序列的分析方法,表现为基于统计和线性的方法,比如移动平均算法,指数平滑算法,自回归移动平均算法等。一定程度上来说基于统计和线性假设前提下的模型在一定程度上满足了性能指标需求,可以在特定领域取得比较理想的预测效果,但金融领域具有非线性、混沌性特征,时间序列分析方法并不能直接应用在金融时间序列分析当中,从上文的分析中可知线性回归模型这种方式并不能很好地解决非线性环境下的噪声干扰。所以最好的方式还是结合人工智能的方法来进行金融时间序列分析,其中涉及了计算智能、遗传算法、模糊分析方法、智能体、神经网络等。基于前文的分析来说神经网络算法是比较理想的算法,实际在人工智能应用与金融领域的实践当中更多的还是使用的神经网络。不过不可靠性会比较大。所以人工智能理论上在预测股票上是非常可行的,人工智能有朝一日会主导金融策略的制定,但目前来说还需要技术层面上的进一步探索。 结束语: 综上所述,人工智能在金融领域的应用理论上是可行的,以目前的技术条件来说,存在一定的技术难题,解决了这些问题人工智能在金融领域必定会发挥出非常显著的作用,在本文当中基于现有的技术条件分析了人工智能在股票市场上的应用问题,希望能够提供一定的参考价值。 参考文献: [1]中国人民银行武汉分行办公室课题组.人工智能在金融领域的应用及应对[J].武汉金融,2016,(07):46-47,50. [2]杨卓越.人工智能在金融领域的应用现状及安全风险分析[J].金融经济(理论版),2017,(01):147-148. [3]张书乐.人工智能+金融的几道"坎"[J].金融博览,2017,(04):50-52.