量化百科

一类简单的群体行为择时模型框架及实现测试-by李洋faruto

由ypyu创建,最终由ypyu 被浏览 18 用户

本篇名字叫得比较高大上,其实就是和大家讨论交流一种逻辑简单明了且贴近“实战”的择时模型。

我们知道,所有的指数的构建过程大体都是这样的:通过某种规则从某一初始股票池中选出一定数量的股票,然后通过某种加权平均的方式构建出最后的指数,再按照事先设定好的调整周期来调整成分股。从数学的角度把上面的过程抽象一下,定义上面的选股规则为Rule,定义初始的股票池为sPool=(Stock_1,Stock_2,…,Stock_M),定义某种加权平均算法即其他细节处理(分级靠档技术和缓冲区技术等等)为f,则某一指数Index可以表征为:

Index = f( Rule(sPool) ) = f( Rule(Stock_1,Stock_2,…,Stock_M) )

如果假定通过Rule最后选出的股票数量为N(这里的N可以是固定的,比如沪深300指数、上证50指数;也可以是变动的,比如MSCI A股指数),则Index可以简化为:

Index = f( Rule(sPool) ) = f(Stock_1,Stock_2,…,Stock_N )

通过上市可以很清楚的看出,指数的行为可以描述成若干个股的一个函数,当然,“指数的行为可以描述成若干个股的一个函数”这一结论可能并不需要上面的稍显复杂的抽象过程,大家直观也能想出来,上面的抽象过程更多的是为了下面的择时模型的描述方便。

定义某一指数择时模型为TM(Timing Model),其在指数上作用无外乎就是涨、跌、平等状态描述:

TM(Index) = {-1,1} 或 TM(Index) = {-1,0,1}

其中定义1:涨(做多);-1:跌(做空);0:平(不操作)。

结合Index的定义,可以将择时模型TM展开为

TM(Index) = TM(f(Stock_1,Stock_2,…,Stock_N ))

好玩的事情来了,如果TM和f都是同一个空间的函数(或者说TM和f大多数会是一个空间的函数,其实这里f应该能解析的表达出来),姑且可以先不深入讨论其底层的数学支撑,如果假定TM和f位置互换后,可以由另外一组函数sf,sTM来描述,即

TM(Index) = TM(f(Stock_1,Stock_2,…,Stock_N))

= sf(sTM(Stock_1,Stock_2,…,Stock_N) )

也就是说指数的某一类择时模型可以由个股的行为来综合描述,这里不妨叫这一类择时模型为“群体行为择时模型”。

好吧,可能上面这些会把一些朋友说得云里雾里,直白来说,就是指数的择时模型可以通过对其成分股的行为描述(打分),最后通过某种方式整合到一起(综合打分)来构建。

下面看一个上面提出的群体行为择时模型的一个简单实例,就会更加清楚了,而且你会发现这种逻辑简单明了且贴近实战。

以简单的均线为例,虽然均线很简单,但简单的东西往往最具有生命力,最能有效的描述市场。我们知道均线的模型都具有滞后性,我们可以使用常见的20日均线作用在指数上进行择时,我想效果不会差,但会有一定的滞后性,这没有办法,因为不存在圣杯,但本篇要讨论的是一个基于上面的群体行为择时框架的均线类择时模型。

回到上面的模型框架:

TM(Index) = sf(sTM(Stock_1,Stock_2,…,Stock_N) )

构建择时模型TM_demo,对于单只个股定义

sTM(Stock_i)={个股与均线1的相对位置量化描述,个股与均线2的相对位置量化描述},sf为某种加权平均(线性或非线性),

这样的模型是有直观理解的,比如指数下破20日均线,说明指数可能开启下跌行情,但往往此时可能行情已经走出了一些时日了,想象一下“指数下破20日均线”这一行为的发生过程:**初期有指数的成分股有少数几只股票下破了20日均线,但综合起来指数仍然在20日均线上面,慢慢地,随着下破20日均线的股票数目增多,一直处于20日均线下面的股票数量越来越多,最后导致某一天综合起来指数下破了20日均线。**如果能有有效的量化描述“指数下破20日均线”这一行为过程,那么就可以更好地更加及时的进行指数择时,上面的择时模型TM_demo就可以是一个量化描述,下面来具体测试实现一下。

以下测试基于MATLAB,数据来源为FQuantToolBox和Wind,测试标的为沪深300指数(000300.SH),使用T日之前(T-1日、T-2日,… …)的数据来生成信号指导T日交易,按照择时模型TM_demo生成的择时信号如下:

可以看到正如我们料想的那样,群体行为择时模型TM_demo在某些时点可以提前发生买入和卖出信号,但也不是在任何时候都百分之百准确,因为不存在圣杯。

在来放到看下2015年近期的信号:

可以看到模型的“运气”还比较不错。

基于上面的择时信号,下面再来系统回测一下,使用T日之前(T-1日、T-2日,… …)的数据来生成信号指导T日交易,若有最多信号,则T日开盘买入测试标的,若有做空信号则空仓观望(后面会有做空的测试),测试结果如下:

若允许做空,测试结果如下:

当然任何模型都有参数,择时模型TM_demo核心参数有两个,上面的测试结果没有进行参数寻优,是我自己给出的经验参数。

总结:希望大家能够理解我前面的介绍的群体行为择时模型框架,后面的测试仅仅是一个简单的实例测试,这里多说一句,一个好的择时模型,一则可以用来直接交易相关标的,二则可以用来进行相关板块投资的仓位调控。

我个人喜欢逻辑简单明了的东西(但逻辑简单明了的东西并不意味着模型本身非得简单),简单的东西往往最具有生命力,最能有效的描述市场。本篇可能更多的侧重介绍实际交易层面逻辑简单明了的模型框架,如果有任何疑义欢迎给我发邮件,一起讨论、交流、学习、提升。

标签

量化择时