原标题:试图用机器学习进行市场预测会发生什么
来源:AI研习社 链接:https://www.yanxishe.com/TextTranslation/2282
当你顺利运行你的第一个基础回归或者分类模型时,可能会产生一个想法:大量的时间序列数据,就像神秘的宝藏一样,说不定就让你财富自由了呢?心动吗?你能用机器学习来预测市场行情吗?
至少我尝试了,下面我将分享一下这个过程。
网上有很多小教程适合我们学习。他们会展示如何提取股市历史数据,可能是计算一些指标,然后用回归算法试图预测第二天的值。也或者他们使用一个分类器来预测股票是涨还是跌,而不是预测数值。
我从两个想法着手,首先,我想要达到大规模。理论上,在一些股票、货币和金融指标之间可能存在肉眼难以观察到的关系。那就设计出一个可能有找出这些关系的能力的机器学习算法。
第二, 我没有选择哪支股票来预测,而是训练所有的模型来看看哪些股票表现的最好。想法是一些公司的股票可能比其他公司更容易预测,所以我需要找到它们。
我下载了标准普尔指数500中的大多数股票的历史数据,一堆货币价值的历史和几十个金融指标,以此为开始。一个 Python 脚本负责将他们转换成一致的格式,填充缺失值,丢弃一些时间序列数据,至少不要追溯到2000年代初期的数据。总而言之,当清除了杂质之后,我得到了超过一千栏的Pandas 表格,其中包含了18年的数据。
一旦做完这些,我就用 TA-lib 库来计算窗口为5、10和30天的时间序列的一系列指标。我没有金融背景,不知道哪些指标有用,所以我采取的方法是加入所有的指标然后让模型去筛选。这使得数据列数爆炸。当数据集准备好,可以训练模型的时候已经超过 32000 列。
我的算法选择了 XGBoost, 因为它的整体表现好,能够很容易的鉴别出模型用哪些特征来预测。我将其设置为遍历数据集中的所有股票,为每个股票训练两个模型。第一个是分类器,预测第二天股票的涨跌。第二个是回归模型,预测第二天的收盘价。
对于每个模型,我用 95% 的数据训练,用剩余的数据验证测试,模拟未见的股票数据。剩余的 5% 大约相当于 3 个月的交易数据量。任何机器学习模型都能为训练它用的数据给出漂亮的预测,而诀窍是使它更具泛化性,能在未公开的数据上表现良好。
进行验证时, 开始进行 1000美元的模拟投资。如果预测股票会涨,买进,否则卖出。我并没有考虑交易的成本因为我想看除去这个之外的结果会是怎样。
运行Jetson TX2我花了 一个月的时间。
结果呢?
不出所料,对于大多数的股票来说效果很差 :准确度还不如抛硬币。尽管有一意外些表现,在测试集上表现良好。我的模拟资金在 3 到 6 个月增长了 2 倍或者 3 倍,一对股票在这段时间获得 20 倍的利润。吓的我心脏病要犯了。
记住,这是算法未曾见过的数据 — 是训练数据集以外保留的最后 5%。
上图是股票收盘价,下图是现金。接近 0 的地方是买入。
我找到它了吗?是否有一些股票与市场指标有隐含关系,这样就能被预测了吗?如果是这样,我可以通过价格波动赚钱。
在我写下代码并运行它的时候,距离我下载海量数据集已经过去几个月了。我把最新的交易数据更新进来,决定看看模型怎么处理在验证时表现很好的时间段 — 如果我在最近几个月跟他们进行实况交易,他们也能表现得一样好吗?我蛮期待的。
结果令人迷惑不解。模型在起初训练和验证表现很好,在后面的数据上表现过得去,但是仍可能会失败并输掉底裤。模拟的半数时间是赚钱的,半数时间会破产。有时,它没比掷硬币好几个百分点,其他时候它表现得很糟糕。发生了什么?它曾经看起来那么有希望。
学习到的经验
最后我恍然大悟。
如果股票价格是随机波动的,那么结果围绕 50% 正是所期望的。 通过让我的程序在数百个股票中搜寻,找到表现良好的一个,它偶然会碰到一些股票,刚好在验证时间范围内预测良好。 然而,仅在几周或几个月之后,在随机游走的另一部分中,它失败了。
没啥用,这个模型只是偶然地幸运了几次,我让 cherry 挑了几个实例,发现都是不可复验的。
可以理解,机器学习不是万能的, 它无法预测随机序列,因此在训练模型时必须非常小心偏差,仔细的验证至关重要。
我不会盲目的相信机器学习,如果你只是想试试,训练用的随机时间序列可以少得多。 只需要模拟,仔细验证,并注意那些偏差。
-------------------------------------------------------------------------------------------
发起:唐里 校对:鸢尾 审核:唐里
参与翻译(1人):Sarah@2019
英文原文:What Happened When I Tried Market Prediction With Machine Learning
一THE END一
免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。
合作及投稿邮箱:E-mail:editor@tusaishared.com