字数 1446,阅读大约需 8 分钟
很多做量化的人都会遇到一个问题: 想研究微盘股,却拿不到微盘股指数。
最近几年,微盘成为市场中一个非常热门的方向。很多平台都推出了自己的 微盘股指数 ,用来跟踪这一板块的整体走势。
但问题是:这些指数大多 并非官方指数 ,无法通过常规数据接口获取,例如Tushare、聚宽等。

万得微盘股指数
最典型的就是万得微盘股指数,基本只能通过Wind终端获取。

对于习惯 本地化研究和自动化策略开发 的人来说,如果在本地拿不到微盘股指数,就会少一个非常重要的参考指标。
于是问题来了: 我们能不能自己在本地编制一个微盘股指数?
答案是: 完全可以 。
而且实现起来比想象中简单得多。
微盘股指数怎么编制?
我们先来看一下 万得微盘股指数(8841431.WI) 的定义。该指数:
- 1. 以上海证券交易所 + 深圳证券交易所全部上市公司为样本空间
- 2. 剔除ST、 *ST、退市警示票
- 3. 按总市值排序
- 4. 选择市值最小的400只票
- 5. 每日调仓,等权计算指数
换句话说,如果要在本地编制微盘股指数,每天也只需要做以上几个步骤,非常简单。

需要的数据
要在本地实现这个指数,核心需要获取以下几类数据:
1️⃣ 历史某日全市场股票列表
2️⃣ 历史某日 ST 、*ST 票
3️⃣ 历史某日退市警示票
4️⃣ 股票总市值数据
5️⃣ 长时段的历史行情
看起来好像很麻烦,但好消息是: 这些数据 Tushare 都可以提供 。只是需要我们自己做一些基本数据处理。
具体实现步骤
第一步:获取历史某日的全市场股票
首先,我们需要知道 某一天市场上到底有哪些票 。
这个可以直接使用 Tushare 的
pro.daily()
接口。
通过获取某一天的 全市场行情数据 ,我们就可以提取出该日的股票列表。
pro.daily():https://tushare.pro/document/2?doc_id=27

第二步:剔除 ST 和 *ST 票
ST 与 *ST 票需要从样本中剔除。
这里可以使用 Tushare 的
pro.namechange()
接口。这个接口会返回股票
历史名称变更记录
。
如果某只票在某个时间段内:名称包含 ST 或 *ST,并且目标日期落在该时间区间内,就可以认为: 该票当日为 ST 、*ST票,需要剔除。
pro.namechange(): https://tushare.pro/document/2?doc_id=100

第三步:剔除退市警示票
退市警示票同样需要剔除。方法与剔除ST票类似:依然使用
pro.namechange()
接口。
如果某只票在某段时间内: 名称中包含 “退” ,那么可以认为该票在该日期处于 退市警示状态 ,需要从样本中剔除。

第四步:获取股票总市值
指数选股的核心指标是
总市值
。这个数据可以通过 Tushare 的
pro.daily_basic()
接口 获取,其中字段
total_mv
表示股票总市值。
通过这个字段,我们就可以每日对股票按市值排序,并选出最小的 400 只票。
pro.daily_basic(): https://tushare.pro/document/2?doc_id=32

第五步:获取长时段行情
前面几个步骤解决的是每天应该选哪 400 只票。但在编制指数时,我们还需要 长时段区间的历史行情数据 ,以计算每日收益。
这里同样可以使用
pro.daily()
接口:
- 1. 逐日获取全市场行情
- 2. 将数据拼接成完整历史数据库
-
3. 然后自行按照
close、pre_close字段进行复权。
这样就可以得到完整的历史行情序列。

至此,指数编制所需的数据就全部准备好了。
本地复刻过程
事实上,上述功能在我之前写的 本地量化接口库 中已经实现了。由于有了之前的接口库基础,这次在本地复刻微盘股指数时, 不到半个小时就完成了复刻,非常丝滑 。

这也再次说明:提前把数据接口和基础工具做好,后面做研究效率会高很多。
对比分析
指数编制完成后,我也做了一些简单验证。
结果如下:
1️⃣ 指数走势
本地编制的微盘股指数与万得微盘股指数的相关性达到 0.999。走势几乎完全一致。

虽然收益率存在一些细微差异,但均摊到每日,这个差别已经非常小。
Key Metrics:
- overlap_start: 20210104
- overlap_end: 20260304
- overlap_trade_days: 1249
- level_correlation: 0.9997756976444235
- daily_return_correlation: 0.9993509169836524
- normalized_mae: 0.2045740466495314
- normalized_rmse: 0.260433398856542262️⃣ 成分股对比
我们对比了最近三日(20260303、20260304、20260305)本地编制的微盘股指数成分股与万得微盘股指数成分股的差别,结果发现在400只成分股中,这三日分别只有12、12、19只成分股不同, 成分股相似度分别为97%、97%、95%,相似度非常高。

以上分析让我们对本地编制的微盘股指数有了极大的信心,说明本地编制的微盘股指数是靠谱的。
没有 Wind,一样可以研究微盘
当微盘股指数可以在本地复现后,后面基于微盘股指数开发策略、开展研究、实现本地自动化流程等就方便多了,不用费老大劲去其他地方提取微盘股指数。
即使没有 Wind,也可以在本地建立完整的微盘研究体系。
没有评论:
发表评论