许多论证声称,通过深度学习网络可以准确预测加密货币的价格波动。本文则用实际数据打脸:别被玩弄了!这种所谓的“准确预测”存在很多坑,很多人试着建了个深度神经网络来预测比特币的价格,结果准得不可思议。
利用LSTM预测比特币的价格
为了便于说明,首先介绍一个利用多维LSTM(长短期记忆)神经网络来预测比特币价格,并生成上面的预测结果的例子。LSTM是一种特殊的RNN(递归神经网络),十分适合带有时间序列的问题。因此,在预测加密货币价格和股市方面LSTM十分流行。
接下来,我将数据分割成了训练集和测试集。使用最后的10%数据作为测试,这样分割线位于2017/9/14。所有在该日期之前的数据被用于训练,该日期之后的数据用于测试训练好的模型。下面,我画出了DataFrame的close列,这就是我们要预测的每日收盘价格。
为了训练LSTM,我们将数据按照7天的时间段分割(时间长度可以人选,我只是简单地以一周为时间段),每个时间段内以零为基础(zero base)将数据正规化(normalize),即每个时间段内的第一条数据为0,其他值表示与第一条数据之间的相对变化。因此,这里预测的是价格变动,而不是绝对的价格。
这里采用了一个简单的神经网络,包含一个由20个神经元组成的LSTM层,dropout率为0.25,还有一个密集层(Dense),激活函数为简单的线性函数。此外,损失函数用的是MAE(Mean Absolute Error,平均绝对误差),优化器用的是Adam。
可能你已经猜到了,这个模型最根本的问题在于,对于给定某天的预测,它几乎与前一天的实际结果相同。预测曲线看起来只不过是把实际曲线平移了一天而已。实际上,如果把预测曲线平移一天,这个结论就更明显了。该结果与我在许多使用LSTM做单点预测的例子中看到的一样。
为了更明确地说明这一点,我们来计算下模型预测的返回结果和实际的返回结果:观察实际和预测的返回结果,一个是原始形式,一个是平移了一天的形式,可以得到相同的结论。
从上面的图形中可见,实际和预测的返回结果实际上没有相关性。但将预测返回结果偏移一天之后,就能观察到极强的相关性,说明预测结果在重复实际的比特币数据。
本文的目的是讨论我这几个月看到的许多关于利用深度神经网络预测加密货币和股市价格的例子。这些文章用的方法与这里类似:利用历史价格数据实现一个LSTM,并预测未来的走势。而本文演示了为何这些模型无法在实际交易中使用。
没错,网络在学习方面很有效。但学习到的策略却是预测一个尽量接近于前一天的数值,因为这样能获得最小的平均绝对误差。但是,无论这种预测在损失函数上的结果多么精确,在实际中,仅基于历史价格数据的单点预测模型的结果依然很难准确,在实际交易中几乎没有任何用处。
当然,可能存在更复杂的方式,在价格预测方面实现更有用的LSTM。可以从使用更多的数据,同时优化网络结构和超参数开始。但是我认为,更可能的是采用历史价格数据之外的数据和特征。毕竟,投资的世界中已有共识——“过去的业绩不代表未来的产出”。同样的结论对于加密货币应该也成立。
正加财富网内容推荐 | ||
OK交易所下载 | USDT钱包下载 | 比特币平台下载 |
新手交易教程 | 平台提币指南 | 挖矿方法讲解 |