量化百科

技术分析与量化研究的对话(一)

由polll创建,最终由polll 被浏览 15 用户

哈利最近又有点烦(咦这个“又”字哪来的……),这市场变化太快,到底存不存在择时的空间呢。说没有吧,你看均线那套似乎又有点准;说有吧,技术分析那套看着又心里发毛。思来想去,又找来了自己在私募打(搬)拼(砖)的好兄弟波特。

**哈利:**兄弟,你快来跟我说说,这靠技术分析择时到底靠谱不?

**波特:**你怎么又来了啊。。。

![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='250' height='350'></svg>)

How old are you?(怎么老是你)

引子

**波特:**我觉得技术分析这个话题太大,有人说K线图从18世纪就有了。这个体系里既包含精华又有糟粕。实际上,Andrew Lo之类的大神曾经将一些技术分析代码化。

**哈利:**那像比如TA-lib这种技术包里的那些模型,你觉得有没有道理呢?

**波特:**这包里模型太多了,我只能说我知道的。很多技术分析框架,比如均线系统,就是非常值得尊敬的系统。在那个时代想出这么一个集合了信号、阈值和仓位调整的完整系统,同时又简单好用,堪称天才。可惜大部分人只知其然却不知其所以然,完全浪费了这么宝贵的框架和思想。

哈利:

![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='400' height='162'></svg>)

为啥我一直是这个表情

**波特:**其实均线模型包括了很多有意思的东西在里面,但是大部分书籍在介绍均线模型时候都只介绍说“当X日均线高于Y日均线就多,X日均线低于Y日均线就空或平”之类,完全不探讨背后的思想。这就导致使用者只知道按部就班的使用这个模型,却不知道如何改进,怎样推广。实际上,均线系统和量化分析有很强的联系。

**哈利:**兄弟你最棒,给我讲讲呗?

**波特:**其实这涉及策略开发了,不过至于框架……倒也不至于是机密什么的,好吧!那我们就展开讲一下均线系统和量化分析的关系吧。

**哈利:**我赶紧搬小板凳来听好。

量化角度看择时策略

**波特:**我先不过度展开,只考虑单因子的情况。我们做量化的一般是从信号出发,研究一个信号S,是否统计上与收益率R有关系。例如,alpha策略的开发步骤就是找到一个因子维度S,每个股票在这个维度上的取值是S(也就是信号),且该取值与股票在当日的收益率R是正相关的。于是,我就可以多S取值大的股票、空S取值小的股票,从而构造出一个alpha策略,对吧?

**哈利:**没错,不过我们谈论的技术分析不是时序上的么……

**波特:**你其实可以做个类比,也就是像下面这样:



把创业板过去一年每日的收益率序列 R_t ,类比成:股票池中各个股票的收益 R_s ;把对创业板t日收益率 R_t 有预测能力的、在t日之前发生的信息所构造出的信号 S_t ,类比成:对股票收益率 R_s 有预测能力的信号 S_s把对创业板每日择时导致的应持有的仓位水平 P_t ,类比成:对T日某只股票应持有的仓位水平 P_s

这样,你就可以把在时间截面上构造alpha的各种模型和方法,类比成开发在时间维度上进行择时的策略和方法,也就是说,相当于把一个垂直于时间的截面“躺倒”在了时间维度上,把一天发生的事情分到了两年发生。

**哈利:**哦哦,经过你这个类比我明白了。就是你把每天的创业板收益率,看成是一个个独立的股票在同一时刻的收益率,就可以用类似构造alpha的方法构造择时信号了。

**波特:**思想是没错,但是具体到细节,在时间维度的信号肯定和股票截面维度不一样嘛,而且alpha策略相当于把很多天的事情放到了一天发生,自然夏普率可以做到很高;而择时策略相当于只有一个维度,夏普率很难上去。这导致择时策略很难用非常复杂的信号,因为证伪需要的时间太久了。

**哈利:**你这个类比我听懂了,但这跟均线系统有毛线关系啊?

**波特:**你先别着急,我先给你举个简单的例子,你就能看懂了。

一个例子:单均线策略

**波特:**双均线的推导太复杂,我先跟你说单均线吧,单均线的大概定义你知道把?

**哈利:**大概就是“比较T日价格和T-N到T日均价看孰高,若前者大于后者则满仓,前者下于后者则空仓”?

