2026年3月7日星期六

拿不到微盘股指数?我用 Tushare 在本地复刻了一个

 

字数 1446,阅读大约需 8 分钟

很多做量化的人都会遇到一个问题: 想研究微盘股,却拿不到微盘股指数。

最近几年,微盘成为市场中一个非常热门的方向。很多平台都推出了自己的 微盘股指数 ,用来跟踪这一板块的整体走势。

但问题是:这些指数大多 并非官方指数 ,无法通过常规数据接口获取,例如Tushare、聚宽等。

万得微盘股指数

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

对于习惯 本地化研究和自动化策略开发 的人来说,如果在本地拿不到微盘股指数,就会少一个非常重要的参考指标。

于是问题来了: 我们能不能自己在本地编制一个微盘股指数?

答案是: 完全可以

而且实现起来比想象中简单得多。

微盘股指数怎么编制?

我们先来看一下 万得微盘股指数(8841431.WI) 的定义。该指数:

  1. 1. 以上海证券交易所 + 深圳证券交易所全部上市公司为样本空间
  2. 2. 剔除ST、 *ST、退市警示票
  3. 3. 按总市值排序
  4. 4. 选择市值最小的400只票
  5. 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. 1. 逐日获取全市场行情
  2. 2. 将数据拼接成完整历史数据库
  3. 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.26043339885654226

2️⃣ 成分股对比

我们对比了最近三日(20260303、20260304、20260305)本地编制的微盘股指数成分股与万得微盘股指数成分股的差别,结果发现在400只成分股中,这三日分别只有12、12、19只成分股不同, 成分股相似度分别为97%、97%、95%,相似度非常高。

以上分析让我们对本地编制的微盘股指数有了极大的信心,说明本地编制的微盘股指数是靠谱的。

没有 Wind,一样可以研究微盘

当微盘股指数可以在本地复现后,后面基于微盘股指数开发策略、开展研究、实现本地自动化流程等就方便多了,不用费老大劲去其他地方提取微盘股指数。

即使没有 Wind,也可以在本地建立完整的微盘研究体系。

 

没有评论:

发表评论

博客目录

    🔧 本地量化项目入口

    📦 本地量化接口库
    前往仓库 →
    💹 实盘交易系统(Live Trading System)
    前往仓库 →
    📊 策略模拟实盘(Strategy Live Trading)
    前往仓库 →