国泰君安191短周期因子之一——因子体系介绍
发布时间:2017/10/13 17:11:01 6969 0
# 前言 本次报告将开启对国泰君安金工刘富兵团队报告《基于短周期价量特征的多因子选股体系——数量化专题之九十三》的单因子回测。该报告集中测试了股票市场191个短周期的alpha因子,与此前市面上WorldQuant101和广发证券“技术因子海量挖掘”等报告一样,是一篇值得去实践的研报。目前中低频的alpha因子衰退严重,变成了一场追逐风格变换的游戏,而短周期因子的alpha仍有很大机会,因为其容量不大,没有大资金介入。本系列报告将遵循以下模板,每次汇报3个因子。 ------------ ## 方法概述 1. **股票池选择:**中证500(目前无中证500历史成分,因此暂用当前500成分)。中证500是沪深300之后市值最大的500只股票,具备良好的定投特性: - 中证500的成分构造比沪深300更合理,投资沪深300等于投资了大部分的银行、保险等权重股,而对中证500的影响较小。 - 沪深300市值过大,中证500市值较为适合,而同时又避免了投资更小市值股票的风险。 - 沪深300是高估的中证500。 2. **换仓:**因为是短周期因子,其有效IC大部分处于1-5天,因此每5日换仓一次较为合理。 #### 回测换仓逻辑与代码 % 股票交易 targetList = traderGetTargetList(); % 获取标的信息。 TLen = length(targetList); % 资产数量,不对冲 dSignal = traderGetRegUserIndi(g_idxSignal,2); % 获取交易信号 [map,~,~]=traderGetAccountPositionV2(1,1:TLen); % 股票头寸 [~,MarketCap,~,~,~] = traderGetAccountInfoV2(1); % 现在账户持有的现金和股票市值 capitalPerShare = MarketCap/assetNum; % 每只股票买的钱数,不对冲 stockList = 1:assetNum; % 可买股票池 % ——————————————————调仓——————————————————— for i=1:TLen dataDay = traderGetRegKData(g_idxKDay(i,:),1,false); % 取当日数据 if isnan(dataDay) dataDay=[]; end % 数据长度足够;数据非空;当日的成交量不为0;当日高收不同----去除停牌,涨跌停情况 if isempty(dataDay) || dataDay(6,end) ==0 || (dataDay(3,end)- dataDay(4,end))==0 continue; end if (map(i)~=0)&&(~ismember(dSignal(i,end),stockList)) % 上期持有,这期不持有 traderPositionToV2(1,i,0,0,'market','close'); elseif ismember(dSignal(i,end),stockList) % 这期持有的,这期调仓 stockNum = 100*floor(capitalPerShare/dataDay(5,end)/100); % 每只股票买的股数 traderPositionToV2(1,i,stockNum,0,'market','close'); end end 3. **持仓数:**每期持仓中证500的10%,大约50只。 4. **分时间段测试:**不同因子需要得到其在不同市场状况的表现,因此我们将市场分为4段: ![总体市场走势](https://bpstoragenormal.blob.core.chinacloudapi.cn/digquant/prod/./data/attachment/forum/201710/14/002215c2i9pcp9cp0hcmjd.png "总体市场走势") - 熊市-市场阴跌:2011-01-01至2013-07-31 - 牛市-市场急涨:2013-08-01至2015-04-30 - 熊市-市场急跌:2015-05-01至2016-06-30 - 牛市-市场慢牛:2016-07-01至2017-09-30 ------------ # 因子汇总 下述为本期3个短周期alpha表现结果(20160701_20170930最近慢牛区间表现)。3颗星表明因子表现较好,2颗星表明因子具备一定价值,1颗星表明因子不具备操作可行性。 >#### 因子间比较 ![因子间比较](https://bpstoragenormal.blob.core.chinacloudapi.cn/digquant/prod/./data/attachment/forum/201710/14/001311dvzj0d0rkgyhhcwc.png "因子间比较") 下表为3个市场下因子的分别表现情况。 >#### 各区间因子收益特征 ![各因子收益特征](https://bpstoragenormal.blob.core.chinacloudapi.cn/digquant/prod/./data/attachment/forum/201710/14/001823sh4z0d890pdx488p.png "各因子收益特征") ## 编号:Alpha001 ### 因子公式 ![alpha001公式](https://bpstoragenormal.blob.core.chinacloudapi.cn/digquant/prod/./data/attachment/forum/201710/14/001617yaua39e2aje2uqgd.png "alpha001公式") ### 因子含义 刻画成交量变化排名与日内收益率排名的偏离程度,表现为成交量变化排名上升,日内收益率排名下降;成交量变化排名下降,日内收益率排名上升。 ### 分时段因子表现 根据由左至右由上至下的为1-4种市场情况因子表现。 >### alpha001各市场表现 ![alpha001](https://bpstoragenormal.blob.core.chinacloudapi.cn/digquant/prod/./data/attachment/forum/201710/14/003414n4ebbezl9megeajy.jpg "alpha001") ### 因子代码 function value=getSignal(cellPar,bpPFCell) %% 参数声明 idxK =cellPar{1}; % 横轴为日期,纵轴为资产数量 %% 因子计算 [tradeNum,~]=size(idxK); % 资产数量 regKMatrix = traderGetRegKData(idxK,7,false,bpPFCell); % -1 * CORR(RANK(DELTA(LOG(VOLUME), 1)), RANK((CLOSE - OPEN) / OPEN), 6) volume = regKMatrix(6:8:tradeNum*8,:); mid1 = log(volume); mid2 = diff(mid1,1,2); mid3 = my_sort(mid2); close = regKMatrix(5:8:tradeNum*8,:); open = regKMatrix(2:8:tradeNum*8,:); mid4 = (close-open)./open; mid5 = my_sort(mid4); value1 = diag(corr(mid3(:,:)', mid5(:,2:7)')); value = my_sort(value1); nan_idx = sum(isnan(volume),2); % 存在停牌以及该K线停牌的股票 value(find(nan_idx~=0)) = nan; % 该股票因子值为nan end ### 策略链接 [【国泰君安】191短周期因子系列——alpha001](https://www.digquant.com.cn/stra.php?mod=model&pid=313 "【国泰君安】191短周期因子系列——alpha001") ## 编号:Alpha002 ### 因子公式 ![alpha002公式](https://bpstoragenormal.blob.core.chinacloudapi.cn/digquant/prod/./data/attachment/forum/201710/14/003956nss7nqtkt5m03egm.png "alpha002公式") ### 因子含义 刻画多空失衡变动情况,用(CLOSE - LOW) - (HIGH - CLOSE)) / (HIGH - LOW)表示多空力量不平衡度。 ### 分时段因子表现 根据由左至右由上至下的为1-4种市场情况因子表现。 >### alpha002各市场表现 ![alpha002因子表现](https://bpstoragenormal.blob.core.chinacloudapi.cn/digquant/prod/./data/attachment/forum/201710/14/004010a47zfbz8yebed4e7.jpg "alpha002因子表现") ### 因子代码 function value=getSignal(cellPar,bpPFCell) %% 参数声明 idxK =cellPar{1}; % 横轴为日期,纵轴为资产数量 %% 因子计算 [tradeNum,~]=size(idxK); % 资产数量 regKMatrix = traderGetRegKData(idxK,2,false,bpPFCell); % (-1 * DELTA((((CLOSE - LOW) - (HIGH - CLOSE)) / (HIGH - LOW)), 1)) close = regKMatrix(5:8:tradeNum*8,:); low = regKMatrix(4:8:tradeNum*8,:); high = regKMatrix(3:8:tradeNum*8,:); mid1 = diff(((close-low) - (high-close))./(high-low),1,2); value = my_sort(mid1); nan_idx = sum(isnan(close),2); % 存在停牌以及该K线停牌的股票 value(find(nan_idx~=0)) = nan; % 该股票因子值为nan end ### 策略链接 [【国泰君安】191短周期因子系列——alpha002](https://www.digquant.com.cn/stra.php?mod=model&pid=314 "【国泰君安】191短周期因子系列——alpha002") ## 编号:Alpha003 ### 因子公式 ![alpha003公式](https://bpstoragenormal.blob.core.chinacloudapi.cn/digquant/prod/./data/attachment/forum/201710/14/004026kkj207a7on20ap6t.png "alpha003公式") ### 因子含义 刻画多空失衡变动情况,用(CLOSE - LOW) - (HIGH - CLOSE)) / (HIGH - LOW)表示多空力量不平衡度。 ### 分时段因子表现 根据由左至右由上至下的为1-4种市场情况因子表现。 >### alpha003各市场表现 ![alpha003因子表现](https://bpstoragenormal.blob.core.chinacloudapi.cn/digquant/prod/./data/attachment/forum/201710/14/004040tttc2a13sf7vt711.jpg "alpha003因子表现") ### 因子代码 function value=getSignal(cellPar,bpPFCell) %% 参数声明 idxK =cellPar{1}; % 横轴为日期,纵轴为资产数量 %% 因子计算 [tradeNum,~]=size(idxK); % 资产数量 regKMatrix = traderGetRegKData(idxK,7,false,bpPFCell); % SUM((CLOSE=DELAY(CLOSE,1)?0:CLOSE-(CLOSE>DELAY(CLOSE,1)?MIN(LOW,DELAY(CLOSE,1)):MAX(HIGH,DELAY(CLOSE,1)))),6) close = regKMatrix(5:8:tradeNum*8,:); mid1 = close(:,2:7)==close(:,1:6); mid2 = close(:,2:7); mid2(mid1) = 0; mid3 = close(:,2:7)>close(:,1:6); mid4 = close(:,2:7)<=close(:,1:6); low = regKMatrix(4:8:tradeNum*8,:); high = regKMatrix(3:8:tradeNum*8,:); mid5 = mid3.*low(:,2:7)+mid4.*high(:,2:7); mid6 = sum(mid2-mid5,2); value = my_sort(mid6); nan_idx = sum(isnan(close),2); % 存在停牌以及该K线停牌的股票 value(find(nan_idx~=0)) = nan; % 该股票因子值为nan end ### 策略链接 [【国泰君安】191短周期因子系列——alpha003](https://www.digquant.com.cn/stra.php?mod=model&pid=315 "【国泰君安】191短周期因子系列——alpha003")
1个赞 收藏
发表评论
0条评论
contact@digquant.com.cn

联系

邮箱

0755-8695-2080

联系

电话

关注

微信

关注

QQ

回到

顶部