使用小波变换对金融时间序列数据进行去噪

Denoise of Financial Time Series Data using Wavelet Transform

我需要为机器学习问题对金融时间序列数据进行降噪,但不了解如何计算小波变换。

我的理解是您需要一个时间信号的多个点来识别频率。

小波变换对第一个点有什么作用?如果没有足够的点,它是否使用未来的数据来识别频率?如果是,是否可以提供小波变换以仅使用来自 "t" 和 "t" 中的数据?

一般来说,处理您的[财务]time-series数据的方法有以下三种:

如果愿意,您可以使用 time-frequency methods 对财务 time-series 数据进行降噪、分类或分类。 Time-frequency 方法将您的 [1-D] 财务 time-series 数据转换为新的 [2-D] 域,您可以在其中查看时间和频率信息

[1-D] 仅限频域方法 return 您的 [1-D] 金融时间信号的频率信息,这意味着您的 [1-D] 时间数据将丢失,以换取拥有[1-D] 频率数据。

[1-D] 仅限时域方法 return [1-D] 对您的金融信号进行时间分析,也无法帮助您捕获频率信息。

您可以使用 Continuous Wavelet TransformDiscrete Wavelet Transform 去噪财务 time-series 数据。

有许多 tools/languages 可以帮助您这样做:MatLabPython 等。如果你身边可能有程序员,s/he 大概可以帮助你在几个小时或一天内通过这些 [2-D] time-frequency 之一传递你的 [1-D] 金融时间数据方法并可视化输出。

您的问题主要是关于 sampling rate。如果您的采样率太低,则频域方法可能无法 return 为您提供准确的分辨率(无论奈奎斯特定理如何)。但是,如果您使用这种方法进行去噪,通常意味着您有 high-frequency 数据并且 [通常] 您可能想要 down-sample 或过滤数据。

我建议你阅读有关母亲和 child 的小波数学(例如,Morlet、Daubechies 等),这将帮助你了解基函数如何映射到你的财务 time-series 数据,转换发生,并产生初始财务 time-series 数据的新时间和频率表示。

众所周知,小波是一种数学变换。如您所愿,您可以将几乎任何输入数据提供给变换方程式,系统将为您进行变换。您最初可以选择 window 尺码。想象一下,您有一个 1X1000 向量 [0,1,0.3,1.2,-1,...] 股权或衍生信息作为您的 window,或任何其他更大的 window 1X1,000,000。如果您的数据来自过去,或者您根据未来进行预测并通过小波对其进行转换,这可能并不重要。

如您所知,金融 [图表] 数据通常随着时间的推移,会有一个额外的 [数据点] 记录,可以是真实数据点,也可以是预测数据点。在那种情况下,这绝对没问题,您可以将 window 中的 near-real-time 移动到新的 window 中,使 window 更大或删除第一个数据点,然后将新数据点附加到 window。 delata 时间可以是时间的任意小数部分。您可能还需要考虑计算,稍后 scale-up,目前这对您来说可能不是问题。

我对你的方法的总体看法是,在不知道很多假设的情况下,你正处于一个具有挑战性但非常好的方向。

Image Courtesy: Harvard University

好项目,祝好,感谢您的提问,欢迎来到whosebug.com!

现在,我找到了我最初问题的答案,并想分享我的发现。 这篇论文是一个很好的来源:https://www.sciencedirect.com/science/article/pii/S0022169418303317?via%3Dihub .

MODWT(最大重叠离散小波变换)是唯一可用于实际应用的变换,因为其他 WT 在每个时间步长 t 中使用未来数据点。 由于使用MODWT时"boundary constraint",第一个L = (2 ** J - 1) * (L - 1) + 1,其中J等于滤波器级别,L是特定小波的小波系数数,必须删除值。

我保存了删除的 MODWT 值,并在训练我的神经网络后将它们添加回我的预测中。然后,我可以执行逆 MODWT 并确保最后的点不会变形。在计算指标时,我再次删除了前 L 个值。