**波特:**差不多就是这个意思,我们转化成数学表达,是不是就是比较对t日:

 P_t gt frac {sum_{i=0}^{n-1} P_{t-i}} {n}

这个不等式是否成立?如果成立,我就在t日满仓,获取t到t+1日的收益,否则就空仓?

**哈利:**嗯差不多就是这个意思。

**波特:**那我开始推导了。很显然这个等式等价于:

sum_{i=0}^{n-1} P_{t-i}-n cdot P_t lt 0

然后改写成:

 Longrightarrow sum_{i=0}^{n-1} (P_{t-i}-P_t) lt 0

左右同时除以 P_t ,有:

Longrightarrow sum_{i=0}^{n-1} (frac {P_{t-i}} {P_t}-1) lt 0

我们知道对于 x<<1 (x远小于1)有:

log(1+x) approx x

对于不太大的 i ,我们可以认为 P_{t-i} $和 P_t 比较接近,亦即我们可以令:

x Leftarrow frac {P_{t-i}} {P_t}-1

则我们可将上面的不等式写成:

Longrightarrow sum_{i=0}^{n-1} log(frac {P_{t-i}} {P_t}) lt 0

左右同时乘以-1,即有:

Longrightarrow sum_{i=0}^{n-1} log(frac {P_{t}} {P_{t-i}}) gt 0

很显然,对每一个 log(frac {P_{t}} {P_t-i}) ,我们有:

log(frac {P_{t}} {P_{t-i}}) = log(frac {P_{t}} {P_{t-1}} cdot frac {P_{t-1}} {P_{t-2}} ldots) =  log(frac {P_{t}} {P_{t-1}}) + log(frac {P_{t-1}} {P_{t-2}}) ldots = r_t + r_{t-1} + ldots = sum_{j=0}^{i-1} r_{t-j}

这里我们采用了通常的对数收益率的定义。将上式带入前面的公式就是:

Longrightarrow sum_{i=1}^{n-1} sum_{j=0}^{i-1}r_{t-j} gt 0

这个式子可以化简为:

Longrightarrow sum_{i=0}^{n-1} (n-i) cdot r_{t-i} > 0

如果我把 (n-i) 看看作是 r_{t-i} 的权重,上面这个式子是不是就相当于比较过去n日的收益率r的一个加权平均 bar r=sum_{i=0}^{n-1} w_i cdot r_{t-i} 和0的关系,如果这个加权平均大于0就于t+1日满仓,否则就空仓?

**哈利:**所以……其实单均线可以看作是构造了一个信号,这个信号是过去一段时间窗内的日收益率的加权平均,然后这个信号大于0就在t日满仓,否则就空仓;然后持续不断地对t+1、t+2日重复计算,从而连续得到每天是满仓还是空仓?

**波特:**你可以进一步想,既然我的投资决策是理性的,就说明这个信号和t+1日预期收益率正相关,否则我就不会在这个信号大于0时满仓、而小于0时空仓了。

**哈利:**所以从这个角度,你就连续地把t日的单均线变成了一个信号,这个信号与t+1日的收益率有相关性?这样你就可以通过滚动地考察t日的信号与t+1日收益率的相关性,也就是IC,来验证这个信号是否有效了?

波特:你说得对,不仅如此,通过上面的推导,我把单均线交叉变为了我们量化分析中熟悉的收益率。这样我就能看明白单均线策略的信号,实际相当于过去一段时间收益率的加权平均(也就是卷积),且权重是随着时间的推移逐渐降低的。这时候我就可以思考,这样的权重分布(也就是窗函数)是否有意义?

哈利:也就是说,你通过推导,说明了单均线其实相当于一个窗函数和收益率时间序列卷积,而这里的窗函数是一个直角三角形?这样你就可以看出来,基于某个均线模型,哪段时间的收益率对t+1日的收益率贡献的信息量更大,从而知道这个均线模型的优缺点?

**波特:**没错,通过这样的推导,我就可以所有的均线模型归纳成卷积形式: w bigotimes R ,通过分析窗函数w,就可以知道这个均线的意义。而且,卷积存在结合律和分配率,通过简单变化就可以变成各种均线的衍生指标,比如MACD。

**哈利:**我还是没听明白,老哥你再详细说说呗?

