基于LSTM的比特币时间序列预测的实证分析
2020-03-08何雄伟林海
何雄伟,林海
(1.惠州卫生职业技术学院,惠州516001;2.惠州城市职业学院,惠州516001)
本次研究利用2014-2017年的比特币交易数据,对简单LSTM比特币时间序列预测实验展开了回顾。探讨两类LSTM模型的预测值与真实值的关系,并结合热图指出可能高度相关的变量。在2015-2020年的实时数据集中,利用Python3.7、Keras、LSTM等工具,给出预测值与真实值的折线图。重点对近30日的数据进行比对,同时利用前置1日的方法,并且对真实回报、预测回报进行比对,进而发现LSTM模型对于比特币时间序列预测的不足。实证分析说明,LSTM对判断比特币市场的趋势是具备一定价值的,但由于影响比特币的因素非常多而复杂,仅仅依赖时间序列是远远无法达到较好目标的。
LSTM;比特币;预测值;真实值;MAE
0 引言
自从Nakamoto(2008)首次引入比特币以来,比特币一直受到广泛关注[1]。作为一种新型的加密货币,比特币可以随时在线交易并交换成几种低成本的主要货币(Fry和Cheah,2016;Kim,2017)[2]。与其他传统金融资产相比,比特币为投资者提供了投资组合的新工具管理。在过去的几年中,关于比特币市场的研究很多,如Brandvold等(2015)、Dwyer(2015)、Urquhart(2016)、Nadarajah和Chu(2017)、Balcilar等(2017)实证分析了比特币交易量与回报,但没有证据表明交易量有助于预测比特币回报的波动性[3]。例如,Urquhart(2016)使用了很多测试以分析比特币市场的效率,并得出结论,在后期它会变得更有效率样品[4]。Nadarajah和Chu(2017)对比特币的奇数整数幂转换采用了八种不同的测试回报并表明回报效率较弱[5];Urquhart(2016)的测试,表明滚动窗口方法可以帮助获得更可靠的结果[6]。Yermack(2015)指出是比特币表现为高波动性股票而且大多数关于比特币的交易都是针对投机性投资的[8]。Patacca(2019)证明比特币价格和波动性受交易量或交易数量,交易数量的影响[9];Bukovina等(2016)指出比特币价格与获得的情绪衡量有关[10]。
机器学习技术被用于模拟比特币价格。Madan(2015)采用随机森林,Jang、Lee(2018)采用贝叶斯神经网络,McNally(2016)采用LSTM神经网络[11]。
截止2020年7月12日,Kaggle搜索“Bitcoin”有comments569个、notebooks有271个、Topics有140个、datasets132个、User有44个、Competitions有4个。
2018-2020年知网收录核心期刊论文,包含“LSTM”文献有1246篇;其2015-2020年主题包含“LSTM”并含“时间序列”的文献有168篇。其主题主要包括时间序列、LSTM、预测模型、深度学习、循环神经网络、ARIMA等。如图1所示。
图1 2015-2020知网LSTM时间序列的期刊主要主题图
谢飞等(2020)、包振山等(2020)、戴邵武等(2020)、欧阳红兵等(2020)、乔若羽(2019)、杨青等(2018)、史建楠等(2018)、黄婷婷等(2018)将LSTM为基准模型运用与金融预测中[12];Luisanna等(2014)、Buchholz(2012)、刘力臻等(2015)、Garcia等(2014)、Shah等(2014)、石奕磊(2020)、李迎路(2019)、杨璇(2019)、李靖(2019)、艾青(2015)、梁秋等(2015)都运用了LSTM作为基准模型运用于比特币时间序列的预测中[13]。
从国内外学者研究可知,LSTM模型最近在时间序列上变得越来越流行预测系统,但尚未达成共识。
1 LSTM神经网络技术
深度学习LSTM神经网络克服了与递归神经网络(RNN)有关的消失梯度的问题,方法是用存储单元替换RNN中的节点和门控机制[14]。在这方面,一个有吸引力的深度学习神经体系结构,主要是因为其同时存储长期和短期时间信息的功效。LSTM拓扑是递归的,其中单元之间的连接形成有向循环/循环允许数据输入信号向前和向后流动在网络内。随后,保留过去的信息以便将来处理[15]。GRNN是一个基于并行和内存的系统,可以估计连续变量的回归面,同时为快速提供学习和收敛。样本数量变得非常大时的最佳回归曲面大。由于这些独特的吸引人的功能,LSTM和GRNN成功应用于各种数据分析问题建模[16]。其中LSTM的标准模块结果,如图2所示。
图2 标准的LSTM神经网络结构
深度学习LTSM神经网络系统不仅保持自发的方式相邻的时间信息控制长期(LT)信息。换句话说,LSTM可以保留先前的信息,这可以大大帮助提高其学习信号序列和固有非线性的能力模式。具体来说,LTSM的主要创新是引入“控制门”的概念[17]。例如,以输入为条件,LSTM存储单元可以记住或忘记任何单元状态。它的单元由三个门支持:输入,忘记和输出。输入门决定应处理多少当前信息作为输入以生成当前状态,而忘记门提取出从最后一个可以保留多少信息先前状态。最后,输出门过滤出可以实际上被视为重要并产生输出。基本上是一个预测。让我们将所有单元格的输入表示为xt,将之前的时间步输出表示为ht-1。然后,忘记门tf计算输入[18]。使用S型函数的单元格状态Ct-1,由下式给出:
输入门它将计算要更新为Ct的值遵循:
随后,输出门ot控制输出值:
最后,LSTM存储单元的输出值由下式给出:
并且,当:
与Cˆt表示非线性双曲正切的输出(tanh)功能。在我们的论文中,历史序列被处理为LSTM的输入以提取隐藏信息,而数字货币的预测价格被视为目标输出。
本次实证分析将采用2014-2017年的比特币交易数据,运用简单的LSTM模型对2014-2017年的预测实验进行回顾,同时寻找可能高度相关的变量。然后在2015-2020年的比特币交易数据中,重点比较近30日的真实值与预测值,将采用前置1日的方法,对真实回报、预测回报的数据进行了比对,探讨LSTM模型对于比特币的预测可能存在的不足。
2 实验回顾
比特币的市场价格不仅由比特币的价值决定,同时受到许多其他因素的影响。比特币预测相关的变量如表1所示。
表1 比特币预测常见变量表
2.1 实验回顾数据集与实验主要工具
实验硬件条件:Intel Core i7-6700 CPU@3.40GHz,32GB内存。
软件环境:Python3.7和Keras框架。
数据集:从2014年1月7日至2017年10月17日,一共有1380条记录。该数据集变量表如表2所示。
表2 回顾实验变量表
2.2 实验回顾与结论
使用MinMaxScaler将比特币平均价格标准化为0-1之间。2014年1月7日-2017年10月17日的数据集拆分90%的数据用于训练,另外10%的数据用于测试。其中训练集有1241条数据,测试集有137条数据。以365个enochs运行LSTM模型。用X=日期、Y=USD绘制预测值与真实值折线图,如图3所示。
图3 单一LSTM模型的预测与真实值折线图
由于利用了深层内的tanh函数学习LSTM拓扑并更好地估计最佳通过GRNN回归曲面,原始(输入)向量的值转换为[-1,1]的范围。此外,此缩放比例是允许深度学习LSTM网络和GRNN的理想选择处理振幅变化。由于可用数量样本观测值有限,因为数字货币是新的加密货币或数字资产,前90%的观察结果用于训练目的,其余10%用于最新目的,用于测试和样本外预测。最后,通过使用均方根误差(RMSE)度量标准,广泛用于信号处理和预测文献中。RMSE由下式给出:
其中N是用于测试的观察数,xi是真值,xˆi是预测值,t是时间脚本。通过实验回归得知,具有权重价格单一功能的LSTM的RMSE为193.846。
运用sns.heatmap()绘制热图,并观察变量与比特币平均价格的相关性。可以得知,成交量与比特币平均价格相关。开盘价(Open)、最高价(High)、最低价(Low)、收盘价(Close)与比特币平均价格(Weighted Price)直接相关。其热图如图4所示。
图4 各变量与比特币平均价格的热图
LSTM模型中,加入交易量(BTC),交易量(货币),以365个enochs运行LSTM模型。得知,其RMSE为213.521。绘制单一LSTM模型的预测值、多变量LSTM模型的预测值、真实值的折线图。可以得知,多种功能的LSTM显示更为准确的结果,如图5所示。
图5 单一LSTM、多功能LSTM模型的预测值与真实值折线图
3 实时数据检验
3.1 数据集与实验主要工具
实验硬件条件:Intel Core i7-6700 CPU@3.40GHz,32GB内存。
软件环境:Python3.7和Keras框架;
数据集:从2015年1月20日至2020年7月12日,一共有2000条记录。该数据集变量表如表3所示。数据集来源:https://min-api.cryptocompare.com/data/histoday;
API:cryptocompare。
表3 实时数据验证实验主要变量表
3.2 比特币数据描述性分析
采用.head()、.tail()、describe()相关命令分别查看数据集前5条、后5条记录、统计性描述分析。可以得知,最远的日期为2015年1月20日、最近的日期为2020年7月12日;变量分别为time、close、high、low、open、volumeform、vlumeto;统计性描述分析中,可以获得count值、mean值、std值、min值、max值及四分位值。分别如图6、图7、图8所示。
图6 实时数据前10条记录描述
从官网cryptocompare.com获取了2000条实时数据,数据时间序列的起点为2015年1月20日,数据包含了起始价格(open)、最高价格(high)、最低价格(low)、结束价格(close)、最低交易量(Volumme From)、最高交易量(Volumme To);例如2015年1月24日的结束价格是248.16,最高价格是248.88,最低价格是229.58,起始价格是232.17,最低交易量是33239.37,最高交易量是8011743.34。可以得知2015年比特币还是处于比较低的价位。
利用cryptocompare接口获取了2000条数据,数据时间序列的终点为2020年7月12日,数据包含了起始价格(open)、最高价格(high)、最低价格(low)、结束价格(close)、最低交易量(Volumme From)、最高交易量(Volumme To);例如2020年1月12日的结束价格是9267.36,最高价格是9289.52,最低价格是9235.28,起始价格是9237.13。可以得知2020年比特币处于较高价位。
图7 实时数据后10条记录描述
图8 实时数据基本统计描述
2000条比特币的交易数据中,通过描述性统计分析给出了6个变量起始价格(open)、最高价格(high)、最 低 价 格(low)、结 束 价 格(close)、最低交易量(Volumme From)、最高交易量(Volumme To)的mean值、std值、min值、25%值、50%值、75%值、最大值。
3.3 按照90%、10%划分训练集、测试集
将close设置为目标变量;将2015年1月20日至2020年7月12日数据分为训练和测试集。最先的2015年1月20日至2020年7月12日的90%为训练数据,最后2015年1月20日至2020年7月12日的10%为测试数据。将price[USD]设置为Y轴、将日期设置为X值,并绘制相应的线性图,可以得出测试集与训练集的线性图。如图9所示。
图9 训练集与测试集线性图
3.4 建立LSTM模型
为了训练LSTM,将数据划分为7几天的窗口(此数字是任意的,这里简单地选择了一个星期),每个窗口中,将数据实施归一化处理。使用一个简单的神经网络,该网络具有由20神经元组成的单个LSTM层,滤除因子0.25和具有单个线性激活函数的密集层。以2020年1月至2020年7月的每7天的值作为X轴,以price[USD]作为Y轴,通过LSTM模型试验,得出actual真实值、prediction预测值相关的线性图如图10所示。
图10 实施LSTM模型预测值与真实值折线图
实验得出,MAE=0.02875343330959605。初步观察实施LSTM模型预测值与真实值折线图,发现action真实值与prediction预测值相似程度很高。但能否确认可以通过LSTM模型进行实际比特币的交易呢?
3.5 进一步探究LSTM对比特币交易的预测
将线性图的观察点设置为最近30天。则n_points=30。如图11所示。
图11 近30日预测值与真实值折线图
可以发现,LSTM模型针对某个特定日期的预测时,主要采用了前1天的值;预测线似乎不过是实际价格的变动版本。
为进一步观察,运用命令:line_plot(targets[-n_points:][:-1],preds[-n_points:].shift(-1),'actual','prediction',lw=3)
将调整预测并将其每天移动一遍,其新的预测值与真实值的折线图如图12所示。
图12 前置1日的预测值与真实值折线图
可以得知,实际数据和预测之间的几乎完全一致,表明该模型基本上是学习价格前一日。运用LSTM实施单点预测时,这类结果相关常见。
为了使这一点更清楚,计算模型所预测的预期收益,并将其与实际收益进行比较。
使用命令:
actual_returns=targets.pct_change()[1:]
predicted_returns=preds.pct_change()[1:]
以原始形式以及应用了1天班次的方式查看实际和预期的回报,其观察结果一致。如图13所示。
图13 前置1日与实际的预测回报与真实回报折线图
计算原始预测以及一天调整后的收益计算实际收益和预测收益之间的相关性,原始预测的相关性为-0.18(不相关),调整1天的预测相关性为0.88(高度相关)。如图14所示。
图14 原始预测、调整1天实际收益与预测收益的相关图
从上面的图可以看出,实际收益和预测收益是不相关的。仅在对预测进行1天的变动后,我们才能获得与实际比特币数据的收益相似的高度相关的收益。
通过重点观察30日的比特币交易的数据,并且运用前置1天的方法,对真实回报、预测回报进行比对,已经发现LSTM模型对于比特币时间序列预测的不足。但LSTM对判断比特币市场的趋势是具备一定价值的。
4 结语
实验回顾中发现,在LSTM模型中,加入交易量(BTC)、交易量(货币),设置365个enochs运行LSTM模型。得知,RMSE=213.521。通过比较单一LSTM模型的预测值、多变量LSTM模型的预测值、真实值的折线图,得知多变量的LSTM模型结果较为准确;在实时数据实验中,实验得出MAE=0.028,其action真实值与prediction预测值相似程度很高;但将观察数据设置为最近30日,并且采用前置1天的方法,发现预测线似乎不过是实际价格的变动版本。前置1日的预测值与真实值折线图对比发现,实际数据和预测之间的几乎完全一致,表明该模型基本上是学习价格前一日。在实际收益与预测收益方面,发现,原始预测的相关性=-0.18(不相关),调整1天的预测相关性=0.88(高度相关),进一步说明该模型受到前一日价格的影响较大,反映是前一日价格的趋势。但实际相关性不高甚至不相关。
总之,LSTM对判断比特币市场的趋势是具备一定价值的,但由于影响比特币的因素非常多而复杂,仅仅依赖时间序列是远远无法达到较好目标的。未来研究中,LSTM模型需要持续改良与完善,包括比特币预测模型中特征工程的构建,针对LSTM模型调参优化等。