那一年,你在我的有效市场里随机游走,不经意间毁灭了我的理性人假设。从此,维持与你相爱的动量效应,成为我人生唯一的投资策略。
——送给她
一. 行为金融学
1. 行为金融学的发展
20世纪80年代,股票市场一系列经验研究发现了与有效市场不符现象,如股权溢价之谜、动量效应与反转效应、期权微笑等。到20世纪90年代,该领域涌现了大量高质量的理论和实证文献,形成最具活力的行为金融学派。
2002年,诺贝尔经济学奖授予了美国行为经济学家Daniel. Kahneman和Vernon L. Smith,以表彰他们在结合经济学和心理学理论来研究人们的决策行为方面所作出的贡献。至此,行为金融学正式登堂入室,近几年来发展迅猛,大有与现代金融理论并驾齐驱之势。
2. 行为金融学与现代金融学
(1)现代金融学的两大基石是有效市场假说(EMH)和资本资产定价模型(CAPM),因此它建立在市场有效竞争的基础上,能够在市场竞争中幸存下来的只有理性投资者。
(2)随着市场的发展,出现了一系列无法用现代金融学解释的现象,如股权以均价之谜、动量效应与反转效应、期权微笑等,现代金融学严格的假设条件限制了在实践中的运用。而行为金融学将心理学等学科融入金融学之中,能更好的解释这些现象。
本文所要说的动量效应和反转效应也是金融学的研究课题之一。
二. 动量效应与反转效应
动量效应是指前段时间收益率较高的股票,在接下来的表现仍会超过早期收益率低的股票,即,前段时间强势的股票,在未来一段时间继续保持强势。动量效应也成惯性效应,它来源于物理学的动量定理,该定理反映了力对时间的累计效应(见图1)。
图1、动量定理
同理有反转效应,它是指前段时间收益率低的股票,在其后的一段时间内有强烈的趋势经理相当大的逆转,即,前段时间弱的股票,未来一段时间会变强。
股票市场上的这些动量效应和反转效应,来源于投资者的心理认知偏差,比如:
(1)过度自信
人们在决策中总是倾向于过高估计自己的判断力和决策力,进而容易忽视情况变化造成决策失误。通常人们认为对某事抱有90%的把握时,事实证明成功的概率大约只有70%,自信与准确度的曲线关系间图2:
图2、自信心理与准确度的曲线关系
(2)后悔厌恶
后悔厌恶指当人们做出错误的决策时,对自己的行为感到痛苦。为了避免痛苦,人们常常做出许多看起来是非理性的行为。
(3)损失厌恶
损失厌恶是指人们面对同样数量的收益和损失时,感到损失比收益更加令他们难以忍受。
(4)锚定效应
锚定效应是指人们在对某人某事做出决策时,易受第一印象或者第一信息支配,人们在接受决策时,会不自觉地给予最初信息过多的关注。
(5)从众心理
当人们发现自己与多数人的判断不一致时,感受到一定的压力,从而改变原来自己正确的判断。
这些心理的认知偏差影响了投资者的决策行为,从而使股票市场对某种趋势反应过度或者反应不足,并最终导致动量效应和反转效应,见图3。
图3、动量效应/反转效应的心理学形成机制
三. 动量(反转)策略模型
如果能从股票市场上千只股票的大海中筛选出有动量效应的股票,即:当它的超额收益为正(负)时,之后的超额收益也会为正(负)。利用这个规律买入过去高收益的股票、卖出过去低收益的股票而获利的策略,叫做动量策略。相应地也可以利用反转效应构建反转策略,买入过去表现差的股票,卖出过去表现好的股票,并持有一段时间获得超额收益。
在“量化投资之多因子选股模型”中,说到金融市场中,来自市场的平均收益被称为Beta收益,独立于市场的超额收益则为Alpha收益,见图4
图片来源:数说工作室,《量化投资之多因子选股模型》
图4、Alpha收益与Beta收益的名称来源
实际上,一只股票的收益可以拆成Alpha、Beta和残差三个部分:
动量策略模型的目的在于判断出有动量效应和反转效应的股票,以便进行相应的投资。本图结合两个例子,简单介绍测试动量效应和反转效应的两种方法:
1. 时间序列判定法
联合证券的分析师对超额收益alpha构建时间序列,来判断动量效应或反转效应(研究报告《依靠强大的Alpha动量战胜市场——Alpha策略系列研究之三》)。
(1)模型思想
对超额收益Alpha构建时间序列模型,这里以最简单的AR(1)为例,股票收益可以写成如下形式:
当delta小于0时,alpha(t)会出现反转;
当delta介于0到1之间时,alpha(t)会逐渐收敛为0;
当delta和现在的超额收益alpha(t)都很大时,存在明显的动量效应,即未来的alpha(t 1)也会很大。
为了寻找下一期超额收益alpha尽可能大的股票,每周选择当期末da(t)最大的50只股票进入组合,且必须满足d和a(t)都大于0。到下一周再卖出全部股票,并买入新的组合,数据区间为2006年最后一个交易日到2008年8月1日。
(2)策略表现
首先,整体表现远远超过沪深300指数,见图5
图片来源:联合证券,《依靠强大的Alpha动量战胜市场——Alpha策略系列研究之三》
图5、动量策略表现与沪深300指数表现对比
其次,模型在股市出现结构性变化时失效。为了更细致的观察策略的表现,生成每周alpha动量策略,见图6。从图6中可以看出,策略选出来的组合在大部分时间里都有正的超额收益,但中间存在一段明显的的异常时期,该时期收益相对于沪深300指数的表现非常不稳定。而这段时间恰好是在2007年5月30日印花税上调之后到2007年10月中国股市达到顶点之前,除这段时间外,策略组合不论牛市或熊市都有很好表现。
图片来源:联合证券,《依靠强大的Alpha动量战胜市场——Alpha策略系列研究之三》
图6、动量策略组合的每周超额收益
再次,交易成本会显著影响到收益。由于策略交易频率非常高,这会带来大量交易成本,该报告按交易佣金1.5 ‰,交易印花税1 ‰、冲击成本2 ‰计,最后收益率将为63.4%。交易成本消耗了大量收益, 但仍然大大超过了沪深300指数同期的水平。并且,很多股票其实有持续好的表现,即本期被选入之后,下期因其良好表现也被选入,这样节省的买卖交易费用使得交易成本比上面假设的要低。
最后,策略的长期表现也很不错。将每周换仓一次改为8周换仓一次,收益见下图:
图片来源:联合证券,《依靠强大的Alpha动量战胜市场——Alpha策略系列研究之三》
图7、不同持有期收益率(折合成年率)
可以看出,策略选出来的股票持有期在1-8周的情况下表现都相当优异,即使在考虑交易成本的情况下,除了持有2周表现略差之外,其他策略都显著优于沪深300指数,种种迹象表明,具有alpha持续性的股票在alpha降低一段时间之后很有可能再次表现出较大的alpha。
2. 动量检验法
Jegadeesh和Titman(1993)首次发现并系统论证了动量现象,他们用统计检验来检验股票的动量效应。
(1)模型思想
首先,计算形成期内所有股票的累计收益率,并排序,选择最高的前10名,定义为“赢家组合”,最低的10名定义为“输家组合”,接着进入持有期。见图8。形成期是指股票形成赢家组合或输家组合的观察期;
持有期赢家组或输家组合的股票持有的期限,期末计算股票的超额收益率,也可以称作检验期。
用(P,Q)表示P个形成期,Q个持有期。
图8、动量检验法第一步流程图
第二步,计算持有期内,赢家组合的N个股票的平均累计超额收益率W_CAR,输家组合的超额收益率L_CAR,投资组合(买入收益率高的、卖出收益率低的)的超额收益率AD。
其中,CAR(w,i,t)是赢家组合的第i个股票在持有期时间内的累计超额收益率。
第三步,计算每个策略的样本数量n,求取每个策略赢家组合、输家组合、投资组合的总平均超额收益(W_GAR\L_GAR\GAD)。如对某个策略{P,Q},假设选择2000年1月到2010年6月为样本期,以每个月第一个交易日作为组合构建时点,那么测试样本有n=114个
第四步,构建T检验,判断动量效应。原假设为H0: L_GAR-W_GAR<=0,代表输家组合的总平均超常收益,显著低于赢家组合的总平均超常收益。t统计量形式为:
其中 ,
即L_CAR(t)与W_CAR(t)两者方差的平均数。
第五步,判断。如果假设通过,那么说明存在动量效应,否则存在反转效应。
复旦大学的张宇(2010)用这个方法研究了中国沪深两市的大部分普通股。发现我国的证券市场在短期(1到4周)上存在显著的“动量效应”,中期(6到9个月)则存在显著的“反转效应”。
四. 软件实现
简单介绍如何使用SAS和MATLAB来实现动量策略。
1. SAS
(1)用时间序列判断法来判定超额收益alpha是否存在动量效应。SAS构建AR(1)的代码如下:
Proc arima data=数据集;
Identify var=alpha;
Estimate p=1;
Run;Identify为识别语句,指定要建模的变量(这里为超额收益alpha),同时会给出卡方检验、白噪声检验、自相关检验的p值;
Estimate为估计语句,AR(1)即选择p=1。
(2)对于动量检验法,由于每个月的交易日构建时点,此时进行排序得到一个输家组合和赢家组合,将赢家组合和输家组合各自拆分到数据集w_data和l_data。以w_data为例,数据计算流程见图9:
图9、动量检验法SAS计算流程图
code 1和code 2的代码如下:code 1
Procsql;
create table w_car_data as
select year, month, avg(car) as w_car from w_data
group by year, month;
Quit;
code 2
Procsql;
create table w_gar_data as
select var(w_car) as s_w, avg(w_car) as w_gar from w_car_data;
Quit;
code2中得到了S_L与S_W,也得到了L_GAR与W_GAR,最终的t很容易求出来。
2. MATLAB
(1)用时间序列判断法来判定超额收益alpha是否存在动量效应,仍以AR(1)为例。
figure
autocorr(alpha)
figure
parcorr(alpha)
AR1=ar(x,1)
一般来说建立时间序列之前需要对模型进行定阶,这里给出自相关函数和偏自相关函数,判断准则为:偏自相关在p步截尾,属于AP(p);
自相关函数在q步截尾,属于MA(q);
自相关和偏自相关都拖尾,可判断属于ARMA(p,q);
(2)对于动量检验法,仍以w_data为例,MATLAB的数据计算流程如图10:
图10、动量检验法MATLAB计算流程图
code 1
for j =1:114
w_car_data(j,1)=j; %第一列n
w_car_data(j,2)=w_data(1 10*(j-1),2); %第二列year
w_car_data(j,3)=w_data(1 10*(j-1),3); %第三列month
w_car_data(j,4)= mean(w_data(((1 10*(j-1)):(10 10*(j-1))),4)); % 第四列w_car
end
code 2
S_W=var(w_car_data(:,4));
W_GAR=mean(w_car_data(:,4))
用同样方法求出S_L之后,在求这两个方差的均值=(S_L S_W)/2即为t统计量中的方法St。接着可求出t值。
五. 参考资料
丁鹏,《量化投资——策略与技术》,电子工业出版社
数说工作室,《量化投资之多因子选股模型》
联合证券,《依靠强大的Alpha动量战胜市场》
张宇,《我国股市的动量和反转投资策略实证研究》
程石,《中国股票市场动量策略和反转的实证研究》
(来源:数说工作室)