2. 多板块轮动研究档案的类型与构成

在多板块轮动研究中,真正决定一个策略能否被复现、被审计、被迭代的,往往不是某个漂亮的净值曲线,而是围绕这条曲线沉淀下来的整套档案。研究档案不是“把文件堆进文件夹”,而是一组彼此引用、时间对齐、可追溯的证据链。本节要解决的核心问题是:一个完整的轮动研究项目究竟由哪些类型的档案构成,每一类档案承担什么职责,缺少它会导致什么后果。

从研究流程看,多板块轮动档案可以归纳为五类核心对象:策略报告、数据快照、模型代码、回测结果、交易记录。它们不是并列的五个文件夹,而是存在明确的依赖方向:策略报告定义研究假设与规则;数据快照固定输入;模型代码实现规则;回测结果由代码作用于快照产生;交易记录则是策略进入实盘后的真实输出,并反过来校验前四者的一致性。

多板块轮动研究档案的构成与依赖链 策略报告 研究假设 · 板块池 · 轮动信号 调仓频率 · 风控约束 定义“要做什么” 数据快照 行情 · 成分 · 复权因子 交易日历 · 版本哈希 固定“用什么算” 模型代码 信号计算 · 排序打分 组合构建 · 参数配置 实现“怎么算” 回测结果 净值 · 回撤 · 换手率 分板块归因 · 参数敏感性 验证“算得怎样” 交易记录 委托 · 成交 · 持仓 滑点 · 费用 · 对账 校验“实际做了什么” 实盘偏差反馈:修正假设、数据或代码 归档要点:五类档案须共享同一“研究编号 + 版本号 + 时间戳”, 任一环节变更都要生成新版本,并保留旧版本以支持回溯与差异比对。

策略报告:把研究假设写成可检验的契约

策略报告是整条档案链的起点,它的作用不是“写一篇好看的说明”,而是把模糊的市场判断转化为可检验的规则契约。一份可归档的轮动策略报告至少应包含:板块池的定义方式(例如按申万一级行业选取28个板块,还是按主题ETF选取12个)、轮动信号的构造逻辑(动量、波动率调整动量、拥挤度过滤等)、调仓频率(周频或月频)、持仓数量与权重规则、以及风控约束(单板块权重上限、最大回撤止损线)。

关键在于“可检验”。如果报告只写“选择强势板块”,归档后无法判断代码是否忠实实现;如果写成“每周末计算各板块过去20个交易日收益率,剔除近5日成交额分位数低于30%的板块,取前3名等权持有至下周末”,那么后续任何一次代码审查、结果复核都有了明确基准。示例参数仅为教学说明,实际研究应结合板块数量与调仓成本自行设定。

数据快照:让输入可复现

轮动策略对数据高度敏感:板块成分会调整、复权因子会变化、停牌与涨跌停会影响可交易性。因此数据快照不是“原始数据备份”,而是带版本标识的、与回测区间严格对齐的输入集合。实践中建议快照包含:行情数据(开高低收、成交量额)、板块成分与权重、复权因子、交易日历、以及可交易性标记(停牌、涨跌停、ST状态)。

归档时最容易被忽略的是“哈希指纹”。对快照目录生成一个内容哈希(如对排序后的文件清单与文件内容计算SHA-256),把哈希值写入快照说明文件。这样当回测结果出现异常时,可以快速判断是数据被替换,还是代码逻辑变化。示例做法:快照目录命名为 snapshot_20240105_v3,说明文件中记录覆盖区间、数据源、生成时间与哈希值。

模型代码:规则的可执行表达

模型代码档案应包含三层内容:信号计算模块、组合构建模块、参数配置文件。归档时不能只存一个最终脚本,而应保留可运行的目录结构、依赖版本(如 requirements.txt 或环境锁定文件)以及入口命令。一个常见的教学示例结构如下:

rotation_research/
├── config/params_v3.yaml      # 板块池、窗口、持仓数、费用假设
├── data/snapshot_20240105_v3/ # 数据快照
├── src/signal.py              # 动量与拥挤度过滤
├── src/portfolio.py           # 排序、选前N、等权
├── src/backtest.py            # 逐日推进、费用与滑点
└── run.sh                     # 固定随机种子与入口参数

归档审查时重点看两件事:参数是否外置(避免硬编码在脚本里导致无法追溯)、入口是否固定(同一命令能重跑出同一结果)。若代码中使用了随机数(如抽样检验),必须固定随机种子并记录在配置中。

回测结果:不只是净值曲线

回测结果档案的价值在于“可解释”。只保存一张净值图几乎无法支撑后续研究。完整的回测结果应包含:逐日净值与基准净值、逐日持仓明细、每期调仓的换手率与交易成本、分板块收益归因、关键风险指标(年化收益、最大回撤、夏普、卡玛)、以及参数敏感性结果(例如动量窗口在10/20/40日下的表现对比)。

归档时建议把“结果摘要”与“明细数据”分开:摘要用一页表格记录核心指标与运行环境(代码版本、快照哈希、运行时间),明细以CSV或Parquet保存逐日数据。这样复核者可以先看摘要判断是否值得深入,再按需下钻明细。需要强调的是,示例中的指标数值属于教学假设,真实研究必须以实际运行输出为准。

交易记录:实盘与研究的对账凭证

交易记录是五类档案中唯一来自真实市场的对象,包括委托记录、成交记录、每日持仓与资金流水。它的核心用途是对账:把实盘每期实际持有的板块与回测同期理论持仓逐期比对,计算持仓重合率、成交价与理论价的滑点、以及费用偏差。若某期重合率显著偏低,就要回溯是信号计算差异、数据时点差异,还是执行环节的约束(如涨跌停无法买入)。

归档交易记录时,务必保留原始字段而非仅保留汇总,并记录账户类型、交易接口版本与对账口径(例如按成交日还是按结算日)。这些细节决定了半年后还能不能把当时的偏差解释清楚。

五类档案共享同一套“研究编号 + 版本号 + 时间戳”命名规则,是保证依赖链可追溯的最低成本手段。建议在项目根目录放置一份档案索引表,逐条登记每类档案的路径、版本、生成时间与责任人。

综上,多板块轮动研究档案的识别标准可以概括为一句话:凡是影响“结论如何得出”的输入、规则、执行与输出,都必须以可复现的形式留存,并彼此可引用。策略报告定义契约,数据快照固定输入,模型代码实现规则,回测结果验证效果,交易记录校验现实——五者构成闭环,缺一环,研究档案就从“证据链”退化为“资料堆”。