基于BP神经网络算法的汇率价格短期预测研究
2019-12-02黄山姜淳
黄山 姜淳
摘 要:随机信号预测在金融行业有着重要应用。文章基于Back Propagation Network的隨机信号预测方法,利用三种国际货币汇率价格的历史数据作为参考,对未来汇率价格进行短期预测,与实际价格进行比较分析,并得出结论。有助于对外汇市场的发展方向和趋势分析,无论是对监管层进行决策还是对投资者提供投资选择,都将会具有非常重要的现实意义。
关键词:BP神经网络;汇率;预测;Matlab
中图分类号:TP183 文献标志码:A 文章编号:2095-2945(2019)32-0001-05
Abstract: Random signal prediction has important applications in the financial industry. Based on the random signal prediction method of Back Propagation Network and using the historical data of the exchange rates of three international currencies as a reference, this paper makes a short-term prediction of the future exchange rate prices, compares them with the actual prices, and draws a conclusion. It is helpful to analyze the development direction and trend of the foreign exchange market and has a very important practical significance for making decisions on the regulatory level or to providing investment choices for investors.
Keywords: BP neural network; exchange rate; forecast; Matlab
1 概述
当前,随着我国资本市场的开放度呈现不断提高的趋势,在这样一个形势下,市场建设作用愈加明显,国家开放程度越来越高,人民币汇率将更加向市场决定的方向不断改革迈进。对汇率价格的波动预测,有助于对外汇市场的发展方向和趋势分析,无论是对监管层进行决策还是对投资者提供投资选择,都将会具有非常重要的现实意义。
汇率价格的波动是一种非线性动力学系统,投资商业行为和突发事件的影响,对汇率价格的预测也增加了难度。BP神经网络是一种复杂的智能信息处理技术,它的非线性泛化能力非常强大,也有着良好的自组织性、适应性以及学习能力和抗干扰能力,处理非线性复杂问题非常擅长,并且它能发挥训练速度快的优势,能自动从历史数据中提取有关活动的信息,可以克服传统定量预测方法的许多局限和困难,同时能避免人为的影响,因而为汇率价格的建模和预测提供很好的方法,预测准确率比传统统计方法高。因此众多学者采用神经网络方法来对汇率波动进行研究分析,徐缘圆通过BP网络利用MATLAB软件对人民币兑美元的汇率中间价进行预测[1];王杰、毛宇光研究了神经网络进行汇率预测的步骤,并依据不同的指标分析结果[2];王芮莹以人民币兑美元汇率历史数据作为样本,采用BP网络预测未来人民币兑美元汇率将缓慢增长[3];邓玲燕、刘立平基于BP网络对人民币汇率进行了准确预测,拟合结果与实际数据精确度达到99%[4];朱新玲、黎鹏基于BP网络拟合了人民币对美元名义汇率序列,并展开模拟预测[5];冯文芳提出BP网络较传统线性化变量预测方法更具优势,并对人民币兑美元汇率进行趋势分析[6];任金波、张文洁对人民币兑美元汇率进行了短、中、长期的预测,得出短、中期预测效果更加精准的结果[7];占祖桂运用BP网络准确拟合了香港离岸人民币汇率的过去值,并预测了未来趋势[8];陈静、李星野对美元兑欧元汇率进行趋势与波动分析并作出区间预测,均得出较好的预测结果,但都只对某一种货币对汇率情况进行了分析[9]。有些学者采用BP网络结合其他模型的方法进行了研究分析,衡亚亚、沐年国结合小波分析、BP-GARCH模型成功进行了预测[10];曾静把小波分析、AR模型、BP网络结合对汇率进行了预测[11];谢赤、欧阳亮讨论了三种神经网络预测模型的特点以及局限性,并用于汇率预测比较分析[12];王晓辉、张卫国、刘玉芳提出一种ICA与BP网络相融合的多维时间序列模型,实现融合预测[13],验证组合模型预测效果更好;廖薇结合神经网络和遗传规划对人民币汇率进行了预测分析[14];鱼丹基于遗传算法与BP神经网络进行汇率预测[15];欧阳亮提出预测汇率的小波分析与神经网络结合的组合方法[16],并证明模型存在的有效性;朱家明、胡玲燕采用ARIMA和BP网络方法对人民币汇率进行预测分析[17],得出短期预测效果更佳的结果;惠晓峰、胡运权、胡伟结合GA-BP网络与遗传算法对人民币兑美元汇率进行预测[18];徐卓顺、赵红强将小波-ARMA-BP网络模型混合起来进行预测[19];王晓琳利用遗传算法对BP网络进行优化,并进行了验证研究[20],证明遗传算法与BP神经网络的结合模型在汇率预测上比单一模型更加精确,但缺少对不同货币对汇率情况的比较。
本文重点针对汇率分析研究的复杂性,基于matlab神经网络工具箱,采用BP神经网络方法,依据欧元兑美元、美元兑人民币、美元兑日元三对主流国际货币汇率价格的同一时期历史数据,对汇率数据进行科学的预处理,建立合适模型对三种货币对汇率价格进行短期预测,取得了较好的结果。
2 BP神经网络算法设计
本文建模分析的总体流程如上图所示,具体有如下步骤:
(1)收集汇率价格历史数据,提取特征值,对特征值进行归一化处理。
(2)对样本集进行分类,一部分作为训练样本,一部分作为测试样本。
(3)用训练样本训练BP神经网络,得出输出层的权值,反复学习和训练达到误差要求停止。
(4)通过训练获得的参数来创建预测模型,预测测试样本数据
(5)观察并分析预测仿真结果,调整网络参数,重新进行训练,直至达到最优结果为止。
3 应用案例和实现
3.1 样本数据
本文选用的是美元兑人民币汇率、美元兑日元汇率、欧元兑美元汇率价格的历史数据,依据汇率价格波动随时间变化的特性,采取多步预测的方法,把前6天的开盘价、收盘价、最高价、最低价作为输入信号,一共24个信号,第7天的收盘价作为输出信号。
样本训练的数据应该尽可能全面,训练效果也就会越好,同时还可以避免出现过度训练。所以我们在选择合适的训练样本时,应注意到各种模式间可能存在的平衡,尽可能的选择更加全面的输入模型。
3.2 数据的预处理和后处理
为了给数据处理提供便利,保证程序运行时加快收敛,提高程序运行效率,有时需要对样本数据进行必要的预处理。首先要进行的就是归一化,通过归一化处理未来需要研究分析的数据,使其控制在我们研究所需要的确定范围内。本文采取的matlab里面的mapminmax方法,激活函数为tan-sigmoid函数,对数据进行归一化处理,处理后数据范围在-1至1之间。归一化公式为:
pn=2*(pd-minpd)/(maxpd-minpd)-1 (1)
其中,pd为原始数据,minpd和maxpd分别为pd的最小值和最大值,pn为归一化后的数据。
MATLAB中调用程序为[pn,st1]=mapminmax(pd),st1为归一化所使用的参数
3.3 建立BP网络并对网络进行训练
网络层数:理论上已经证明,具有一个隐含层的三层BP网络结构,能够逼近任何连续函数,因此隐含层数选择1个足矣。
前6天的开盘价、收盘价、最高价、最低价决定输入层神经元个数为24,第7天的收盘价确定输出层神经元个数为 1。通过经验确定初始隐含层神经元个数为10。训练次数1000,学习率为0.01,目标误差为0.00000001。采用newff函数来生成BP网络:net=newff(px,py,15)。其中,px代表训练样本输入,py代表训练样本输出,15为隐含层數。
Matlab中BP网络的训练我们通过train函数来进行,仿真用sim函数来完成,程序如下:net=train(net,px,py);s=sim(net,px);
训练算法选择trainlm,速度快,并且将输入60%作为训练,20%作为检验,20%作为验证,采用提前终止策略,能够防止过度拟合存在。
3.4 预测
对训练样本进行网络训练,并对测试的输出结果进行反归一化,并与目标输出结果进行比较。不断改变隐含层神经元个数,从10一直到30,最终选择最优隐含层神经元个数为15,把此时的神经网络参数作为初始设置,完成对美元兑人民币汇率、美元兑日元汇率、欧元兑美元汇率价格的预测。
4 仿真实验及结果分析
4.1 欧元兑美元汇率预测
选取2017年1月2日至2018年12月31日的汇率价格数据,一共521天,选取了前面450天的数据作为训练样本,第7天到第456天的收盘价作为训练目标输出,第451天到500天的数据作为测试输入,第457到506天的收盘价作为测试目标输出。
4.2 美元兑人民币汇率预测
选取了2018年1月1日到2019年3月29日共359天的数据,选取了前面303天的数据作为训练样本,第7天到第309天的收盘价作为训练目标输出,第304天到353天的数据作为测试输入,第310天到359天的收盘价作为测试目标输出。
4.3 美元兑日元汇率预测
选取2018年1月1日至2019年3月29日美元兑日元的汇率价格数据,一共有359天,选取了前面303天的数据作为训练样本,第7天到第309天的收盘价作为训练目标输出,第304天到353天的数据作为测试输入,第310天到359天的收盘价作为测试目标输出。
通过以上图片可以看出,三种货币对汇率价格预测趋势与汇率真实价格趋势基本相同,其中欧元兑美元的误差基本在0.01以内,相对误差在0.01以内;美元兑人民币的误差在0.04以内,相对误差在6*10^(-3)以内;美元兑日元的误差在0.96以内,相对误差基本在8*10^(-3)以内。本文的实验结果表明,通过BP神经网络方法对汇率波动的趋势预测精准,对汇率价格的预测也有很好的精度,对预测汇率价格有很强的适用性。
5 结束语
汇率系统是一个非常复杂的非线性系统,本文成功收集了三种货币对汇率数据并进行了科学的预处理,基于BP神经网络算法试验选择合适的隐含层数,合理展开训练,成功对同一时期三种货币对汇率的短期预测,预测精度更高。但这对汇率的预测研究还远远不够,后续想要更加精准的预测汇率趋势,还要展开大量深入的研究,一方面是要提取更加合理、有效的信息作为样本输入,另一方面在算法上还要争取结合其他模型的优势进行融合预测,进一步提高中、长期预测的准确度。
参考文献:
[1]徐缘圆.BP神经网络在汇率预测中的应用[J].时代金融(下旬),2013(1):147-148.
[2]王杰,毛宇光.基于神经网络的汇率预测[J].计算机与现代化,2006(2):105-108.
[3]王芮莹.基于BP神经网络的人民币汇率预测分析[J].经营者,2016(10):107-108.
[4]邓玲燕,刘立平.“新汇改”后人民币汇率预测[J].内江师范学院学报,2019,34(6):73-80.
[5]朱新玲,黎鵬.基于BP神经网络的人民币汇率拟合与预测研究[J].中南民族大学学报(自然科版),2010(3):113-115.
[6]冯文芳.基于BP神经网络的人民币兑美元汇率趋势分析[J].经济纵横,2014(1):46-47.
[7]任金波,张文洁.基于BP神经网络的汇率预测[J].消费导刊,2018(3):167,274.
[8]占祖桂.基于BP神经网络的香港离岸人民币汇率预测[J].吉林金融研究,2018(8):44-46.
[9]陈静,李星野.美元/欧元汇率的组合模型区间预测[J].科技和产业,2017,17(11):141-147.
[10]衡亚亚,沐年国.基于小波分析与BP-GARCH模型的人民币汇率预测研究[J].应用技术与研究,2018,17(12):146-150.
[11]曾静.基于小波分析的汇率预测模型研究[D].华中科技大学,2009:1-46.
[12]谢赤,欧阳亮.汇率预测的神经网络方法及其比较[J].财经科学,2008(5):47-53.
[13]王晓辉,张卫国,刘玉芳.融合ICA的BP网络在人民币汇率预测中的应用[J].系统工程学报,2014,29(3):344-352.
[14]廖薇.基于神经网络和遗传规划的汇率预测技术研究[D].华东师范大学,2010:1-135.
[15]鱼丹.基于遗传算法的BP神经网络在汇率预测中的应用[J].科技创新与应用,2019(3):100-101.
[16]欧阳亮.基于小波分析与神经网络的汇率组合预测研究[D].湖南大学,2008:1-61.
[17]朱家明,胡玲燕.基于ARIMA和BP神经网络对人民币汇率预测的比较分析——以美元人民币汇率为例[J].重庆理工大学学报(自然科学版),2019,33(5):207-212.
[18]惠晓峰,胡运权,胡伟.基于遗传算法的BP神经网络在汇率预测中的应用研究[J].数量经济技术经济研究,2002,19(2):80-83.
[19]徐卓顺,赵红强.人民币兑美元汇率预测的单一和混合模型比较分析[J].商业时代,2014(14):73-75.
[20]王晓琳.遗传算法与神经网络在汇率预测中的应用[D].青岛大学,2006.
作者简介:黄山(1989-),男,在职硕士研究生,研究方向:通信与信息系统;姜淳(1965-),男,博士,教授,博士生导师,研究方向:通信与信息系统。