Skip to content

第 9 讲:先定股票池 Universe

本讲要点

没有写死的池子,就没有可复核的横截面比较。


1. 为何第 8 讲之后先讲池子

第 8 讲已演示 动量轮动:在四只 ETF 里按月排名、持有 Top-2。那四只并不是随手点的——它们构成了研究用的 Universe(可投资集合)

本讲把这一步单独写清楚:

轮动比较的是「池内相对强弱」。池子未定义,排名就没有合法对象。

阅读顺序上,B 单元以第 8 讲建立主线直觉,第 9–10 讲补全其前置组件:谁能进场(Universe)进场后各买多少(权重)


2. Universe 是什么

Universe = 事先约定、可复现的一篮子标的,以及它们在回测中「何时有资格被选中」的规则。

随意选股有 Universe
比较范围今天想比谁就比谁只在名单内比较
复现他人无法重做名单与规则可公开复核
偏差易混入事后才出名的票仍须警惕,但边界更清楚

入门阶段常用两类池子:

  1. ETF / 指数篮子(本课程演示):流动性好、规则简单、少涉及个股停牌细节。
  2. 股票池:还需写明市值、流动性、上市天数等过滤;并处理幸存者、退市与停牌——后面可扩展,本讲先用 ETF 把概念立住。

3. 本课程冻结的演示池

与第 8 讲相同,研究期内不临时加减成分

代码名称在池中的角色
510300.SS沪深300ETFA 股大盘
510500.SS中证500ETFA 股中盘
159915.SZ创业板ETF成长风格
518880.SS黄金ETF商品 / 避险代理

规则窗口:2021-01-012026-03-04(与全书主实验一致)。

为何放入黄金:三只权益 ETF 之间相关较高,黄金与之相关偏低,使「横截面轮动」有机会在风格切换时换仓,而不是四只几乎同涨同跌。


4. 代码:列出池子并检查覆盖

python
UNIVERSE = [
    ("510300.SS", "沪深300ETF", "A股大盘"),
    ("510500.SS", "中证500ETF", "A股中盘"),
    ("159915.SZ", "创业板ETF", "成长风格"),
    ("518880.SS", "黄金ETF", "商品/避险代理"),
]

raw = yf.download(
    [s for s, _, _ in UNIVERSE],
    start="2021-01-01",
    end=...,
    auto_adjust=True,
    progress=False,
)["Close"]

for code, name, role in UNIVERSE:
    ser = raw[code].dropna()
    print(name, ser.index[0].date(), "→", ser.index[-1].date(), "n=", len(ser))

month_ret = raw.dropna(how="any").resample("ME").last().pct_change().dropna()
print(month_ret.corr().round(2))

脚本:easy-quant/code/09_universe.py


5. 运行结果

text
Universe 规则窗口: 2021-01-01 → 2026-03-04
成分数量: 4
成分列表(代码 / 名称 / 角色):
  510300.SS  沪深300ETF  [A股大盘]
  510500.SS  中证500ETF  [A股中盘]
  159915.SZ  创业板ETF  [成长风格]
  518880.SS  黄金ETF  [商品/避险代理]

数据覆盖:
  沪深300ETF: 2021-01-04 → 2026-03-04  交易日 1248  缺失 0
  中证500ETF: 2021-01-04 → 2026-03-04  交易日 1248  缺失 0
  创业板ETF: 2021-01-04 → 2026-03-04  交易日 1248  缺失 0
  黄金ETF: 2021-01-04 → 2026-03-04  交易日 1248  缺失 0

四者同时有价的交易日: 1248
月收益相关系数:
           创业板ETF  沪深300ETF  中证500ETF  黄金ETF
创业板ETF      1.00      0.87      0.88   0.12
沪深300ETF    0.87      1.00      0.83   0.09
中证500ETF    0.88      0.83      1.00   0.18
黄金ETF       0.12      0.09      0.18   1.00

Universe 月收益相关

读法:权益三只两两相关约 0.8–0.9;黄金与它们约 0.1–0.2。池子因此同时具备「可比的横截面」与「一定分散度」。若四只几乎完全相关,轮动只是在噪声里换仓。


6. 必须知道的坑(点到为止)

即使用 ETF,也要养成边界意识;换成股票池时这些问题会更尖锐:

  1. 幸存者偏差:只用「今天还活着」的名单回测过去,会抬高历史表现。
  2. 上市 / 退市:某日尚未上市的标的,当日不得进入可选集合。
  3. 停牌与缺失:无有效价格则不应参与排名,或需事先写明替代规则。
  4. 事后挑选池子:因「这段好看」才把某 ETF 加进 Universe,等于另一种过拟合。

本演示池在样本起点四者均已交易、覆盖完整,适合入门;扩展到个股时,须把上述规则写进代码,而不是口头保证。


7. 本讲小结

  • Universe 是轮动的前提:名单与资格规则必须事先写死
  • 本课程演示池:四只 ETF,角色清晰,相关结构合理
  • 下一讲在同一池子、同一选人信号下,只改「各买多少」

上一讲:动量轮动 · 下一讲:等权与仓位