七个指标投票 · 五道风控保险 · 按复现文档独立实现
A 股里"大盘股"(上证50,对应期货 IH)和"小盘股"(中证1000,对应期货 IM)会轮流走强,一轮常常持续好几个月。这个策略每天用 7 个指标投票判断"接下来谁更强",然后买强的那个期货、卖弱的那个期货(各 1 手),判断不了就空仓等待。
① 七个指标投票:近期涨跌动量(2 个)、银行间利率排位、期货持仓量变化(资金押注方向)、波动对比、场内 ETF 申购赎回、美债利率排位。每个指标投"看多小盘 +1 / 看多大盘 −1 / 不投票 0",7 票加总。
② 不对称的进场门槛:票数平滑后,往小盘偏 1 分就买入小盘(进场容易);要往大盘偏 3 分才反向(反向谨慎,因为长期小盘相对大盘有超额);中间地带维持原状。
③ 五道保险:恐慌清仓 → 看错减半仓 → 空头贴水保护 → 拥挤降仓 → 波动暂停(详见下方"五道保险当前状态")。
④ 执行方式:每天只有三种状态——满仓买中证1000卖上证50 / 满仓反向 / 空仓。今天收盘算信号,明天生效。每变动一次仓位收 0.06% 成本。
两个版本:🔥激进版开前四道保险(收益优先);❄️稳健版五道全开,牺牲部分收益换明显更小的回撤。名词解释:贴水=期货价格比指数便宜的部分;基差=期货与指数的价差;夏普比率=收益除以波动(越大越好,1 以上算不错);最大回撤=从最高点跌下来的最大幅度。
把每天的盈亏逐日拆开(三块加起来正好等于策略收益,逐日恒等),来源一目了然:
① 风格轮动的钱(主菜,现货层面):判断对了"中证1000 和上证50 接下来谁涨得多/跌得少",一买一卖赚差价。对应下表"现货风格"一列。
② 期货贴水结构的钱(配菜,期货层面):两个期货长期比各自指数便宜(贴水)。做多的那条腿,随着到期临近"期货向指数回归"能额外赚一块;做空的那条腿则倒贴一块。两腿相抵后可正可负。对应"期货基差"一列(再拆:小盘腿 +1.20% / 上证50对冲端 -1.23%)。
③ 风控避损(体现在①里,不单列):恐慌清仓、波动暂停避开的下跌日,等价于把负的"风格收益"剔掉了,所以激进版/稳健版与"不带保险的纯投票"的差就是保险的价值。
④ 交易成本(扣项):每次仓位变动 0.06%,见下方专门章节。
| 年度 | 现货风格 | 期货基差 | 交易成本 | 合计 |
|---|---|---|---|---|
| 2022 | +1.74 | +3.97 | -0.46 | +5.27 |
| 2023 | +6.39 | -1.83 | -2.51 | +1.91 |
| 2024 | +37.96 | -0.62 | -3.29 | +32.52 |
| 2025 | +33.03 | -0.91 | -3.46 | +27.69 |
| 2026 | +21.26 | -0.70 | -2.44 | +17.48 |
补充:样本期两腿期货的平均年化贴水率 = IM -10.6% / IH -2.6%。若长期单边持有"买小盘卖大盘",仅贴水结构一项每年约有 -7.9 个百分点的顺风(或逆风);但本策略方向会切换,基差项实际是"做多深贴水腿赚、做空深贴水腿亏"的动态净额,这也是"空头贴水保护"那道保险存在的原因。
| 指标与计算方法 | 金融意义(为什么它能预示轮动) | 当前读数 | 当前票 |
|---|---|---|---|
| 指标1 · 近10天谁涨得好 比较 中证1000 和上证50 指数最近 10 个交易日的累计涨幅,谁高票投谁 | 风格轮动有惯性:一段时间内资金偏好会延续,近期强者往往继续强(动量效应),这是本策略最核心的收益来源 | 中证1000 -5.20% vs 上证50 -1.29% | 看多大盘 −1 |
| 指标2 · 近3天谁涨得好 同上,但只看最近 3 天,捕捉更快的节奏 | 短期资金切换往往先从几天内的相对强弱开始,与指标1长短呼应:同向时信心足,背离时互相抵消 | 中证1000 -2.31% vs 上证50 -0.09% | 看多大盘 −1 |
| 指标3 · 银行间资金松紧 银行间隔夜/7天拆借利率(SHIBOR 1周)在近 3 年里的排位:低于 20% 投小盘,高于 80% 投大盘,中间不投票 | 利率是资金面的温度计:资金越宽松,多余的钱越愿意去买弹性大的小盘股;资金越紧张,越要抱团现金流稳的大盘股 | 利率 1.33%,近3年排位 3% | 看多小盘 +1 |
| 指标4 · 期货资金押注方向 IM 与 IH 期货(当季合约)持仓量最近 20 天的增速之差,小盘增速快投小盘 | 持仓量=还没平仓的合约,增加说明有新资金真金白银进场建仓,而不是空炒;机构对冲盘的动向常先于现货风格切换 | IM +94.47% vs IH +76.59% | 看多小盘 +1 |
| 指标5 · 波动对比变化 中证1000 与上证50 最近 20 天日波动之比,再看这个比值近 5 天是升是降,升投小盘 | 小盘波动相对放大,通常出现在风险偏好回升、投机资金活跃的阶段(小盘行情的燃料);波动比回落则偏防守 | 波动比 2.23,5日变化 +15.70% | 看多小盘 +1 |
| 指标6 · 散户申赎方向 中证1000ETF(512100.SH)与 300ETF(510300)场内份额最近 40 天的变化之差,小盘 ETF 增长快投小盘 | ETF 份额增减是配置资金"用脚投票":份额净申购=真金白银流入该风格,比价格更能反映资金的存量态度 | 512100.SH -25.33% vs 510300 -5.11% | 看多大盘 −1 |
| 指标7 · 美债利率水平 美国十年期国债收益率在近 3 年里的排位:低于 20% 投小盘,高于 80% 投大盘,中间不投票 | 美债利率是全球资产定价之锚:利率高位=全球流动性收紧、压高估值资产(小盘/成长受伤);利率回落=流动性宽松利好小盘 | 5.24%,近3年排位 100% | 看多大盘 −1 |
| 保险 | 状态 | 它在盯什么 / 当前读数 |
|---|---|---|
| ① 恐慌清仓 | 正常 | 盯中证1000期货的基差率:排位很低且快速恶化就先离场。近100天排位 60%(<15%才算恐慌),近5天变化 +0.3个百分点 |
| ② 质量降仓 | 正常 | 近20天"前一天投票方向"与"当天价差涨跌"的一致率 55%(低于40%说明最近总看错,自动减半) |
| ③ 空头贴水保护 | 正常 | 做空中证1000期货时,若其贴水排位 57%偏高(>40%)则减半——做空深贴水合约容易吃亏 |
| ④ 拥挤度降仓 | 正常 | 近30天小盘成交过热计数(越高档越严):极端3次/较热5次/偏热10次 = 0/0/0,当前系数 ×1.0 |
| ⑤ 波动暂停(仅稳健版) | 暂停 | 近20天价差年化波动 17.9%(超过约14.3%就暂停交易),建议杠杆 0.56 |
| 配置 | 年化收益 | 年化波动 | 夏普比率 | 最大回撤 | 胜率 | 盈亏比 | 累计净值 | 年化成本 |
|---|---|---|---|---|---|---|---|---|
| 🔥 激进版:前四道保险开、波动暂停关 | +19.86% | 16.04% | 1.21 | 13.29% | 52.3% | 1.19 | 2.133 | 2.95% |
| ❄️ 稳健版:五道保险全开(低回撤优先) | +9.01% | 7.52% | 1.19 | 9.25% | 53.2% | 1.33 | 1.434 | 1.35% |
| 🧪 不加任何保险:只按投票方向买卖 | +22.15% | 19.47% | 1.13 | 18.37% | 51.4% | 1.16 | 2.308 | 0.88% |
| 对照:一直买上证50期货 / 卖中证1000期货 | -14.74% | 19.49% | -0.72 | 59.00% | 45.7% | 1.04 | 0.514 | 0.12% |
| 对照:一直买中证1000期货 / 卖上证50期货 | +12.63% | 19.49% | 0.71 | 24.12% | 49.3% | 1.17 | 1.644 | 0.12% |
胜率=有仓位的交易日里赚钱天数的占比(已扣成本);盈亏比=赚钱日平均每天赚的 ÷ 亏钱日平均每天亏的。趋势策略通常"胜率不到一半、盈亏比大于 1"——靠"赚大亏小"赚钱,胜率低是正常特征。
四条线对比:激进版 vs 稳健版 vs 不带保险的纯投票 vs 一直持有不动(对照)。收益为名义本金口径。
三条仓位线(+1 买小盘 / −1 反向 / 0 空仓):激进版只受前四道保险约束,稳健版还叠加波动暂停(空仓明显更多),纯投票不带任何保险;灰线是平滑投票分数(右轴),过 +1 触发买入、过 −3 触发反向,前 10 个交易日为预热期不交易。
| 配置 | 年化 | 夏普 | 回撤 | 胜率 | 盈亏比 | 持仓占比 | 触发天数 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 纯信号 | +22.1% | 1.13 | 18.4% | 51.4% | 1.16 | 100% | 0 | 只看投票方向买卖,不带任何保险 |
| +恐慌清仓 | +21.1% | 1.22 | 12.5% | 52.2% | 1.18 | 85% | 148 | 市场恐慌信号出现时先离场躲一躲 |
| +空头质控门控 | +20.3% | 1.20 | 13.3% | 52.1% | 1.18 | 53% | 334 | 最近总看错就减半仓 + 做空深贴水时减半仓 |
| +拥挤开关(=首推) | +19.9% | 1.21 | 13.3% | 52.3% | 1.19 | 48% | 126 | 小盘交易过热时降仓(=激进版配置) |
| +波动熔断(=主口径) | +9.0% | 1.19 | 9.2% | 53.2% | 1.33 | 48% | 613 | 价差太颠簸时暂停交易(=稳健版配置) |
怎么读这张表:夏普与回撤的逐层改善是结构性的(少持仓必然降波动,任何数据下都成立);而原版报告里"年化也逐层抬升"(22.6%→26.7%)带有数据内的择时运气——那些风控阈值是在原版数据上反复调优的,砍掉的日子恰好更亏。本实现用不同数据源,逐层砍掉的日子仍以亏损日为主(恐慌层合计 −2.9%、质控层 −2.1%、拥挤层 −2.0%),方向没反、只是幅度变小。最后一行波动暂停砍掉的是高波动日(含不少盈利日,合计 +49%),年化腰斩换夏普抬升与回撤减半,这正是"低波动增强版"的设计意图,与原版 26.7%→12.5% 的方向一致。
| 年度 | 激进版 | 稳健版 |
|---|---|---|
| 2022 | +5.27 | +9.80 |
| 2023 | +1.91 | -1.08 |
| 2024 | +32.52 | +8.06 |
| 2025 | +27.69 | +15.03 |
| 2026 | +17.48 | +6.25 |
做法:每年年初,只用"当年之前"的历史数据,在 36 组参数组合里挑回测表现最好的一组,然后用它交易当年一整年(当年数据不参与挑选)。如果挑出来的参数次年依然赚钱,说明策略不是"事后诸葛"。
| 年度 | 选中参数 (进场门槛, 波动目标, 减仓阈值) | 训练期夏普 | 次年实际夏普 | 次年实际夏普(含拥挤保险) |
|---|---|---|---|---|
| 2023 | (2.0, 0.08, 0.35) | 0.85 | -0.16 | 0.30 |
| 2024 | (1.5, 0.08, 0.45) | 0.90 | 1.64 | 1.64 |
| 2025 | (1.5, 0.08, 0.45) | 1.13 | 1.90 | 1.90 |
三年连起来看(不含拥挤保险):夏普 0.92 / 年化 +6.13% / 最大回撤 12.85%;含拥挤保险:夏普 1.14 / 年化 +7.43% / 回撤 9.63%。
① 交易成本(已计入回测):每次仓位变动收 0.06%,即两条腿、每个方向各约 万3。举例:空仓→满仓(开 2 条腿)花 0.06%;满仓多头→满仓反向(平 2 开 2 共 4 条腿)花 0.12%。全样本算下来,激进版每年被成本吃掉 2.95%。
② 滑点(未单独建模,已留了余量):上面的万3 是"手续费 + 适度冲击成本"打包的保守估计。中金所股指期货手续费约万0.23,主力合约盘口通常 1-2 个指数点,按约 130 万名义算冲击约万1-万2,合计与万3 量级相当。急涨急跌行情里实际滑点会明显更大(比如 2024 年 2 月小盘流动性枯竭时),这是本回测的乐观之处之一。
③ 换月/交割(价差不算盈亏,手续费已计入):合约每月第三个周五到期,持仓须挪到下月合约。两点口径:
(a)换月价差不计入盈亏——比如换月前旧合约 1000 点、新合约 1020 点,这 20 点只是两个合约之间的价差(期限结构),既不算收益也不算亏损,回测在换月日直接把收益记 0,正确剔除;
(b)换月手续费已按实际费率计入——隔日调仓(平昨仓)100 元/手,持仓时两腿各 1 手每月换一次,约合 200 元/月,年化拖累约 -0.09%(已含在上面所有成绩里);若出现日内开平(平今仓 300 元/手,策略极少出现,仅当开仓当天恰好撞上换月),年化拖累约升至 0.3%,量级仍很小。
补充:展期价差本身虽不计盈亏,但它有"隐性影响"——贴水市场里新合约更便宜,多头换月后基准价变低、空头变高;这部分最终会通过持有期内"期货向指数回归"体现在基差收益里(见上方收益拆解的"期货基差"项),不会被遗漏。
| 参数 | 值 |
|---|---|
| 票数平滑天数 / 买小盘门槛 / 反向门槛 | 3 天(越近权重越高) / +1.0 / −3.0 |
| ① 恐慌清仓 | 基差率近100天排位<15% 且 5 天恶化>3 个百分点 → 清仓(用前一日数据) |
| ② 质量降仓 | 近20天"前一日方向×当日涨跌"一致率<40% → 仓位减半(中性票不计入) |
| ③ 空头贴水保护 | 做空时若小盘腿贴水排位>40% → 仓位减半 |
| ④ 拥挤降仓(近30天成交过热计数) | 偏热10次→×0.7;较热5次→×0.5;极端3次→清仓 |
| ⑤ 波动暂停(仅稳健版) | 近20天价差年化波动使建议杠杆<0.7(约波动>14.3%)→ 暂停 |
| 成本 / 年化天数 | 0.06%×每次仓位变动 + 换月手续费隔日 100 元/手(两腿每月各 1 次;日内平今 300 元/手极少出现)/ 244 天 |