基于机器学习的比特币行情预测

2020/04/16 人工智能 区块链

此文首发于我的Jekyll博客:zhang0peter的个人博客


起因

因为最近在看比特币的行情,看到比特币波动幅度很大,于是想做短线交易。但做短线交易需要机器自动化策略,因为我不能一天到晚坐在电脑前看行情,需要电脑可以自动决策。我选择使用人工智能/机器学习来实现自动化交易策略,下面是我觉得可行的原因:

1.我不相信股票的行情可以预测,因为股票的种类太多了,不同的股票对应的公司业绩,大股东,人们对公司的看法波动太大了。而如果只对一只股票进行行情预测,明显风险太高,很可能发生黑天鹅事件。对比特币的预测则不同,因为比特币没有大股东,没有业绩,不会暴雷。比特币的涨跌就像虚拟的郁金香涨跌一样,只是单纯的炒作。

2.比特币发布至今已经很多年了,被炒起来也是最近3年的事情。因为比特币是24小时都可以交易,所以交易数据是足够充分的。

需求

因为我在交易所上进行币币交易,每次币币交易的手续费为0.15%。假设我在低价用USDT买入比特币,在高价把比特币抛出换成USDT。这样2次交易最多花费手续费为0.3%,因此我需要每次买卖之间至少要涨0.3%才能赚。

不知道USDT的可以看这篇文章:关于区块链的一些思考:稳定币USDT的价值和虚拟货币涨跌趋势

比特币历史价格数据

想要准确预测,精准的历史价格数据是必需的。

我在kaggle上找到了2012-2019的比特币价格数据,以分钟为间隔:Bitcoin Historical Data Kaggle

网上没找到最新以分钟为间隔的比特币价格数据,这里感谢群里的好心人@LAURENT提供了数据。

实现

此项目能否成功,最重要的因素是机器学习的模型的选择。

肯定要用到神经网络,关键是怎么用。

因为预测未来需要用到过去的数据,所以这个神经网络需要与时间有关。

最容易想到的是LSTM,我先尝试使用传统的神经网络进行价格的预测。

MLP

sklearn的MLP完全不能用:

Precision: 0.000000
Recall: 0.000000

LSTM/RNN

不尝试了,发现预测价格没有用。

后记

在项目做到一半的时候我发现,我需要实现的并不是对未来短期价格的预测的人工智能,因为这毫无意义。无论是期权合约还是杠杆交易,都无法通过对短期几分钟的比特币价格的预测来实现赚钱。

唯一能赚钱的方法是预测短期,比如说半小时内比特币的涨跌趋势。

因此我需要的不是根据过去29分钟的价格数据,预测未来1分钟的价格数据的人工智能,而是精通行情,看交易数据能看出未来走势的交易员。

上面提到的LSTM适合预测价格,并不适合预测涨幅。

最终我放弃使用人工智能,尝试使用量化交易。