楼主: 点宽DigQuant
673 0

[其他] 【点宽专栏】华泰金工-CAPM择时(下) [推广有奖]

  • 0关注
  • 4粉丝

本科生

25%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
1.5552
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
990 点
帖子
35
精华
0
在线时间
34 小时
注册时间
2020-12-14
最后登录
2023-3-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币




绩效点评


该策略未进行参数优化时,已经表现较好,为了稳健性,我们将其信号再次滞后一阶,虽然业绩出现大幅下滑,但是仍然可以看出是一个向上的趋势。

以每周 5 个交易日,每月 4 个交易周为假设,我们以万得全 A 为市场指数,分别计算中信一级行业指数的 29 个行业两年左右( 96~104 周) 的贝塔。
得到贝塔后,我们对 29 个行业每周的收益率和贝塔计算Spearman 秩相关系数 。我们观察Spearman 秩相关系数的时间序列、分布后,决定采用4周滚动平滑处理Spearman 秩相关系数,降低其切换频率。


%% 收益率与beta的spearman系数
num = length(datelist);
spearman_ts = zeros(num,1);
for i=1:num
   spearman_ts(i) = corr(ret_mat(i,2:end)',beta_mat(i,:)', 'type' , 'Spearman');
end
% figure()
% plot(spearman_ts)
% xlim([0 num])
% figure()
% hist(spearman_ts)
% xlim([p0 num])
% 4周平均
[temp,~] = movavg(spearman_ts,4,6);
spearman_ts = [spearman_ts,temp];
% bar(spearman_ts(:,2),'r')
% xlim([0 num])

从平滑后结果来看,spearman系数已经具备较好的持续性。此外,还可选用其他方法进行优化和平滑,这里不再展开。


spearman系数时间序列、分布、4周MA序列



根据spearman系数的分布,秩相关系数选取 0.128 作为阈值,当秩相关系数大于0.128时,记作一次看多,当�̅秩相关系数小于−0.128时,记作一次看空。在连续两次观测到同向信号时,正式看多/看空指数, 发生看多/看空指令;当观测到反向信号时,清空之前观测,以最近一次观测的方向为基准。


简单回测结果


%% 数据回测
signal_ts = zeros(num,1);  % 信号序列
count = 0;  % 信号计数器
p = 0.128;  % 阈值
for i=2:num
   if signal_ts(i-1)==0  % 上期无仓位
       if spearman_ts(i)>=p  % 当期发出看多信号
           if count==1  % 确认看多
               signal_ts(i) = 1;
           else
               count = count+1;
           end
       elseif spearman_ts(i)<=-p  % 当期发出看空信号
           if count==-1  % 确认看空
               signal_ts(i) = -1;
           else
               count = count-1;
           end
       end
   elseif signal_ts(i-1)==-1  % 上期空头
       if spearman_ts(i)>=p  % 当期发出看多信号
           signal_ts(i) = 0;
           count = 1;
       else
           signal_ts(i) = -1;  % 当期继续空头
       end
   elseif signal_ts(i-1)==1  % 上期多头
       if spearman_ts(i)<=p  % 当期发出看空信号
           signal_ts(i) = 0;
           count = -1;
       else
          signal_ts(i) = 1;  % 当期继续多头
       end
   end
end

下面为业绩评价函数,为了简洁直观,仅评价了策略的:年化收益率、年化波动率、夏普比率、最大回撤、CAR比率。一般来说,机构更关注回撤和CAR比率,因为风险永远是第一位,收益是其次的,如果CAR比率够高,策略完全可以通过控制仓位来保证收益和控制风险。


业绩评价函数


function record = performance_evaluation(ret_index)
annual_ret = power(ret_index(end-1)/ret_index(1), 52/length(ret_index))-1;
annual_vol = std(tick2ret(ret_index))*sqrt(52);
sr = annual_ret/annual_vol;
maxdd = mdd(ret_index);
car = annual_ret/maxdd;
record = [annual_ret,annual_vol,sr,maxdd,car];
end
function maxdd=mdd(ret_index)
num = length(ret_index);
ret_index = [ret_index,zeros(num,1)];
for i=1:length(ret_index)
   ret_index(i,2)=max(ret_index(1:i,1));
end
maxdd = max((ret_index(:,2)-ret_index(:,1))./ret_index(:,2));
end

通过简单收益率和复合收益率,可以发现,CAPM择时效果较为突出,除了部分时间出现了回撤。在计算beta时,我们已经滞后过一阶,但是为了保证稳健性我们再次滞后一阶,也进行了策略检验,其结果如下。假定本策略可以采用多空(可以考虑股指期货的多空)。


策略表现



净值曲线-累乘法-0阶滞后

净值曲线-累乘法-1阶滞后

净值曲线-累加法-0阶滞后

净值曲线-累加法-1阶滞后


未来优化方向


我认为该策略有如下几种优化方式:


1.调整参数频率(这也是最差的优化方法,要“优化逻辑”,而不是参数)2.对于Spearman的时间序列预测可以提高,加入其它时间序列方法3.行业择时可能不如其它风格指数择时,因为行业自身的beta有其他推动力4.对于beta估计要优化,因为beta的时变性在本文中没有处理,学界研究很多,可以借鉴5.beta其实和市场溢价并不算线性,可参见文章AQR基金文章Betting Against Beta,所以这方面逻辑需要改善,对于高Beta的负Alpha折价,其实更好反应了市场的投机心理
总结量化只是一种方法,其背后的金融是核心,因此每次进行研究,都需要仔细思考策略的推动力和信号体系是如何构建的。其次,量化策略相对于主观的最大优势是风险控制能力,往往风险是第一位,而收益只是第二位的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:CAPM cap APM SPEARMAN系数 spearman

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 06:03