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

4

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

据我所知,要识别频率,需要多个时间信号点。

小波变换对第一个或多个点做了什么?如果点数不够,它会使用未来的数据来识别频率吗?如果是,请问能否让小波变换仅使用“t”时刻之前和之内的数据?


3
我建议关闭这个问题,因为它与指南中定义的编程无关,而且范围太广(提出了3-4个不同的问题),并且要求外部资源。我投票支持关闭。 - desertnaut
2个回答

11

通常,处理您的[财务]时间序列数据有三种方法:

  • 时域方法(例如,回归,在您的财务时间序列数据上进行统计分析,如均值、偏度、标准差、峰度、Black-Scholes模型)

  • 频域方法(例如,傅里叶变换,功率谱密度)

  • 时频域方法(例如,短时傅里叶变换,小波变换,Gabor变换)

如果需要,您可以使用时频方法来去噪、分类或分类财务时间序列数据。时频方法将您的[1-D]财务时间序列数据转换为一个新的[2-D]域,您可以在其中看到时间和频率信息Representation of a Wavelet Transform and Short-Time Fourier Transform (Widipedia)

[1-D]频域方法只返回您的[1-D]财务时间信号的频率信息,这意味着您的[1-D]时间数据将被换取为[1-D]频率数据。

[1-D]时域方法仅返回您的财务信号的[1-D]时间分析,也无法帮助您捕获频率信息。

你可以使用连续小波变换或离散小波变换来去噪金融时间序列数据。有许多工具/语言可用于此类操作,例如MatLab、Python等。如果你身边有程序员,他们可能会帮助你在几小时或一天内通过其中一种时频方法对你的一维金融时间数据进行处理并可视化输出。你的问题主要是关于采样率的。如果你的采样率过低,则频域方法可能无法为您提供准确的分辨率(无论是否满足奈奎斯特定理)。但是,如果您使用这种方法进行去噪,通常意味着您拥有高频数据,因此您可能需要对数据进行下采样或滤波。我建议你阅读有关小波数学的文章,特别是母函数和子函数(例如Morlet,Daubechies等),这将帮助你了解基础函数如何映射到你的金融时间序列数据中,转换发生的方式以及你的初始金融时间序列数据的新的时间和频率表示的结果。
你知道,小波是一种数学变换。你可以将几乎任何输入数据传递给变换方程,并为您进行转换。你可以最初选择一个窗口大小。想象一下,你有一个1X1000向量的[0,1,0.3,1.2,-1,...]股票或衍生品信息作为你的窗口,或者任何其他更大的窗口1X1,000,000。如果你的数据来自过去或你通过小波预测未来并进行转换,可能并不重要。
如你所知,金融[图表]数据通常随着时间推移,会有额外的[数据点]记录,无论是真实的数据点还是预测的数据点。在这种情况下,完全没问题,你可以在新窗口上近实时地移动你的窗口,使你的窗口变大或删除第一个数据点并将新的数据点附加到你的窗口。那个delta时间可以是任何时间的分数。你只需要考虑后续的计算规模,这对你现在可能不是问题。
我对你的方法有一个总体的看法,不了解很多假设,但我认为你正在朝着一个具有挑战性但非常好的方向前进。

Wavelet Shifting and Scaling

图片提供:哈佛大学

好的项目,最好的祝福,感谢您的问题并欢迎访问stackoverflow.com!


2
到目前为止,我找到了一个关于我的初始问题的答案,并想分享一下我发现的内容。这篇论文是一个很好的来源:https://www.sciencedirect.com/science/article/pii/S0022169418303317?via%3Dihub
MODWT(最大重叠离散小波变换)是唯一可用于真实世界应用的转换方式,因为其他小波变换在每个时间步t中使用未来数据点。由于使用MODWT时存在“边界约束”,因此必须删除前L =(2 ** J-1)*(L-1)+ 1个值,其中J等于滤波器级别,L表示特定小波系数的数量。
我保存了被删除的MODWT值,并在训练神经网络后将它们添加回我的预测结果。然后,我可以执行反向MODWT并确保末尾点不会变形。在计算指标时,我再次删除了前L个值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接