首页 百科知识 最大熵波谱分析描述

最大熵波谱分析描述

时间:2022-07-09 百科知识 版权反馈
【摘要】:我们在本章会完整地阐述最大熵波谱分析的算法。首先,从消除混叠和去趋势的基本数字信号处理开始着手,然后讨论如何用最大熵波谱分析计算数据的长度,以及最大熵波谱分析滤波器的最优顺序。使用最大熵波谱分析的优势,就是可以从很少的数据中获得对波谱的高解析率的推测。最大熵波谱分析算法的一个公认的缺点就是它会受伪响应的影响。


我们在本章会完整地阐述最大熵波谱分析的算法。首先,从消除混叠和去趋势的基本数字信号处理开始着手,然后讨论如何用最大熵波谱分析计算数据的长度,以及最大熵波谱分析滤波器的最优顺序。本章以公式和计算机编程的流程图的形式,完整地描述最大熵波谱分析算法。



市场价格数据,实际上是从信号处理角度来抽样的数据。每一根柱状线就是一个数据样本。尽管抽样率可以从日线级别的价格变化到月线级别的,甚至更长,但是最常见的样品率是每天一个。抽样数据的奈奎斯特速率,可以被认为是没有混叠的最短的周期,也就是每周期2根柱状线,这是理论的上限。实际操作中,在进行信号处理以前,为了防止它们的混叠组成波会影响计算,数据中的更短的周期必须由滤波器衰减。

另一个实际的考量是,更短的周期改变得很快,以至于在周期性的运动开始前,没有足够的时间来计算,从而无法建立一个进场点或者出场点来进行交易。我的经验是,8根柱状线的周期就是实际交易可以用的最短的周期了。8根柱状线的时间跨度是从波谷到波峰共5根柱状线。如果你比进场点晚了1根柱状线的时间,那么已经错过了25%的运动;相应的,你也将比出场点晚1根柱状线出场,那么会再失去25%的利润。结果就是一场利润较小的交易。如果你晚了2根柱状线的时间,那么只能指望保本了。

所以实际考量的结果是,我们可以从原始价格数据中过滤更短的周期,留下周期长度大于8根柱状线的波幅。能够完成这个功能的最有效的滤波器,是一个带宽波纹为0.1分贝、带阻过滤掉大于30分贝的、通带频率为0.22(相对奈奎斯特频率)的椭圆滤波器,如图7.1所示。就像图中显示的,周期长度大于8根柱状线的(频率小于0.25)周期可以没有衰减地通过,然而,2根柱状线和4根柱状线的周期都被完全过滤掉了。

“易语言”中,函数[N]意味着“N”根柱状线之前的函数值。使用这个概念,椭圆滤波器(Filt)的公式就是

11

1_090_0002

图7.1椭圆去除混叠滤波器的频率响应



理论上的周期,先正向波动,然后反向波动,总的平均值为0。金融价格数据的平均值并不是0,所以需要去趋势来达到这个理论形式。如果我们没有去除数据的趋势,就会将移除低频组成波的负担都压在了最大熵波谱分析的算法上。尽管这也是可以做到的,但是我不建议这么做,因为它会导致计算错误,具体原因就是对很大的数字来说,很小的差值容易被忽略(然而在算法计算时,又会出来扰乱结果)。一般来说,去趋势是指移除数据中的频率非常低的组成波。有几个办法来做到这一点,但是我们关注的是频率域的影响,用滤波器移除零频率组成波是合理的,这个滤波器被称为高通滤波器。

在做最大熵波谱分析计算之前,对我们去除数据趋势有用的、合理的高通滤波器被显示在图7.2中。注意,频率高于0.05(40根柱状线周期长度)的周期可以完全没有衰减地通过。图7.2中高通滤波器的公式为

Detrend=0.95P-0.95P[1]+0.9Detrend[1]

1_091_0001

图7.2高通滤波器的频率响应

