期货量软件:时间序列的频域表示:功率谱

本文探讨了如何通过离散傅里叶变换(DFT)在频域分析时间序列,关注功率谱的计算与特征识别,以及数据预处理技术如窗口函数(如韦尔奇窗口)的应用。同时介绍了Savitzky-Golay滤波器在平滑功率谱中的作用,并提到了用于MQL5分析的CSpectrum类。
摘要由CSDN通过智能技术生成

概述

我们在图表上观察到的报价代表的是随时间分布的数据。 所说的价格序列是在时域当中。 但这不是表达该信息的唯一途径。 在不同域中显示数据,可以揭示有关该序列的有趣特征,而仅在时域中进行分析时,这些特征也许并不显眼。 在本文中,我们赫兹量化将讨论通过使用离散傅里叶变换 (dft) 在频域中分析时间序列可以获得的一些实用观点。 我们赫兹量化专注于功率谱的分析,并提供该方法如何计算和识别时间序列揭示其特征的实际示例。 我们赫兹量化还将简要讨论在应用离散傅里叶变换之前需应用的重要预处理技术。

离散傅里叶变换

在演示功率谱分析方法之前,我们首先要了解什么是功率谱。 分析时间序列功率谱属于信号处理的广泛主题。在 技术指标和数字滤波器 一文中,作者展示了如何将任意复杂的级数分解成常见的正弦波和余弦波形式。 这令复杂过程降解为简单分量成为可能。 而令这一切成为可能的就是所选择的频域表示。 这是指表示的基础,它是再现时间序列的函数集合。

最常用的时间序列频域表示之一是离散傅里叶变换。 它以正弦波和余弦波作为其基础,覆盖一个序列跨度的一个周期。 它最具价值·的特征是,以这种形式勾勒的任何时间序列始终有唯一定义,也就是说,没有两个序列在频域中的表示相似。 功率谱表示信号的不同频率所具有的功率或能量。 在时间序列数据的上下文中,功率谱提供有关构成时间序列的不同频段的能量分布信息。

计算离散傅里叶变换(dft)

为了运用 dft 将任意级数转换到频域,采用了以下公式。

添加图片注释,不超过 140 字(可选)

其中每项都是一个复数,x 是原生数据序列。 每项表示一个周期性分量,其在数值范围内正好重复 j 次。 快速傅里叶变换是一种加速离散傅里叶变换计算的算法。 它将一个序列递归分成两半,变换每一半,然后最终合并结果。

功率谱

应用一些基本的数学方法,我们可以计算出由频率分量携带的能量。 在笛卡尔平面上绘制一个复数,其中实部绘制在 x 轴上,虚部绘制在 y 轴上,我们可以应用毕达哥拉斯(Pythagoras)定理,该定理规定绝对值是实部和虚部平方和的平方根。 故此,由某个频率产生的能量是其绝对值的平方。 功率的计算方法是将其绝对值的平方除以时域序列中值数的平方。

添加图片注释,不超过 140 字(可选)

但在将原始 dft 计算应用于序列之前,我们必须经过一些预处理步骤,才能准确估算特定频率的功率。 这是必要的,因为 dft 的操作针对有限长度的数据段,且它假设输入信号是周期性的,如果数值不满足此假设,则可能导致频谱泄漏和其它失真。 为了缓解这些问题,应用了数据窗口化。

数据窗口

数据窗口是指将时间序列乘以窗口函数的过程,窗口函数是给时间序列中的不同点赋予权重的数学函数。 数据窗口化是为离散傅里叶变换分析而准备时间序列数据的重要步骤。 当我们用 dft 分析时间序列数据时,我们会将数据且分成更小的片段。 若我们不在每个片段周围添加一个框架(在本例中为窗口函数),我们也许会错过一些重要信息,且我们的分析也不完整。 数据窗口化令时间序列的末端逐渐变细,降低了 dft 在窗口边界处的生硬变换。 逐渐变细功能典型设计用于在窗口边缘平滑地将信号逐渐变细至零,其可降低窗口边缘附近任何频谱分量的幅度。 尽管这项处理也许很重要,但它确实引发了一些问题,而这也许会导致数据的原始形状失真或变化。 在将窗口函数应用于原生序列之前,通过序列中心化,可以令其中的大多数问题消除或最小化。当时间序列中心化时,即从序列中的每个数据点中减去其平均值,生成的新序列均值为零。

有许多可用的窗口函数,例如矩形窗口、汉明(Hamming)窗口、汉宁(Hanning)窗口、布莱克曼(Blackman)窗口和凯撒(Kaiser)窗口,每个都有自己独特的性质和用例。 在本文中,我们将采用韦尔奇(Welch)数据窗口,这是另一种流行的窗口化方法。 韦尔奇(Welch)数据窗口由以下公式给出。

添加图片注释,不超过 140 字(可选)

原始时间序列中的每个数值必须乘以相应的 m(i)。 为了令数值中心化,利用窗口函数计算序列的加权平均值。 然后,在应用窗口本身之前,从序列中的每个点中减去该平均值。

平滑功率谱

离散功率谱可能难以解释,因为通常有很多狭窄的峰值,可随处突起。 为了更好地了解正在发生的事情,也许有必要采用一些平滑处理。 在这些应用当中,Saviztky Golay滤波器通常是首选。 它的滤波函数由两个参数定义,即半长和多项式的阶数。 半长指定所过滤数值之间相邻(之前和之后)的数值数量。 阶数定义是拟合当前值及其相邻值的多项式阶数。

CSpectrum 类

在本节中,我们讲义一个类,该类可轻松利用 mql5 分析序列。 该类的亮点之一包括实现绘图方法,这可促成用几行代码来显示各种频谱图。

整个类的定义如下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赫兹量化软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值