第四章 半循环差分
在已知的数据段辨别主导循环,除了傅里叶变换和最大孀方法,还有第三种方法,我称之为半循环差分。这种方法比其他方法要直接得多,它通过赋予每个偶数循环周期已有的可靠性获得主导循环的近似值。比如说,如果最可靠的循环周期是20 天,那么这一数字,或者比这多一天,就是最可靠循环周期的近似值。在这里,主导循环可以认为是20-21 天。
如果你有过尝试用数学推算循环的经历,那么我认为你会发现这种方法比其他方法更容易使用。
首先,你要选择一个要分析的数据段。我们称之为N 。我们要求近似值的最大循环是小于等于N 除以2 的最大偶数。如果N 是43 天,我们将其除以2 得到循环周期可靠近似值为20 天。
现在,每个循环周期都有一个相关的半循环周期,也就是循环周期除以2 。如果循环是26 天,那么相关半循环就是13 天。如果循环周期是2天,相关半循环就是1 天。以此类推。半循环的重要性在于,它是唯一在循环周期2 个点(即最高点和最低点)测量最大幅度的方法。
下面我们尝试做的是测量N 天中每天的循环周期波幅,从最近的日期开始,往前测量。如果我们开始测量2 天的循环周期(图1 ) ,那么1 天就是相关半周期。现在,我们从第1 天中减去半周期。换句话说,我们用第1 天的收盘价减去第2 天的收盘价(我们不需要一定使用收盘价,也可以使用开盘价、最高价、最低价、中间值、移动平均值,等等) 。然后我们计算第二天,再将第2 天的收盘价减去第三天的收盘价的差加到我们的累计值。我们所做的就是将所有的差分累加起来。每个循环周期的差分累积越小,这个循环周期就越可靠。图1 是一个完美的2 天循环周期。如果我们继续两天循环周期差分的累加,我们最终会得到总数是0 ,意味着这是一个可靠的两天循环周期。

观察图2 ,可以看出这一组数据同样也表现出了一个非常可靠的2 天循环周期。在这里应当注意,这一方法假定循环存在于数据中。如果事实上不存在循环周期(正如图2 的情况) ,那么这一方法对我们也是毫无用处的。

如果你完成了累加2 天循环周期的差分,那么你需要进行下一个半循环周期的计算。因为前面我们已经使用了1 天的半循环(以此来看2 天循环的情况) ,下面我们要使用2 天的半循环来看4 天循环的情况。
现在参看图3 。注意,对于一个在N 内已知长度循环,你在哪里停止差分非常重要。要注意到图3 中有个完美的4 天循环,和图1 中完美的2 天循环一样。如果我们将差分计算到第10 天,那么总和是0 ,我们就假定我们有一个完美的4 天循环。然而如果我们将差分计算到第12 天(我们可以这么做) ,那么我们得到的总数就不是0 ,也不会得出完美的4 天循环的结论。

为了减小这一问题的影响,下面有一个公式,可以告诉我们每个循环长度差分的最大天数,我们称之为最大天数。
最大天数= (循环周期长度* Z) + 1,
这里Z= (N一1) /循环周期长度。
如果Z 本身不是偶数,则取小于它的最大偶数。
如果Z 小于1 ,则认为Z=1 。
将图3 中的问题带入公式:
Z = (13一1) /4
= 12/4
=3 ,然后取小于它的最大偶数是2 。
最大天数= (4*2) +1
=8+1
=9
我们可以继续加上2 天(4 天循环)的差分,直到加到第7 天减去第9 天的差分。然后我们可以进行下一个循环。
当N=13 时, 2 天循环的最大天数是多少?将这些值带入最大天数公式:
Z = (13- 1) /2
= 12/2
=6 (因为6 是偶数,所以不需要取小于它的最大偶数)
最大天数= (6*2) +1
= 12+1
=13
因此,计算2 天循环时,你应该将差分计算到第12 天减去第13 天。
N= 13 ,我们可以推出循环长度为小于或等于N/2 的最大偶数。因为图表显示N 为日,因此我们得出了6 天循环(6 是小于6.5 或13/2 的最大偶数) 。
现在假设N 为12 天我们要推算6 天的循环:
找出6 天循环的最大天数:
Z = (12-1) / 6
= 1116
= 1.833 ,取小于它的最大偶数,为0 。因为Z 不能为0 ,所以Z=1 。
最大天数=(6 * 1) +1
=6+1
=7
因此, N= 12 的6 天循环我们最大差分可以算到第4 天减去第7 天的差分。图4 中可以看出这一公式如何很好地发挥作用,给出差分总和为0的完美循环。

