金融时间序列方向预测的 LSTM 输入

数据挖掘 机器学习 时间序列 lstm rnn 序列到序列
2021-10-09 10:03:19

我正在使用 LSTM 来预测第二天的市场方向。

我的问题涉及 LSTM 的输入。我的数据是金融时间序列x1xt其中每个xi表示一天的特征向量i, IExiRD. 目标变量yi是第二天市场的方向

yi=IPi+2Pi+1>0
在哪里Pi是该资产当天的开盘价i.

我现在想知道如何配置输入以适应 LSTM 框架。LSTM 需要一个长度序列T 并将其与目标一起使用 yT. 一种方法是滚动窗口。将输入作为输入序列I1=x1,,xT, I2=x2,,xT+1 并使用 yT,yT+1作为目标变量。问题在于I1,I2 非常相似,它们仅在两点上有所不同,但目标变量可能是 1 对于第一个系列和 0 另一方面,我认为 LSTM 无法学习。

我想知道是否有人知道如何解决这个问题。上面的滚动窗口方法正在考虑输入Ik 作为独立的,类似于如果我们有输入 Ik是一个应该归类为法语或英语的句子。如果有意义的话,我希望 LSTM 考虑到它输入的序列都是同一个长序列的一部分。

许多论文使用循环神经网络来解决这个问题,但从未真正具体说明它们如何构造输入。

2个回答

一会儿,让我们将 ML 方面排除在解决方案之外。在这种情况下,您的论点仍然是 -由于 I1、I2....IN 与 I2、I3...IN+1 非常相似,尤其是“N”更大,那么理想情况下,每个新的股票价格应该非常接近或与前一天的股价相同..毕竟,当您查看输入时,几乎没有任何变化。所以这在逻辑上意味着市场根本不应该移动。尽管如此,它确实如此,因此我们需要了解如何改进功能集以更好地捕获我们可以使用的所有相关数据。

无论我们是否在等式中使用 ML,这都是一个有效的论据。因此,使用 LSTM(或与此相关的任何模型)的模型在预测期间也会面临这个问题。您的网络所要做的就是产生与最后输入的价格相似的值。我在网上看到的一些模型并没有将“预测”作为下一个预测的输入,而是采用“实际”值。“理想”的模型应该是预测和预测。然后我们可以真正说我们已经发现了一个可以预测股票价格的模型。当然,要做到这一点是相当困难的。

解决方法可能包括增强功能本身,而不是专注于投资回报率可能较低的模型。例如,收集围绕该股票的所有 +ve 和 -ve 情绪可能是功能之一。在这种情况下,前一天的情绪特征将在预测中发挥更大的作用。另一种方法是通过将标签作为接下来 10 个步骤的输出而不是单个时间步或某种移动平均值来更好地处理输出数据。另一种方法是在滑动窗口方法中将时间步长增加到 1 以上。相对而言,预测价值(导数或二阶导数)而不是价值本身的变化可能会更简单。RNN 的输出也可以与其他方法结合起来,甚至包括 CNN,正如一些论文所做的那样。

我认为您的问题有部分答案,关于以下部分:

它输入的序列都是同一个长序列的一部分

您可以在有状态模式下训练您的 LSTM 模型。这里有明确的解释

简而言之,在有状态模式下,模型会记住之前输入的内容,并将使用该信息进行训练。这样,它可以感知到当前输入是长序列的一部分。