各种均线对应的窗函数举例

**波特:**实际上,双均线对应的窗函数是一个非直角三角形,也就是下面这样:

![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='887' height='417'></svg>)

为了懒省事花了个等腰三角形

也就是说,对于一个长线=200天,短线=50天的双均线,其意义就是:




取过去200天的日收益率r计算其加权平均数,其中:对于0-50日,权重从0线性上升;对于50-200日,权重线性下降到0权重之和=1

然后当这个算出的平均数>0时满仓,否则空仓。为了验证结果,可以看下用双均线和卷积计算出的平均数,这两者在沪深300上测试的历史结果:

![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1164' height='536'></svg>)

可以看到几乎完全重合。

**哈利:**你这解释看着有点牛逼啊,所以其实我也可以取其他权重画出各种均线?

**波特:**没错,权重其实可以取任何的窗函数,比如以下这些各种:

![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1093' height='593'></svg>)

**哈利:**那其实我就可以看出来,对于比如(50,200)这个双均线来说,用来预测t+1日收益率时,新信息的贡献很少,信息贡献度最大的其实是50日前?

**波特:**没错,通过窗函数你就可以开始思考,到底应不应该用某种均线,它的利弊是什么?例如,如果去看历史上收益率的自相关系数,你会发现并没有什么神奇的点,与t+1日的相关性显著高于其他日期

![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1133' height='575'></svg>)

典型的自相关系数,可以看到没有什么特殊点

**哈利:**那是否说明了,其实各种均线预测效果其实都差不多,纠结太复杂的均线模型没有意义?

**波特:**其实AQR的论文里研究过相关问题,他们认为各种均线做出来的信号是高度相关的。我个人也认为既然各个均线做出的效果差不多,不如用个最简单的。但是这样会有仓位突变的问题,你需要额外的技术来解决。类似双均线这样的系统可以一个指标解决信号、仓位调整等所有问题,但也因此,很多用双均线的人浅尝辄止,并没有进行更深入的研究。

**哈利:**你的意思是,正因为双均线每次新加进去的信息很少,移出去的信息也很少,所以很稳定,仓位变化很慢,因此不需要额外的技术来平滑仓位的变化?

波特:没错,但因此双均线也成为了一个很迟钝的信号。我觉得像这种放慢信号的技术,对以前交易成本很高的市场很好,因为你不想频繁交易。但如今,这种信号就太慢了,我们完全可以分离信号本身和仓位变化这两者,兼顾新信息的权重和仓位的调整,用一些其他技术来解决频繁交易的问题。而且,其实均线系统暗示的,是过去一段收益率的加权平均(历史平均收益率)对未来的收益率有预测性。而这个信号明显是可以优化得更好的,在均线系统里实际只进行了非常粗糙的处理。同时,一般均线系统不会告诉你,策略能运行的前提,是一个收益率时间序列本身有趋势性,而这个趋势性强弱可以通过简单窗函数构造出的信号的IC测试得出。如果一个简单的窗函数IC测试通不过,那你再怎么构造窗函数,基本只等于过拟合。

**哈利:**你的意思我大概听明白了,其实我们更需要的是一个可以度量的,比如0-100分的信号,当这个信号较强时加仓,较弱时减仓,类似alpha策略那种做法:对alpha强的股票重仓、多仓,对alpha弱的股票轻仓、空仓。但是均线系统给出的这个平均收益率,在历史上不同时间可能是不具有可比性的,也就是说在样本集内不稳定,因此需要调整。

**波特:**没错,其实我们可以从很基本、很简单的角度出发,对均线信号进行调整,就可以得到一个稳定得多、而且连续的信号了。

对于双均线,用最开始的那个、把收益率时间序列看作股票集收益率的说法,就是用【t日的过去50日均线减去200日均线是否大于0】作为信号Y,把【t到t+1日收益率】看作股票X,通过Y是否大于0把X分成两个集合,对于Y>0的就做多,否则不做或者做空。这其实是个很粗糙的分层方法,而且信号也是离散的,我们更喜欢的是连续的信号,这样就可以将股票集(也就是这里的时间序列)分成很多个集合,并且对比各个集合的特点了。

**哈利:**那你快告诉我怎么做咧?

**波特:**今天聊了太多啦,下次细细跟你说!

(待续。。。)

标签

量化研究均线