结合去趋势和消除混叠过滤结果,去趋势等式成为

Detrend=0.95Filt-0.95Filt[1]+0.9Detrend[1]

过滤结果展示了最大熵波谱分析算法的数据,衰减了在8根柱状线周期和40根柱状线周期范围外的组成波,同时留下了这个范围内的、没有被衰减的组成波。



使用最大熵波谱分析的优势,就是可以从很少的数据中获得对波谱的高解析率的推测。解析率与使用的样本数据的数量的平方成正比。对一个16根柱状线周期的日线数据,最大熵波谱分析提供的解析率,大约可以与快速傅立叶变换使用一年的数据获得相同的解析率。尽管使用更多的数据可以获得更高的解析率,但是数据在观察时间段保持静态的可能性就降低了。如果数据不是充分静态,任何测量都是无效的。所以,选择正确的数据长度是极其关键的。

我的经验是,仅仅使用一个周期长度的数据就可以获得一个合理的解析率。既然连续数据样本之间的周期长度改变是相对较慢的,那么一个简单的方法就是使用前一个周期长度测量作为现在计算的周期长度。这样最小化了更短周期的潜伏期(也就是排除了更短周期的可能性),只要假设周期长度变化很慢,就对更长周期保持了测量的准确性。



最大熵波谱分析算法的一个公认的缺点就是它会受伪响应的影响。这些假的周期确认是由于我们为了最大化解析率,而将滤波器设置得过度明确所产生的。如果数据中只有一个周期,最大熵波谱分析滤波器就需要有两个极点在它的波谱模型中。如果滤波范围过度明确设置,解析率就会试图找最优解法。在这种情况下,一些极点可以出现在单位周期附近,从而导致了伪响应。

我的经验是,如果滤波范围保持在数据长度的40%,伪响应可以被降低到一个可以接受的水平。这就是我使用最大熵波谱分析产品的规则。



最大熵波谱分析的结果,与使用最小二乘法全极点模型对数据的分析结果是等同的。全极点模型都是自回归模型,都包含一个多项式,其中分子中有解,并且这个多项式的解就是极点等于0的因子。有一个简单的解,称为自回归移动平均线(ARMA),另一个解是使分母为0的值。我的经验是,自回归移动平均线会比最大熵波谱分析受到更多的伪响应的影响。这是因为分母中的零值因子很有可能也是分子中的零值因子,所以即使很小的区别也会导致额外的伪响应。

现代波谱分析有许多非常棒的描述。唐纳德·G.柴尔德斯编著,《现代波谱分析》,约翰威利出版社,纽约,1978年。斯坦尼斯拉夫·B.凯斯勒编著,《现代波谱分析II》,约翰威利出版社,纽约,1986年。小S.劳伦斯·马普尔,《数字波谱分析和应用》,普伦提斯霍尔出版社,英格伍德克利夫斯,纽约,1987年。尽管编程的数学原理不是大多数交易者的兴趣所在,但是有许多读者对最大熵波谱分析的细节感兴趣。接下来,我会来讲解如何计算最大熵波谱分析的波谱推测。按照安德森(Andersen)[1]描述的步骤来求解。

最大熵波谱分析功率波谱P(f)的估计式为

12

频率f被限制为奈奎斯特范围f<(1/2)Δt。在市场数据中,我们处理每根柱状线的数据样本。例如,价格数据可以使用日线级别的。这表示我们可以考量的最可能的频率,是1根柱状线0.5个周期,或者2根柱状线1个周期。在实际交易中,我们可以考虑消除混叠滤波器的最短的周期长度,应该在6根柱状线到8根柱状线的周期范围内。因此,如果我们使用日线数据,不可能发现周线周期。为了确认这样的短周期,我们需要增加样本率,例如,使用小时线数据。

Pm和系数amm由下面的矩阵等式决定

Φi是自动关联滞后i,所以,Pm就是对m+1长度的预测滤波器(1,-am1,...,-amm)的功率输出。当m=0(也就是没有滞后)时,P0的估计式为

