通过深度学习预测价格与回报

机器算法验证 神经网络 预测 lstm
2022-04-09 04:48:47

问题:如果我们关注回报而不是价格,网站使用 DL 和 LSTM 进行的(单变量)股票市场预测实际上效果不佳。什么是相对快速的解决方案?(或最重要的解决方案)

说明:互联网上有数百个 python DL 代码试图使用 LSTM 和其他主要在 keras/tensorflow 中的方法预测股票市场(通常是 S&P 500 )价格(这里有一个例子:[1])。当我应用并直观地绘制图表时,这似乎是一个很好的预测。另一方面,当我们对"returns"执行相同的方法时,一切都崩溃了。即使是恒定的预测(例如总是预测每月的回报率为 0.01)也比 DL 做得更好或相对相同。原因是什么,最重要的是治愈它?

3个回答

您所概述的可能是机器学习研究人员在分析财务数据时最常犯的一个错误:发现明天价格的一个很好的预测指标就是今天的价格是微不足道的。

这种现象的统计术语是“非。”我们有许多关于如何测试时间序列平稳性的问题。一个这样的主题是如何知道时间序列是平稳的还是非平稳的?在金融数据的时间序列分析的特定情况下,查看高质量的统计文本可能会有所帮助,例如《金融工程的统计和数据分析》,第二版(David Ruppert & David S. Matteson)。在第 308 页,我们找到了注释

如前所述,许多金融时间序列并不表现出平稳性,但它们的变化通常是近似平稳的,也许在应用对数变换之后。

(这是一本关于时间序列数据和财务数据的相当广泛的教科书,因此如果您对如何进一步开展该项目感兴趣,值得详细阅读。)

因此,为了回答您的问题,您提到的示例神经网络发现财务数据是非平稳的,这些模型在进行预测时利用了这一事实。但是如果你看收益,那么非平稳现象就消失了,模型无法发现这么简单的规则来利用。

某种意义上说,解决方法是发现驱动股价的因素,无论是一般情况下还是在您正在研究的股票的特定情况下。价格每秒都在变化——这是为什么呢?一个人可能拥有哪些信息会导致每分钟 0.1% 的变化,或每天 1% 的变化?昨天的价格走势或前一天的价格走势不太可能以高度精确的方式告诉您明天价格走势大部分信息——因为,众所周知,过去的表现并不能保证未来的回报。

以这种方式构建,问题不在于选择某种神经网络,而是制造一个具有相关数据的神经网络来为其预测提供信息。所以,现在,你知道明天价格的一个好的预测指标就是今天的价格。为了改进这一点,您必须找到及时的信息,以改进昨天价格数据提供的“最佳猜测”。

作为此信息可能采用何种形式的示例,请考虑配对交易。1980 年代,摩根士丹利 quants 发明了“配对交易”,该策略一度盈利。前提是两只高度相关的股票往往会一起移动,所以如果一只股票的变动在另一只股票中不存在,您可以根据最终两只股票将恢复平衡的论点进行交易。因此,您的神经网络将使用有关一只股票的信息来对第二只股票进行交易,反之亦然。自然,只有当货币对高度相关的前提成立时,货币对交易才有利可图。

问题:如果我们关注回报而不是价格,网站使用 DL 和 LSTM 进行的(单变量)股票市场预测实际上效果不佳。什么是相对快速的解决方案?(或最重要的解决方案)

动机很简单。您可以在任何金融经济/计量经济学文本中找到它。作为起点,我们可以考虑随机游走模型(RW) 中描述的股票价格(对数价格):

pt=pt1+ϵt

其中 是 iid 高斯噪声。那么ϵtE[pt+1|It]=pt

It代表时间的信息集,但在此模型中归结为所以对于 log return =我们有 对于所有tptrt=ptpt1E[rt+1|It]=0t

带走:价格是非平稳序列,未来价格的最佳预测因子是现在的价格,回报是固定的,它们的最佳预测因子为零。

候选预测模型必须以某种方式使用进行比 RW 更好的预测。通常最好尝试回报而不是价格,因为前者是固定的(广义上的)。It

在通常的可预测性定义下,价格是可以很好预测的,而回报则很难预测。所以你的证据是正常的。

机器学习也可以在金融领域得到卓有成效的应用,但击败 RW 远非简单。

注意:请注意,下面的一些评论涉及平衡或其他有趣的点;但是在这里我们必须只专注于预测。其他评论要求经验支持。关于最后一个请求,上面的故事是一个模型(理论),除任何细节外,它代表了金融中最古老的随机模型(Bachelier 模型: https://en.wikipedia.org/wiki/Random_walk#Applications https: //en.wikipedia.org/wiki/Bachelier_model)。RW 成为股票预测(以及其他资产)的基准模型。几十年来,在学术界和金融业提出了数百种预测模型。寻找可预测性的模型反驳 RW 条件,如他们搜索了一些模型E[rt+1|rt,rt1]=0E[rt+1|It]0,然后在 MSE 或其他指标中击败 RW。然而,到目前为止,他们中没有人能击败所有数据集(所有国家/指数、所有股票/名称、所有数据频率、ecc)的 RW。因此,在这里引用特定文章来确认或拒绝回报可预测性是没有用的,这是一个无休止的实证辩论。此外,对于某些 RW 版本,我们可以在较弱的条件下放松高斯性和独立性,但上述基本含义仍然成立。最后,历史似乎是我最有力的经验证实上述基本 RW 含义在某种程度上与数据一致。因此,它仍然是解释为什么股票价格容易预测而回报很难预测的更简单和更有说服力的方法。

还有一点。一些交易者/分析师想要直接预测价格而不是回报。他们打算将这项工作作为预测下一个时期的价格方向而不是水平(这很容易)。这些人使用诸如“价格路径”之类的东西。这个目标与预测返回方向没有什么不同。然而,这些人没有意识到没有办法从非平稳和非遍历时间序列中推断出一些东西。

Advances in Financial Machine Learning是在金融时间序列背景下实际使用 ML 的一个很好的参考。

基本上 :

  1. 根据在给定时间内达到的水平制定标签(参见第 3 章障碍法)将帮助您制定切实可行的策略。除非你在做一些做市,否则你通常不会关心下一个股票的价格。对于应用程序,您可能需要更进一步并使用元标记(即两种算法,一种预测趋势,一种预测下注金额)。

  2. 关于特征构建,您通常使用平稳过程,即通过分数微分(在不消除信息的情况下消除噪音)而不是整数微分(0:价格,1:回报)获得。请参阅第 5 章 - 分数微分特征。

  3. 正如其他人所提到的,有复杂的机制在起作用,市场上有许多参与者,因此任何有意义的价格预测都将被利用并几乎立即得到纠正。这就是为什么如果没有外部/原始/新信息,您将无法获得有意义的预测(以及为什么底层证券通常被建模为带有漂移的期权定价的随机游走)。基本上,您需要外部信息来预测价格走势。有关使用推文的示例(金融推文,请参见此处。

所以一般来说,在使用 ML for Finance 时,您只是不会根据过去的价格预测下一个价格。这样做几乎没有任何价值。当您尝试从限价订单簿中预测价格变化时,高频交易可能会例外,但这是一个非常特殊的情况。而且,要回答您的一般问题,没有简单的方法来处理它:任何“简单”的解决方案都已经实施并且已经优化到难以竞争的程度。