如何计算股票板块的收益率用于构造模型训练标注和模型过滤? (副本)
由small_q创建,最终由small_q 被浏览 13 用户
作者:woshisilvio
如何构造板块收益率的标注?
计算板块收益率
首先通过代码列表 和特征因子列表提取基础因子用于后续计算我们的板块收益率
- industry_sw_level2_0
- market_cap_float_0
- daily_return_0
计算板块流通收益率
其次将申万二级行业的数据库表和 股票的日线行情表连接起来。运用 dataframe的 grouby 和merge操作 计算出我们需要的板块流通收益率。
ps:这里也可以直接计算收益 不需要股票的流通市值
block_data = basic_data.groupby(['name_SW2','date']).agg({'daily_return_0':'sum','market_cap_float_0':'sum'}).reset_index()
block_data.columns = ['name_SW2','date','daily_return_0_block_sum','market_cap_float_0_block_sum']
#合并
rst = pd.merge(basic_data[['date','name_SW2','instrument','daily_return_0','market_cap_float_0']],block_data,on=['date','name_SW2'],how='left').dropna() 得到 rst['板块流通收益率'] = rst['daily_return_0']*rst['market_cap_float_0']/rst['market_cap_float_0_block_sum']
传入自动标注引擎
最后把合并后的表 m12 传入自动标注引擎,标注就完成了,赶快打开m12模块 和m21模块查看构造的标注
如何利用板块收益率对标的过滤?
方法
把计算好的板块收益率数据 跟我们的因子数据连接起来之后 使用数据过滤模块 就可以很轻松实现这一个需求。
原理
为何要过滤板块收益率?
热点追涨
很多时候模型选出来的股票虽然得分score很高,但明显不是近期热点,那模型选股的赚钱效应不强,这个时候可以让模型的选股风格贴近市场的热点 。过滤比如近期板块收益率较高,或者板块动量较强的,或者全市场收益前5名的板块,在这一个范围内选股,就有可能使模型选股达到一个强中选强,甚至1+1>2的效果 。
举例
-
过滤当日板块收益 排在头部top前5% 的的股票
(rank(板块流通收益率)>=0.95)
-
过滤近五日板块收益总合 排在 头部top前10% 的的股票
(rank(sum(板块流通收益率,5))>=0.9)
-
过滤近3日板块收益均值 大于 近3日板块益均值 (均线)
(mean(板块流通收益率,3)>=mean(板块流通收益率,5))
-
过滤近5日板块收益均值 大于 近10日板块益均值 (均线)
(mean(板块流通收益率,5)>=mean(板块流通收益率,10))
热点回调
有些模型的因子特征还有选股的风格偏好,偏向于选取前期超跌 有反弹预期的股票,这事如果叠加板块的超跌效应, 过滤选取近期板块收益率排名靠后的股票,可以让模型的选股偏好更具有针对性,有概率选到前期的老龙头、老妖股,超跌股、强势股反弹。
视频讲解
https://www.bilibili.com/video/BV1p8411t7LH/?vd_source=ecd29bbd04cbefdfa426167c55241973&t=0.3
策略源码
https://bigquant.com/experimentshare/3fe80e5b719d4d0d86132319d9512019
\