量化交易软件策略——创建非滞后数字滤波器

本文探讨了一种针对流数据中趋势检测的新方法,通过群集滤波器实现非滞后信号处理。传统的时间序列平滑方法存在滞后问题,而群集滤波器旨在解决这一挑战,尤其在市场报价分析中,能提供实时的、非重绘的滤波结果。文章介绍了群集滤波器的设计步骤和一个简单的市场报价分析示例,强调了这种方法对非平稳时间序列的适应性。
摘要由CSDN通过智能技术生成

简介

本文介绍在流数据中确定有效信号(趋势)的一种方法。应用至市场报价的小滤波(平滑)测试表明创建未在最后的柱上重绘的非滞后数字滤波器(指标)的潜力。

编辑切换为居中

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

标准方法

赫兹量化本方法基于经典时间序列平滑方法。在本网站和其他网站上,有大量的文章讨论这个主题。结果同样经典:

  1. 趋势的变化在显示上存在延迟;

  2. 更好的指标(数字滤波器)响应以平滑质量的下降为代价;

  3. 实现非滞后指标的尝试导致在最后的样本(柱)上重新绘制。

鉴于交易人员已学会用持续的经济过程处理这些事情,这在评估实时经验数据时是不可接受的,例如在测试飞行器构件时。

主要问题

众所周知,大多数交易系统随着时间停止执行,且指标只是反映一定的时间间隔。这很容易解释:市场报价不是平稳的。平稳过程的定义可在维基百科上找到:

平稳过程是一个随机过程,其联合概率分布不随时间而改变。

从这个定义来看,平稳时间序列的分析方法并不适用于技术分析。这是可以理解的。有经验的做市商进入市场会搞乱我们之前就已知市场报价序列的参数进行的所有计算。

尽管这似乎是显而易见的,很多指标均基于平稳时间序列分析理论。这种指标的示例包括移动平均线指标和它们的修改版。然而,也有一些创建自适应指标的尝试。他们应该在一定程度上考虑到市场报价的非平稳性,但他们似乎没能创造奇迹。使用非稳态序列(小波、经验模态和其他)的当前已知分析方法“惩罚”做市商的尝试同样未获成功。看起来像是一直忽视了或未予识别某个关键因素。

主要原因在于使用的方法并非为处理流数据而设计。所有(或几乎所有)这些方法都开发用于分析已知或从技术分析的角度而言的历史数据。这些方法十分便利,例如,在地球物理学中:您感觉到地震,获得地震波曲线然后进行数月分析。换言之,在滤波过程中在时间序列端部上升的不稳定性影响最终结果的情形中,这些方法是恰当的。

在分析经验流数据或市场报价时,赫兹量化专注于最近接收到的数据而非历史数据。这些是无法使用经典算法来处理的数据。

群集滤波器

群集滤波器是接近初始序列的一组数字滤波器。不要将群集滤波器与群集指标混淆。

群集滤波器在实时分析非稳态时间序列 - 换言之,流数据 - 时十分方便。这意味着,这些滤波器的主要任务是实时获得接收到的新数据的最有可能的平滑值,而非平滑已知时间序列值。

与各种分解方法或所需频率的滤波器不同的是,群集滤波器创建初始序列的可能值的一个组合或一个范围,然后进一步分析以接近初始序列。输入序列在分析中更像是一个参考而不是目标。主分析涉及在处理接收到的数据后由一组滤波器计算得到的值。

编辑切换为居中

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

图 1. 简单群集滤波器图解

一般情况下,群集中包含的每个滤波器有其各自的特性,并且不以任何方式相关。这些滤波器有时候定制用于分析它们自己的平稳时间序列,这描述了初始非平稳时间序列的个体属性。在最简单的情况下,如果初始非稳态序列改变其参数,滤波器则“切换”。因此,群集滤波器在本质上追踪实时更改。

群集滤波器设计程序

任何群集滤波器都可通过三个步骤设计:

1. 第一步通常是最难的一步,但接收到的流数据的概率模型就是在这一步中形成的。这些模型的数量可以任意大。它们不总是与影响可接近数据的物理过程相关。模型对可接近序列的描述越精确,获得非滞后群集滤波器的概率越高。

