在 ML预测(ML Top-30 + 排名缓冲60,季度调仓等权)之上叠加两条"怎么持有"的规则:个股 15% 移动止损 + 每 20 个交易日把幸存持仓连止损现金一起重新等权(现金回补)。选股层完全不变。
五条净值曲线同一起点归一化。悬停查看逐日数值,点击图例切换系列。
策略分三层:选股层(ML预测,季度一次,不变)→ 防御层(t15 移动止损,每日盯盘)→ 仓位层(r20 再平衡,每 20 个交易日)。alpha 载体仍是选股,两层新增规则只改变持有方式。
| 要素 | 口径 |
|---|---|
| 峰值 peak | 入场后至今的最高收盘价(只升不降;被止损的票不再更新) |
| 触发条件 | 收盘价 < peak × 0.85 —— 即从持有期高点回撤 15%,与成本无关 |
| 执行 | 触发次日开盘价卖出(收盘判定、次日执行,无偷价) |
| 停止跟踪 | 卖出后该票本季度不再买回(现金等待 LAYER 3 或季度换书) |
与"固定止损"的区别:固定止损锚定入场价(亏 15% 才割);移动止损的锚跟着峰值抬升——票涨得越高止损线越高,先涨 30% 再回落的票会在 +10.5% 处离场,锁定大部分浮盈。2026 实测固定止损 s15 恶化到 −12.5%(割在反弹前),移动止损反而改善——前者锚不动,深跌后总割在底部区域。
止损现金在下一个 20 日节点摊回幸存者,仓位恒满。趋势年(2024)止损卖飞的现金继续吃复利:同参数下 t12 组合现金回补 2024 +77.2% vs 保现金 +15.0%。
代价:震荡下跌年里"低位回补→再止损"的循环把回撤逐笔变现,2026 反而比不止损略差。
止损现金闲置到季度末。亏损年防御更好(现金天然抗跌),但趋势年损失全部复利——纯 t 族(无 r20)就是这个行为,全窗收益显著更低。
实测同帧:r20+t12 保现金 +232.8% vs 现金回补 +783.2%,差 550pp 全在趋势年。
| 规则 | 单独用的问题 | 组合后由谁补上 |
|---|---|---|
| 纯 t15(只止损) | 止损现金闲置到季度末——趋势年损失复利,2024 仅 +11.0%、2025 +58.0% | 止损日即回补 + 20 日节拍:组合 2024 +40.0%、2025 +75.8% |
| 纯 r20(只再平衡) | 没有个股防御,崩塌票全程扛:2022 −10.4%、最大回撤 −31% | t15 截断崩塌票:组合 2022 +10.1%(全实验最好)、最大回撤 −22.5% |
全部 lane 同帧同语义配对(信号行 + 事件日行 + 20日行;无逐日重发)。跨表绝对数可比。
命名:r20+tXX-r = 20日再平衡 + XX%移动止损 + 现金回补;-p = 保现金;t15r0 = 只在止损日立即回补(无 20 日节拍)。分解阅读:t15r0(+602.8%)已拿到组合(+634.9%)的大部分——主要杠杆是"止损现金回不回补",20 日节拍再贡献约 +32pp(与纯 r20 的 +39.9pp 基本可加)。另注意旧口径(止损后每日重发整书)会美化纯 t 族防御并抬高费用,本表为统一事件日语义,纯 t 族数字低于早期实验记录属预期。
总收益随宽度先升后降(峰值 t20 +374.2%,t25 掉头);2026 随宽度单调恶化(t10 −11.7% → t25 −19.2%);最大回撤同步变深(t10 −22.5% → t25 −32.8%)。过宽的移动止损 = 全程吃回撤、卖在反弹前的地板上。样本内六档网格,相邻档位差异(如 t12 vs t15 的 2026)属噪声量级,不宜精读。
2026 是 ML 信号负 alpha 年:全网格 2026 最好也只有 −11.4%(纯 t15,vs ML预测 −13.8%)——防御的上限约 2pp,且要付出总收益或回撤的代价。r20 是被低估的 2026 选项:−12.1% 与最好的止损 lane 差距不足 1pp,总收益却保住 +596.6%,只是回撤和 2022 无改善。四档互不支配,是风险偏好 dial。
| 方向 | 实验 | 结论 |
|---|---|---|
| 有盈利就不止损(t15ps) | trailing 15% 但浮盈票跳过触发:+253.7%/夏普 1.416/2022 −7.0%/2026 −9.7%(旧口径+08-27 帧,同口径纯 t15 对照 +342.8%) | 全面差于 t15——86% 触发点在浮盈票上,"卖浮盈票"恰是防御来源;等跌破成本再止损失去意义 |
| 固定止损 s15/s20 | 锚定入场价亏 15%/20% 即卖:2026 恶化到 −12.5% | 锚不动,深跌后割在反弹前,拒绝 |
| 回撤油门 dd12/dd20 | 组合近峰值回撤破阈值全书减半仓 | V 型反转减仓在地板、恢复在半山腰,2026 −15.9%,拒绝 |
| RL 名单 / DRL 配权 | RL 书 2026 全面劣于 ML预测(三相位 −14.9~−17.6% vs −14.0%),与 ML预测 书重合 61%(算法原理见第七节) | 同一 ML 池子负 alpha,换汤不换药;训练抽签 ±100pp 不可采 |
整套系统的核心是一个以权重为中心的架构——目标组合权重向量是策略逻辑与下游执行之间的唯一接口契约:
其中 S 为选股、A 为组合配权、T 为择时调整、R 为组合层风险叠加。每一步变换都保持契约——输入输出都是权重向量,因此任何模块都可以单独替换(例如把等权配权换成 DRL 配权器)而不动管线其余部分;同一张权重表在回测与实盘里以完全相同的方式流转执行。
| 阶段 | 职能 | 本报告 / 本仓库里的实例 |
|---|---|---|
| S 选股 | 决定持有哪些票(入场/留任名单) | ML预测:ML top-30 入场 + 全市场排名 ≤60 缓冲留任(第一层,全部 lane 共用) |
| A 配权 | 决定名单内每只票占多少权重 | 等权 1/30(本报告全部 lane);把 A 换成 DRL 配权器 = 本节讲的三算法 lane("等权 → DRL"就是换这一层) |
| T 择时 | 整体仓位的时点加减 | MA 择时 / defer 信号冻结 / 回撤油门 dd(均已实测否决,见 T4 与 2026 报告) |
| R 风险叠加 | 组合层风险规则,仓位内再调整 | t15 移动止损 + r20 满仓再平衡——本报告新增的两条规则全部住在 R 层 |
这也是本报告实验方法的地基:13 条 lane 全部只改权重帧(换 S 的书、换 A 的权重、加 R 的规则行),回测引擎 run_cn_weight_backtest 语义一行不动——所以跨 lane 才能同帧同口径严格配对。而"T4 否决 RL lane"翻译成架构语言就是:把 A 层从等权换成 DRL,在当前数据规模下不产生超额——问题出在喂给 S 的信号池,不在 A 层用哪种算法。
三个算法共享同一套建模(env_portfolio.py 的 StockPortfolioEnv),差别只在"怎么用经验更新网络":
演员-评论家双网络,on-policy:Actor 输出动作,Critic 给当前状态估值 V(s);优势 = 实际回报 − 估值,衡量"这一步比该状态下的平均水平好多少",用它(而非原始回报)更新 Actor,削掉大部分方差。每 5 步就用最新轨迹更新一次:结构最简单、收敛快,但旧经验用完即弃,样本效率低、对学习率敏感。本仓库:n_steps=5、lr 2e-4、5 万步。
on-policy 策略梯度,当今工业 RL 的默认首选。核心是裁剪目标(clipped objective):新旧策略的输出比值被 clip 在一个窄带内,一次更新不许把策略改得太猛——相当于给梯度下降上了安全带,所以对超参宽容、训练稳。代价:每 2048 步才更新一次,同样不能重放旧数据。本仓库:n_steps=2048、batch 128、8 万步。
三者中唯一 off-policy:确定性 Actor 直接输出连续权重(仓位配权天然连续,最贴合),Critic 学 Q(s,a);10 万条经验回放池反复重放旧数据 + 目标网络慢速跟随 → 样本效率最高。但出名地脆:Q 值高估会把策略带沟里,对随机种子极其敏感(后继 TD3/SAC 就是修它的,本管线未启用)。没有探索噪声的 DDPG 学不到任何东西。本仓库:buffer 100k、高斯噪声 σ=0.1、每 10 步训练一次、5 万步。
| A2C | PPO | DDPG | |
|---|---|---|---|
| 学习范式 | on-policy 演员-评论家 | on-policy 策略梯度 | off-policy 演员-评论家 |
| 策略输出 | 动作分布(随机) | 动作分布(随机) | 确定动作 |
| 核心机制 | 优势函数降方差 | 裁剪目标限制更新步长 | 回放池 + 目标网络 + Q 学习 |
| 样本效率 | 低 | 低 | 高(旧经验重放) |
| 稳定性 / 调参 | 中,对 lr 敏感 | 最好(最宽容) | 最差(种子敏感,必须配探索噪声) |
| 动作空间 | 离散 / 连续均可 | 离散 / 连续均可 | 仅连续 |
金融 RL 有个先天约束:历史只有一条。A2C/PPO 每次更新都必须用"当前策略刚滚出来的新轨迹"——好在环境是回测模拟器,可以无限生成,但要付算力;DDPG 把走过的路存进回放池反复咀嚼,同一段历史能学很多遍,数据有限时最划算,代价是 Q 值高估等稳定性坑。注意:能无限生成数据 ≠ 信息无限——模拟器终究是同一段历史的重放,对这段历史过拟合的风险三个算法一视同仁。