编者按:虚拟货币价格涨跌对普通人来说几乎是无迹可寻,但去年11月,伦敦大学一位博士毕业生利用算法模型对比特币和以太坊的价格进行了模拟和预测。
2007 年,美国资产管理公司 Rebellion Research 基于贝叶斯机器学习算法推出了第一款纯人工智能的投资平台,该平台准确预测了 2008 年的金融危机;2013 年底,比特币社区的“章鱼保罗”masterluc 预测到了比特币价格的下跌,以及其下一个高潮将在 2016-2017 年到来;从股市到币市、从人工预测到人工智能预测,人们对预知投资产品价格走势的渴求从未停止过。
无论是股市还是币市,其价格曲线实际上就是一个随时间变化的序列,因此可以通过随机函数进行预测 。尤其在人工智能(AI)的概念兴起之后,将投资市场的价格变化与深度学习结合在一起的实例越来越多。
为了验证 AI 是否真的能够准确预测价格变化,去年 11 月,伦敦大学学院博士毕业生 David Sheehan 就利用深度学习算法,分别构建了滞后模型(lag model)、随机漫步模型(random walk)以及长短期记忆模型(Long Short Term Memory)和自回归模型(AR model),对比特币和以太坊的价格进行了模拟和预测。
以下是 David Sheehan 的实验过程。
一、数据准备
数据抓取
在构建深度学习模型之前,通常需要获取大量数据。在 kaggle 网站上有比特币和以太坊近几年来详细到每分钟的价格记录。而在这里,为了保证测试信号不被噪声所覆盖,David Sheehan 选择使用其单日价格数据来进行模拟测试。
通常情况下,历史数据越充足,学习效果越好。但是目前,对于预测加密货币市场的价格而言,最棘手的问题就是数据有限,毕竟比特币从诞生到现在也才短短九年的时间。因此,从未来还需要继续向模型中添加新数据的角度出发, David 放弃了使用静态文件的方式,而是直接从 kaggl 网站的 API 中抓取数据。另外,为了保证深度学习模型能够对多种不同的加密货币进行预测,在测试过程中他统一使用了来自 coinmarketcap 和 kaggle 网站的数据,并将其进行简化,从而得到了如下图所示的数据结构:
在构建深度学习模型之前,通常需要获取大量数据。在 kaggle 网站上有比特币和以太坊近几年来详细到每分钟的价格记录。而在这里,为了保证测试信号不被噪声所覆盖,David Sheehan 选择使用其单日价格数据来进行模拟测试。
通常情况下,历史数据越充足,学习效果越好。但是目前,对于预测加密货币市场的价格而言,最棘手的问题就是数据有限,毕竟比特币从诞生到现在也才短短九年的时间。因此,从未来还需要继续向模型中添加新数据的角度出发, David 放弃了使用静态文件的方式,而是直接从 kaggl 网站的 API 中抓取数据。另外,为了保证深度学习模型能够对多种不同的加密货币进行预测,在测试过程中
他统一使用了来自 coinmarketcap 和 kaggle 网站的数据,并将其进行简化,从而得到了如下图所示的数据结构:
简化后的数据
搭建环境
在引入数据之前,先加载几个 Python 包,以简化之后的操作;然后导入数据来源网站,通过简单的数据处理得到上述数据结构;最后重复以上操作,将比特币的数据转换成以太坊的即可。
为了证明数据的准确性,David 在时间轴上绘制了两种加密货币的价格走势和交易量变化图:
二、从滞后模型到随机漫步模型
在深度学习中,通常会把所得数据分为训练集和测试集。模型建立在训练集上,而后通过未使用过的测试集进行评估。在时间序列模型中,通常会在一段时间内进行训练,在另外一段时间内单独进行测试。因此,在此次的试验中,作者以 2017 年 6 月 1 日为界,前半段时间用来训练,后半段时间用来测试评估。
但从上图中可以看出,在数据训练阶段,比特币和以太坊的价格相对偏低,因此训练数据并不能完全代表测试数据,从而破坏了模型对未知数据的归纳能力。于是,David 在构建深度模型之前,首先讨论了一个简单但是有意义的“滞后模型”。
该模型假设加密货币明天的价格等于今天的价格。用数学语言描述即为:PredPrice(t)=ActualPrice(t−1) 。
通过对“滞后模型”的构建得到上图,在经济运行过程中广泛存在时间滞后效应,而在现实中证券类投资产品的价格变化是随机的,服从随机漫步模型,因此在“滞后模型”的基础之上,继续构建一个“单点随机漫步模型”,用数学语言描述即为:PredPrice(t)=ActualPrice(t−1)∗ϵ,ϵ∼N(μ,σ);其中从μ到σ为测试集的范围。
从以上的测试结果可以看出,除了短期内价格上的波动略显频繁之外,其测试结果与实际的价格走势大致相同。它甚至准确捕捉了以太坊在 6 月中旬到 8 月下旬价格的上涨以及随后的下跌。
然而,即便能够准确预测价格走势, 单点的随机漫步模型也有其不可避免的缺陷。 这种只能预测未来某一点的模型通常具有欺骗性,因为在测试的过程中,如果某一点的结果出现偏差,实际上它都不会影响到后面的测试。因为无论前一点的结果错的多离谱,其后一点的数据都将被重置 。
而在上图所示的结果中,比特币单点随机漫步模型的测试结果欺诈性尤为明显,因为其价格变化的跨度较大,从而导致 Y 轴数据精度过低,所以从图像上看起来,预测曲线相对平滑,并且贴近实际价格。
能够代替这种模型的另一种方式是,利用“完整区间随机漫步模型”。在这种模型中,每一点的预测结果都将对下一个点的测试产生影响,用数学语言可以描述为:PredPrice (t)=PredPrice(t−1)∗ϵ,ϵ∼N(μ,σ) & PredPrice0=Price0。
但这种方式也存在缺点,即性能较差的模型测试结果看起来可能会让人大跌眼镜。因为它对每一个随机种子点都是非常敏感的,以下就是 David 截取的一段单点随机漫步模型和完整区间随机漫步模型的结果对比图:
虽然单点随机漫步模型看起来是准确的,但是其背后的欺骗性却开始让人不得不怀疑,那些声称能够准确预测投资产品价格曲线的人工智能是否真的可靠。
三、从长短期记忆模型(LSTM)到自回归模型
长短期记忆模型是一种能够处理和预测时间序列相关事件的神经网络。在测试过程中,David 选择使用 Keras 深度学习包,这种包的好处就在于其简单性和易用性,即使不理解完整的 LSTM 模型也能够快速构建。同时,他还建立了一个新的数据结构来适应这种模型:
close_off_high: 表示当天收盘价格与价格最高点之间的差距,其中-1 和 1 的值分别表示收盘价等于日低或日高;
Volatility: 表示最高价格与最低价格之间的差值除以开盘的价格;
model_data: 标准时间序列(从早到晚排列)。
LSTM 模型将使用之前的数据来预测第二天比特币或以太坊的收盘价格。实验过程中,首先需要对数据集进行分组;David 将其可访问数据的时间段定义为连续的 10 天,因此就可以将训练集中 0 到 9 的数据分为一组,1 到 10 的数据分为一组并以此类推。
在这里需要注意的是,可访问数据的天数是可以变化的。即时间越短,可供使用的数据组就越多,但每一组的天数越少,也意味着模型没有充足的数据来预测长期的价格行为。
另一方面,以上各参数的原始数据参差不齐,容易造成测试失败,因此在搭建 LSTM 模型之前,还需要对数据进行标准化,即使数据的每个维度均值为 0,方差为 1。在上面的数据结构中,close_off_high 和 volatility 的格式已经符合条件,因此只需要将其余列的数据进行标准化即可。
以上表格就是经过处理的一个输入实例,整个模拟过程中需要数百个类似的数据表格。到这里,搭建长短记忆模型的准备工作就基本完成了,在开始测试之前, 我们只需要将第一个时间点的值设置为 0,然后预测随时间点变化而变化的价格曲线。
接下来就是利用 Keras 架构搭建模型:
在以上这段代码中,build_model 函数构造了一个空模型“Sequential()”,并向其中添加了一个 LSTM 层和全链接层。该层的数据输入模式已经按照数据标准化结果进行了定义,另外该函数还包括了通用的神经网络功能,如 dropout 和激活函数。
在深度学习框架中,神经元是学习的基本单位,神经网络中每一层神经元学习到的,都是前一层神经元更抽象的表达,而在本次实验中作者将 LSTM 层中的神经元数量设置为 20。
之后,先通过训练集训练模型。我们可以看到以上过程,其中代码下方的数字代表 50 次迭代运行之后,模型在训练集上的平均绝对误差,其输出为每日的收盘价格。
从以上的结果模拟图中可以发现,其训练集的误差趋近于零,这主要是因为在训练数据的过程中,可以检测误差并进行调整,我们只需要对数百个神经元进行上千次的数据迭代就可以实现(这个过程就是所谓的过拟合,本实验中它已经被包含在了 build_model 函数中的 Dropout() 命令里)。
完成了对模型的训练过程,接下来就是通过测试集对其进行评估:
从测试结果中来看,以太坊价格的大体走势还是能够预测出来的,但是这其中有两个比较明显的缺陷。一个是在价格突然上涨之后无法准确预估随后的下跌,预测的价格变化总是在实际价格变化了一段时间之后才能体现出来,这一点可以在六月中旬和十月中旬的曲线中看出来;第二点是该模型对以太坊价格的预估总是高于实际价格,尤其是在达到峰值时最为明显。
利用这个模型还可以基于比特币的训练集进行测试。测试结果如下:
之前提到过,单点随机漫步模型具有欺骗性;其实, 通过仔细的观察之后你就会发现,通过 LSTM 模型预测的结果中,某些点也经常会与之前的结果相似。这主要是因为在 LSTM 模型中,已经生成了基于某个特定值的 AR 模型(自回归模型),也就是说其中某一部分的预测结果可能只是之前某一特定点上的结果,经过加权计算得来的。如果用数学语言来描述这个 AR 模型,就是:PredPricet=ϕ0+ϕ1∗Pricet−1+…+ϕp∗Pricet−p+ϵt, ϵt∼N(0,σ)
然而值得庆幸的是,这种 AR 模型通常也是基于时间序列任务的,所以这也说明 LSTM 模型的预测方向是基本可靠的。在实验的过程中,David 同样构建了一个基于相同数据集的 AR 模型,并用其测试了 5 个时间节点的价格预测。
与单点随机漫步模型以及 LSTM 模型相比,这个测试结果明显并不尽如人意。但是从 ETH 的价格预测曲线中看得出来,至少 AR 模型不是只会简单预测价格朝着某一个单一的方向运动。所以这一点在 David 看来还是值得保持乐观的。
最后,David 将随机漫步模型与 LSTM 深度学习模型进行了对比,将这两种模型反复运行 25 次,制作了一张估算模型误差的表格,这里的误差即实际收盘价格和预测价格的差。
结果证明用 AI 来炒作或许是值得的。因为从结果中可以看到,LSTM 模型对比特币和以太坊预测的平均误差在 0.4 到 0.5 之间,完爆随机漫步模型。
然而战胜随机漫步模型并不是最具挑战性的事情,即使是对于更加适合时间序列的预测工具 ARIMA 或 Facebook 的 Prophet 而言,人工智能预测价格最大的挑战在于真真切切的市场变化。
从去年 12 月中旬到 2018 年 2 月初,比特币的价格已经较最高点跌去了超过 68%,然而在比特币短暂的历史上,跌幅超过这一数值的情况只发生过两次,人工智能能否通过在极其匮乏的数据中的学习准确对市场进行预测?实际上还有待考证。
而与人工智能相对的,就是常被我们自身忽略的预测框架“人类智慧”,在这个框架中,对加密货币最完美的预测模型是:
用一句话来概括就是 “加密货币明天的价格永远比今天高。”
在加密货币这个没有做不到,只有想不到的神奇市场,无论是人工还是人工智能,想要准确预估价格走势或许都不是一件容易的事。但相比而言,或许“人类智慧”的完美模型更值得期待。
(文章原标题:人工智能预测到了 2018 年的这波暴跌吗? 作者:不碎)
原文链接:http://mp.weixin.qq.com/s/kwQbt0Yq035Le4DOtHYcCg
免责说明:本文来自哈希派,文章内容属作者个人观点,不代表火星财经立场。
火星提示:本站旨在传播更多信息,文章内容仅供参考,不构成任何投资建议投资者据此操作,风险自担。
声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。
简介:专注于区块链与加密货币领域,致力于为中国金融科技菁英提供最全面的行业资讯,最深度的市场分析
评论0条