2. 在第二步,为每个模型创建一个或多个数字滤波器。在一个群集中加入滤波器的最普遍的情况是这些滤波器属于描述可接近序列的模型。

3. 因此,赫兹量化在群集中可以有一个或多个滤波器。从而,对于每个新的样本,我们具有采样值和一个或多个滤波器值。所以,对于每个样本,我们具有一个向量或由多个(至少两个)值组成的人工噪声。现在我们要做的只是选择最合适的值。

简单群集滤波器示例

为便于说明,赫兹量化将使用市场报价作为输入序列来实现与上图对应的简单群集滤波器。您可以使用任意时间表的收盘价。

1. 模型说明。赫兹量化接下来的工作将基于下述假设:

  • 可接近序列是非平稳的,即其特性倾向于随时间而变。

  • 柱的收盘价不是实际柱的价格。换言之,柱的登记收盘价与该柱上其他价格变动一样,是噪声变动之一。

  • 实际价格或可接近序列的实际值位于当前柱的收盘价和上一个柱的收盘价之间。

  • 可接近序列趋于保持其方向。也就是说,如果它在上一个柱上上涨,它趋于在当前柱上保持上涨。

2. 选择数字滤波器。为简便起见,我们采用两个滤波器:

  • 第一个滤波器将是一个基于最后两个收盘价计算的简单移动平均线。我相信它非常适合为我们的模型指定的第三个假设。

  • 既然我们有了非平稳滤波器,我们也将尝试使用额外的滤波器,希望有助于识别时间序列的特性变化。我选择指数移动平均线,因为这个选项看上去合理并相当适合我。这是因为 EMA 要快于 MA 的事实,因此它不会引起相对于趋势的延迟并具有更好的噪音响应。EMA 同样将基于最后两个收盘价计算。

3. 为群集滤波器选择合适的值。

因此,对于每个新的样本,赫兹量化将具有样本值(收盘价)以及 MA 和 EMA 的值。根据为我们的模型指定的第二个假设,将忽略收盘价。此外,我们基于最后一个假设选择 MA 或 EMA 值,即保持趋势方向:

  • 对于上升趋势,即 CF(i-1)>CF(i-2),我们从下面四个变体中选择一个: 如果 CF(i-1)<MA(i) 且 CF(i-1)<EMA(i),则 CF(i)=MIN(MA(i),EMA(i)); 如果 CF(i-1)<MA(i) 且 CF(i-1)>EMA(i),则 CF(i)=MA(i); 如果 CF(i-1)>MA(i) 且 CF(i-1)<EMA(i),则 CF(i)=EMA(i); 如果 CF(i-1)>MA(i) 且 CF(i-1)>EMA(i),则 CF(i)=MAX(MA(i),EMA(i))。

  • 对于下降趋势,即 CF(i-1)<CF(i-2),我们从下面四个变体中选择一个: 如果 CF(i-1)>MA(i) 且 CF(i-1)>EMA(i),则 CF(i)=MAX(MA(i),EMA(i)); 如果 CF(i-1)>MA(i) 且 CF(i-1)<EMA(i),则 CF(i)=MA(i); 如果 CF(i-1)<MA(i) 且 CF(i-1)>EMA(i),则 CF(i)=EMA(i); 如果 CF(i-1)<MA(i) 且 CF(i-1)<EMA(i),则 CF(i)=MIN(MA(i),EMA(i))。

其中:

  • CF(i) – 群集滤波器在当前柱上的值;

  • CF(i-1) 和 CF(i-2) – 群集滤波器在之前柱上的值;

  • MA(i) – 简单移动平均线在当前柱上的值;

  • EMA(i) – 指数移动平均线在当前柱上的值;

  • MIN – 最小值;

  • MAX – 最大值;

程序代码和群集滤波器性能

赫兹量化的群集滤波器的指标的代码并不比移动平均线的代码更复杂。它不涉及任何专门技术,所以无须在此讨论。本文附带了源代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值