14

这个矩阵等式通过一个一个逐步增加矩阵的维度,算出其解。当已知的自相关函数被计算的时候,m+2的值是未知的。这些未知项包括滤波器系数m、自相关函数的下一个值,以及误差功率。在矩阵中只有m+1个等式,所以需要一个额外的关系(等式)。博格(Burg)指出,额外的关联就是总误差功率的最小化(将来误差功率和前面的误差功率的和)。例如,2点的预测滤波器(1,a11)的将来的和前面的误差功率分别是

15

最小化e2f+e2b,则

16

m+1长度的预测误差滤波器的输入功率被最小化,考虑amm,则

17

加上一个新的系数,要编辑旧的系数,通过遵守下面的规则来更新滤波器

18

这个等式就是莱维森(Levinson)矩阵卷积关系的结果。更新过的误差功率变成

19

如果我们设amo=-1,amk=0,当k≥m,我们可以重写这个将来和以前的误差功率的等式

20

在这两个等式中代入莱维森卷积关系,我们得到

21

其中我们定义序列:

22

通过将下标从k变到m-k,然后反转加法的顺序,可以得出bmt和b′mt的变化。最小化将来误差功率和以前误差功率的和,amm的表达式为

数组bmt和bmt的卷积公式是

当m加1时,序列bmt和bmt可以从它们前面的值构建。初始值是

25

当m从1增加到想要的长度M,bmt和bmt都可以被计算。

从m=1到M的卷积,就是矩阵求解的过程。图7.3显示了卷积过程的流程图。你可以选择计算机语言来计算滤波器系数。如果转换成计算机的概念,bmt就是b1,bmt就是b2。在被更新进数组a(t)以前,数组aa(t)就是滤波器系数的临时储存。

你可以依照图7.3的流程图来编程,计算最大熵波谱分析测量出的主要周期。或者换个方法,“易语言”代码使用了最大熵波谱分析动态链接库(DLL)。我已经编译了最大熵波谱分析计算式,因为它们有很多计算机编程方面的内容,并且我编译好的动态链接库使用起来方便快捷。“易语言”代码模板在图7.4的中间,可以使用DLL,然后画出主要周期。对本书其余部分的其他计算,这个代码可以作为一个模板。窗口输入值1可以动态地调整数据长度。

1_098_0002

图7.3计算最大熵波谱分析滤波器系数的卷积步骤

如果你想要禁止动态长度数据功能的话,可以手动设置窗口长度,取值范围为8~50。

对应于原始等式的滤波器系数,最大熵波谱分析波谱估计式为

26

既然我们仅仅对相对波谱波幅感兴趣,可以将分母设为1。

1_099_0001

图7.4“易语言”代码使用最大熵波谱分析动态链接库

分子中的波幅通过分子和它的复共轭相乘得出。我喜欢以周期长度的形式画出线性波谱,因为这对交易者来说是最容易解读的表达方式。在周期长度范围内的价格数列里面的每一根柱状线的波谱都被计算,从最小的周期长度,也就是消除混叠滤波器的周期,到一个合理的最大的周期长度。大于50根柱状线的周期就是非常严重地过度采样了,并且在较长的时间跨度中,相位关系也非常难以保持。

计算最大熵波谱分析波谱的代码片段显示在图7.5中。分子中的复共轭的真实部分就是(1+CT),这个滤波器系数-amn是由安德森算法得来的。

图7.5计算最大熵波谱分析波谱的代码片段


•一个好的消除混叠滤波器的公式为

27

•一个好的去趋势滤波器的公式为

•最大熵波谱分析计算用的正确的数据长度为前面计算的周期长度。

•最大熵波谱分析滤波器正确的滤波范围为数据长度的40%。


1.N·安德森,《最大熵波谱分析的论滤波器系数的计算》,《几何物理学》39卷,第一期,1973年1月号,6972页。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