TL;DR
SQTS v4 是我正在跑的第四代量化研究框架,Phase 1 的 baseline B 是这个"50 只股票 × combo_eq 行业轮动"策略。 每月月初根据三个因子(景气度 / 动量 / 拥挤度)给 30 个申万一级行业打分,挑前几名行业,再在行业内等权持有 50 只股票。 纸面交易已跑 47 天,NAV +3.59%,基准同期 +2.44%,跟踪误差 0.57%,相关性 0.999。
它不是什么惊天 alpha,只是一个我自己能看得懂、能讲清楚、能在盘面上跟得住的基线。 后面所有的复杂变体,都必须先在这个 baseline 上说清楚自己"为什么更好"。
为什么先做一个这么简单的东西
我做量化研究的第一条原则,被反复验证过:
一个能稳定复现的 7% 年化,永远好过一个存在于 notebook 里的 15%。
行业轮动是所有 A 股月频量化里最古老、最"没想象力"、但也最 robust 的方向。 它绕开了两个散户策略的坟场:
- 个股选股的特质风险。 50 只股票分散在若干行业里,单一黑天鹅的冲击能被摊薄到 2%。
- 高频信号的执行成本。 月频调仓,换手率可控,能把假设的"23bp 单边成本"打得很平。
这两条加起来决定了:这个策略就算 alpha 很薄,心理承受起来毫不费力。 这对一个新系统前 12 个月来说,比年化多两个点重要得多。
Combo-Equity 得分法 — 三个因子
给每个申万一级行业打一个 0-1 之间的复合得分 combo_eq,三个因子等权:
1. 景气度 Prosperity
指行业近 3-6 个月的 EPS 预期上修趋势,以及一致预期增速的分位。 核心思想:分析师不是先知,但他们是最早看到数据变化的人。 一个行业如果连续几个月被上修盈利预期,背后通常是真实的景气拐点,而不是噪声。
2. 动量 Momentum
用过去 1M / 3M / 6M 行业指数的对数收益复合。不是简单过去 1 个月,而是三个时间窗的稳健加权。 这一步最"俗",但也最有效 — 趋势是市场投给某一方叙事的票数。 绕开动量就是跟多数资金对着干,在 A 股尤其吃亏。
3. 拥挤度 Crowding
用行业成交额占比、换手率的 12 个月分位。这是个减分项: 分位越高,扣分越多。 它的作用是在景气度 + 动量都把信号推向同一个火热行业时,把你往后拽一步。 2021 年新能源、2023 年 AI、2025 年低空经济,三次我都差点追进去,是这个因子把我的仓位拉了回来。
回测设置
| 项 | 配置 |
|---|---|
| 样本内 (IS) | 2016-01 至 2019-12 |
| 样本外 (OOS) | 2020-01 至 2026-04 |
| 近四年样本 | 2022-01 至 2026-04 |
| 调仓频率 | 每月第一个交易日 |
| 持仓数 | 50 只股票(若干行业内等权 × 行业等权) |
| 交易成本 | 单边 23bp(已含佣金 + 印花税 + 冲击成本估算) |
| 基准 | 沪深 300 全收益指数 |
几个我故意做保守的地方:
- 成本端 23bp 比券商默认给的要狠 — 因为散户账户实际成交的滑点比机构数据高。
- IS 刻意只到 2019 底 — 2020-2024 的市场里几乎所有策略都见了"至少一次完整的结构性反转",这段留给 OOS 诚实测试。
- 近四年独立看 — 是因为 2022 年之后 A 股的行业轮动节奏跟 2016-2020 明显不同,想知道策略在"现在这种市场"还 work 不 work。
实盘 (纸面) 表现
从 2026-02 初开始在 paper trading 环境运行,至今 47 个交易日:
| 指标 | 策略 | 基准 (HS300) |
|---|---|---|
| 累计收益 | +3.59% | +2.44% |
| 主动收益 | +1.15pp | |
| 跟踪误差 (年化) | 0.57% | |
| NAV 相关系数 | 0.999 | |
| 最大回撤 | −0.8% | −1.9% |
跟踪误差 0.57% 这个数字有点太小了 — 小到我怀疑它不是一个真正的行业轮动策略,而是一个"略微倾斜的增强指数"。 这件事我还在想。如果是的话,那这个 alpha 的来源就主要是景气度因子的选股溢出,而不是行业配置本身。 下一版我会做一个 brinson-fachler 归因,把"行业配置 vs 行业内选股"的贡献拆清楚。
已经能看到的局限
- 47 天的样本对统计没有任何意义。 +1.15pp 可能纯粹是运气。我需要至少跑满一个完整的牛熊切换周期(3-5 年)才谈得上"验证"。
- 月频调仓对 A 股来说偏慢。 行业轮动节奏有时候是以周为单位的。慢调仓的代价是我会"迟到"一个行业的启动早期。
- 景气度因子依赖分析师一致预期数据,而一致预期数据本身在某些行业覆盖稀薄(比如中小盘纯题材行业),这会让得分不可靠。
- 拥挤度因子是我最不确定的那一个。 它目前纯靠换手率 + 成交额分位,没有纳入融资余额、北向流入、ETF 申赎这些更细的拥挤信号。
接下来几个月想做什么
- 把 TE 归因做出来,确认 alpha 到底来自行业配置还是行业内选股。
- 把拥挤度因子做得更细 — 至少加融资余额分位和北向资金流。
- 尝试一个半月频版本(每月第 1 和第 15 个交易日各调仓一次),看换手率和 alpha 的 tradeoff。
- 跑到 90 天样本的时候做一次完整复盘,写一篇"第一个 3 个月"的报告。
这篇文章写给六个月后的自己 — 那个正在回忆"当初为什么觉得这套 baseline 靠谱"的自己。 如果你看到这里了,说明你也对"认真做一件慢事"感兴趣,我们可以在 github 上聊。