还有一个需要提前处理的问题我们尚未解决。参看图5 。这是一个非常可靠的6 天循环,比图中其他循环都可靠。但很明显,如果我们对这一类型进行差分,我们不会得出差分总和为0 的结论,因为它的上升势头非常显著。然而这又是一个非常可靠的循环,我们希望用我们的方法反映出这一循环的可靠性,而忽略其走势。因此,我们必须用等于周期的平均数对每个周期去除线性分量。如果我们对2 天循环进行差分推算,那么我们必须用2 天移动平均值对N 中所有数据去除线性分量然后从对应的天数中减去平均值来描述走势。对于6 天的循环,我们在差分前必须用6 天移动平均值对数据去除线性分量。如果我们用6 天移动平均值对图5 去除线性分量,我们将最终得到图4 的完美6 天循环。
对数据去除线性分量也可能引起一些问题。重要的是N 和最大天数之间要有足够的数据点,这两个值也包括在内,可以在最大天数日得到循环长度的移动平均值。
大多数情况下这一点不会出现问题。图5 中, 6 天循环长度, N = 12 ,最大天数=7 。然而在第7 天,你可以计算6 天(循环长度)的移动平均值(第7、8、9、10、11 和12 天) 。

一旦数据被去除线性分量,你就可以进行差分了。当你完成了一个给出的循环长度的差分,下面你需要对它的总和去权重。见图6 。如果你要像那样在数据窗口进行完整的半循环差分,那么长循环周期明显比短周期要离0 更远。如果你进行1天差分(2 天循环) ,那么差分过程中任何两个连续收盘价的差只计算了一次。如果你进行较长循环长度的差分,那么差分过程中两个连续收盘价的差只被计算了一次。如果你进行更长的循环长度差分,那么连续两个收盘价的差分就不止计算一次了。如果想要结果正确,就必须去除这一偏差。你将一个循环差分加起来之后,用最大天数按照下面的公式对总和去权重:

去权重总和=原总和/ [ (最大天数-Q) xQ ],
这里, Q= 循环长度/2 (差分长度)
到此总结一下整个过程:
1. 选择一个数据窗口,越长越好。这一窗口的长度我们称其为N 。
2. 从2 天循环开始进行差分。
(1) 首先用等于循环长度的移动平均值对原数据进行去除线性分量。
(2) 从第1 天开始对去除线性分量的数据进行差分,然后向前推进,将循环长度1/2 的差分加起来。继续差分,除非正在减的是最大天数。
(3) 用去权重公式对总和去权重。
3. 保留最后的总和(比如2 天循环的总和、4 天循环的总和等等) 。在循环长度上加上2 ,重新计算一个新的最大天数,对新的循环长度返回去重复做第2 步,直到循环长度是小于或等于N/2 的最大偶数。这就是最终的循环长度。
完成最终的循环长度后,整个过程就完成了。现在对每个偶数循环,你有了一个对循环可靠性的相对测定。每个循环的数值是没有意义的。真正有价值的是这些数字间的相对关系。数字越接近0 ,循环长度相对范围内其他循环长度而言就越可靠。你可以在最终去权重的总和上乘以斗,最终得出的去权重总和越高,循环长度越可靠。
最后,记住,这些相对可靠性的测定只是对这一时间周期的近似值,比如说, 6 天循环实际是6 到7 天循环的估计值, 8 天循环是8 到9 天循环的估计值,等等。
本章是我的朋友兼程序员拉尔夫· 文斯的研究成果。
这是一段basic 语言程序,使用半循环差分技术来识别最可信的周期。
这段程序使用数组C (X) 作为输入数据,使用另一个数组SUMMA( X) 作为输出结果。具体输入输出功能的实现,需要使用者自行解决。




