回测里的净值曲线看着很平滑,但一跑实盘,最容易磨损账户的往往是调仓太频繁、交易摩擦太大。

触发机制定得太灵敏,系统就容易天天折腾:昨天刚买入,今天稍微回撤一下就触碰止损割肉;防追高规则原本想防泡沫,却在股票高位暴跌时误把它当“回调”买进去;调仓程序刚发出换股买入指令,监控程序隔天又报警要求清仓。

这篇文章就解决这一件事:怎么把那些过于敏感、容易误触发的规则管住,大幅减少无谓的调仓,把摩擦成本真正省下来。

个人量化选股(八):实盘执行与多模块协同全景架构
个人量化选股(八):实盘执行与多模块协同全景架构


一、买入就止损:为什么名次靠前还会被洗?

在量化交易里,最容易让人懊恼的操作就是刚买进就被止损扫地出门。选出来的股票看着哪都好,结果刚买进一天,遇到个正常波动就击穿止损线,不仅白交了双向手续费和滑点,还割肉割在最低点。

1. 闪迪的真实案例:调仓次日就被砍仓

前几篇文章里我们定了选股规则:双月末按 1 年卡玛比率排队,挑市场前 4 名买入,年线下跌破 1.5% 止损。

逻辑很直观:挑动量最强、回撤最小的标的。

但在 2026 年 10 月底的美股实盘调仓中,真实截面数据就给出了警示。闪迪(US.SNDK)过去一年涨了近 8 倍,卡玛比率高达 9.75,稳居观察池前列,顺利触发了买入指令。

拉出 10 月 29 日的数据看细节:

  • 闪迪收盘价 1330.05 美元,距 200 日年线(1255.35 美元)只高出 6.0%;
  • 过去 20 个交易日的年化波动率是 65.2%,换算成单日波动率达到 4.10%;
  • 系统的止损线设在年线下方 1.5%(1236.52 美元);
  • 闪迪当时价格离止损触发价,只有 7.56% 的空间:

$$\frac{1330.05}{1236.52} - 1 = +7.56%$$

这 7.56% 的空间,以闪迪每天 4.10% 的波动率来看,只相当于 1.84 个日收益率标准差(1.84σ)。

次日(10 月 30 日),半导体硬件板块正常回调,闪迪单日跌了 13.47%,收盘直接跌到年线下方 8.6%。前一天刚排名前列买进,第二天就跌破止损线被强制清仓。

2. 名义百分比的盲区:忽略了股票自身的波动率

在常规检查里,标的只要收盘价在年线上方、且没超过 30% 就算合格。闪迪在年线上方 6.0%,看似完全合规,为什么第二天立刻破位?

根源在于:每只股票的波动幅度完全不同,光看百分比容易踩坑。

看看 2026 年 11 月初两只标的的真实对比:

标的代码 标的名称 收盘价 (USD) 200日均线 距年线偏离度% 20日年化波动率 日波动率标准差 $\sigma$ 到止损价安全距离
US.JNJ 强生公司 270.56 245.61 +10.2% 30.9% 1.95% +6.08σ
US.MU 美光科技 833.59 749.11 +11.3% 62.4% 3.93% +3.30σ

只看距年线百分比,美光科技(+11.3%)比强生(+10.2%)还高出 1.1 个百分点。单看偏离度,容易误以为美光比强生更安全。

但算上每天的波动幅度:

  • 强生是日用消费品,日波动率只有 1.95%,离止损线名义上隔了 11.85%,够它抗住 6.08 个日标准差 的单边下跌;
  • 美光是芯片周期股,日波动率高达 3.93%,离止损线名义上隔了 12.98%,但只能抗住 3.30 个日标准差。

名义百分比看起来差不多,但换算到资产自身的波动率,强生的安全纵深是美光的近两倍。如果只按名义百分比筛选,就会买进贴在止损线上的高弹性股票,只要稍微遇到日常震荡,就会被迫触发止损。

3. 应对办法:衡量离止损线还有几个标准差(Cushion-to-Stop)

为了避免这种贴线开仓导致的无谓换手,我们在准入检查里加了一道指标:到止损价的波动率安全距离:

$$\text{Cushion}t = \frac{P_t / P{\text{stop}, t} - 1}{\sigma_{\text{daily}, 20d}}$$

其中止损价设定在年线下方 1.5%:

$$P_{\text{stop}, t} = \text{MA}_{200, t} \times (1 - 0.015)$$

分母是过去 20 个交易日收益率的标准差(样本自由度取 $N-1 = 19$)。

这个指标衡量的是当前价格距离止损线的安全纵深:价格需要下跌多少个日收益率标准差,才会触碰到止损线。

2026年10月下旬真实截面多标的轨迹图:名次、买入门槛与波动率缓冲演变
2026年10月下旬真实截面多标的轨迹图:名次、买入门槛与波动率缓冲演变

上图下半部分清晰反映了不同股票的安全纵深:

  • 闪迪在 10 月 29 日的缓冲倍数只有 +1.80σ,离止损线过近;
  • 美光科技在 11 月 2 日缓冲倍数从之前的 +9.67σ 迅速缩水到 +3.30σ;
  • 强生和可口可乐一直稳定在 +6σ 到 +12σ 以上的安全区。

4. 门槛设定:为什么是 4.0σ?

这个阈值来自实盘中对日常正常波动的防护要求:

在股票日常交易中,单日回撤 2.0σ 是较为常见的常规震荡(在资产收益率的厚尾分布下,单日超过 2.0σ 跌幅的概率约为 3% 到 5%)。如果一只股票距离止损线只有 2σ 到 3σ,意味着只要遭遇连续两天正常回调,或者一次跳空低开,价格就会直接击穿年线止损。在这样的位置新开仓,等于把自己主动暴露在被常规噪音洗出局的风险之下。

因此,我们将 4.0σ 设为新开仓的最低安全距离底线:

  • Cushion < 4.0σ:禁止新开仓。即便卡玛比率排名再靠前,只要安全距离不足 4.0σ,说明离止损线太近,不进场建仓;
  • Cushion ≥ 4.0σ:具备抵御至少两次常规日频波动的安全纵深,允许正常买入。

波动率安全距离解决的是日常噪音下的频繁磨损问题。如果上市公司突发重大事件导致连续暴跌,任何统计指标都会被击穿;它的价值在于开仓前排除那些在统计上防守纵深不足的脆弱标的,避免无谓的日频割肉。


二、防追高变抄底:别在急跌破位时接飞刀

第二类造成频繁调仓的问题,来自防追高规则的漏洞:本想防高位追涨,结果却把高位暴跌的股票当成“回调到位”买进来,刚买进去没几天就继续暴跌止损,白白增加一次调仓。

1. 美光与戴尔的教训:暴跌反而跌出了买入资格

我们在第三篇设计了价格不能超过 200 日线 30%($P \le \text{MA}_{200} \times 1.30$)的防追高门槛。

看看美光(US.MU)和戴尔(US.DELL)在 2026 年 10 月底的真实指标演变:

交易日期 标的代码 收盘价 (USD) 距MA200偏离% 距MA50偏离% 1年卡玛比率 动量门状态 缓冲 Cushion 判定结果
2026-10-28 US.MU 983.23 +32.7% +0.3% 8.00 (第3名) 超过+30% +9.67σ 超买,禁止买入
2026-10-29 US.MU 934.27 +25.6% -4.7% 8.00 (第3名) 跌入+30%内 +7.56σ 首次触发买入资格
2026-10-30 US.MU 884.74 +18.5% -9.6% 7.56 (第3名) 符合条件 +5.38σ 调仓日:确认买入
2026-11-02 US.MU 833.59 +11.3% -14.6% 6.84 (第3名) 符合条件 +3.30σ 缓冲不足 4σ,拦截
2026-11-05 US.MU 656.39 -13.1% -32.1% - 跌穿年线 -2.19σ 大跌穿年线,强制清仓
2026-10-28 US.DELL 493.79 +50.9% -3.7% 6.09 (第8名) 超过+30% +11.98σ 乖离过大,拦截
2026-10-30 US.DELL 424.30 +28.4% -17.3% 5.34 (第7名) 跌入+30%内 +6.17σ 大跌 -10.8%,首次获买入资格
2026-11-05 US.DELL 316.91 -5.6% -37.5% - 跌穿年线 -0.68σ 跌穿年线,强制清仓

10 月 28 日美光还在强势上涨,因为离年线达到 +32.7%,被防追高规则挡在门外; 10 月 29 日美光单日大跌近 5%,价格落回到年线 +25.6%,正好落入 +30% 以内,系统居然认为它“回调合规”,发出了买入信号; 戴尔也是同样,10 月 30 日单日暴跌 10.8%,正好从 +44% 砸回 +28%,当天首次获得了买入资格。

随后几天,两只标的继续破位大跌,击穿年线强制止损出局。这不仅没防住风险,反而成了高位接飞刀,来回多亏了一轮调仓手续费和本金。

2. 滞后与错配:静态阈值看不出下坠走势

产生这个漏洞的原因有两个:

  1. 卡玛比率看 252 天:过去一年涨幅大,即便短期从最高点跌了 20% 到 30%,卡玛排名依然很高;
  2. +30% 是个静态死门槛:只量当前价格离 200 日线多远,根本不管当前股价是在往上走还是在急速下坠。

涨的时候嫌高不让买,等到砸穿 50 日均线开始暴跌了,反而把它选进买入池。

3. 应对办法一:加一道 50 日均线门槛(Close ≥ MA50)

在准入条件中增加中期趋势过滤:新买入的股票,收盘价必须在 50 日均线之上:

$$P_t \ge \text{MA}_{50, t}$$

这道门槛清晰地切开了两种走势:

  • 良性回踩:股价高位强势整理,等年线上移,价格始终稳在 50 日线上方(像当时的德州仪器 TXN、亚德诺 ADI 都在 50 日线上方 2% 到 4%,正常买入);
  • 破位下跌:股价跌穿中期成本线(美光跌破 50 日线 9.6%,戴尔跌破 17.3%,直接拦截)。

一道 50 日线,就把下坠中的破位股票挡在门外。

4. 应对办法二:有效排位保护,别把好股票挤掉

如果排在前面的都是些超 30% 或者破了 50 日线、根本不能买的股票,还会引发另一个问题:把原本健康持有的好股票挤出持仓。

10 月 30 日可口可乐(US.KO)卡玛比率 5.01,价格在 50 日线上方 5.4%、年线上方 15.6%,安全距离有 +12.8σ,走势很稳。

但在原始名义排位里,排在可口可乐前面的 9 只票:

  • 5 只因为超过 +30% 不能买;
  • 2 只(美光、戴尔)因为跌破 50 日线不能买。

前面占着一堆不能买的标的,可口可乐被机械推到了第 10 名,触发了“跌出前 8 名卖出”的换股条件。如果按指令操作,就会把走势健康的可口可乐卖掉,换成风险资产。

解决办法:排位前先剔除无效标的(Effective Ranking)。在排名池里,把所有不合规的标的(超过 +30%、动量为负、跌破 50 日线、安全距离不足 4σ)先剔除。

剔除后,可口可乐直接升到实打实的第 2 名,继续安稳持有,避免了一次毫无道理的卖出换手。

核心标的波动率与缓冲空间二维分布与 1/σ 风险平价决策映射
核心标的波动率与缓冲空间二维分布与 1/σ 风险平价决策映射

上图展示了不同股票的分布:

  • 绿色全额买入区是可口可乐、苹果、Visa、强生这些稳健标的;
  • 橙色破位区标出了跌穿 50 日线的美光和戴尔;
  • 红色缓冲区标出了离止损线太近的闪迪。

三、调仓与监控的口径统一

实盘中导致多余换手的另一类原因,属于系统设计本身的工程问题:日常风控监控脚本和定期换股调仓脚本是在不同时间先后开发的,两套脚本各自独立演进,底层的判定规则口径存在不一致。

1. 规则口径不一致带来的实盘冲突

在 2026 年 11 月 2 日的调仓监控截面中,日立(JP.6501)收盘跌到 4970 日元,跌破了 200 日线(5082 日元)下方 1.5% 的止损阈值。

此时两套脚本输出了相互冲突的指令:

  • 调仓脚本(针对双月截面单日快照):看到单日价格跌破年线 -1.5%,直接在报告里输出清仓信号,目标权重降为 0%;
  • 监控脚本(日常持续运行):在设计时包含时序防假突破逻辑,要求跌破年线必须连续 3 天确认,或者周五收盘确认。周一只是跌破的第 1 天,判定为“破位待确认 (1/3)”,维持持仓观察。
【内部判定冲突】
调仓脚本 (单日快照) ──> 判定破位清仓,目标权重归零
                           ▲ 相互冲突:卖还是不卖?
监控脚本 (时序防假) ──> 破位待确认 (1/3),周一首日,维持观察

如果按调仓脚本在周一执行卖出,而周二股价反弹重回年线,后续监控程序又会判定为正常持仓,这就造成了毫无意义的双向交易磨损。

2. 统一底层状态机判定逻辑

解决这一问题的办法是消除设计口径分歧,统一底层判定:

  1. 调仓脚本复用监控状态机:调仓脚本不再独立编写单日截面切片逻辑,而是直接调用监控脚本的时序判定函数。单日跌破年线但未满足连续 3 天确认的标的,调仓脚本不触发强制清仓,只按正常动量打分参与排位,避免因单日假摔引发误调仓;
  2. 宽基 ETF 取消周五单日确认条款:个股为防周末黑天鹅保留周五收盘确认,但核心宽基 ETF(如 QQQM、VGK)流动性充沛,周五尾盘往往受到期权交割或宏观数据影响出现脉冲波动。对宽基 ETF 统一执行“连续 3 个交易日确认”,避免在周五尾盘被杂波震荡洗出;
  3. 统一收益率方差计算口径:底层波动率计算一律采用简单日收益率,并显式指定自由度 ddof=1 的样本无偏标准差,消除此前由于 ddof=0 与 ddof=1 带来的 2.6% 统计漂移。

四、实盘工程细节与全周期回测验证

1. 实盘执行细节:顺延重算与跳变拦截

在实际交易执行中,还有两处工程细节需要固化:

  • 顺延补单按最新价格重算:若调仓日因故未能即时下单,顺延期间必须取最新收盘价重新计算安全距离。若期间价格回落导致 Cushion 跌破 4.0σ,立即取消该笔开仓,避免贴线追单;存量已建仓标的则交由日常监控管理,盘中不反手反复折腾;
  • 异常价格跳变拦截:行情源偶发可能出现缩水 100 倍等错误数据,导致计算出的历史波动率异常飙升。在数据接入层设置单日 $\pm 50%$ 异常跳变熔断,拦截异常错价进入均线与波动率计算。

2. 全周期消融回测:少折腾到底能改善多少?

使用 2021 年 1 月至 2026 年 10 月的美股跨市场截面数据(共 1,438 个交易日),对上述降频与防守规则进行消融对比回测(Ablation Study)。

所有方案采用双月调仓、持仓容量 6 只、单票上限 35%、保留 10% 现金底仓。为了客观衡量各规则的真实效果,测试保持纯策略对比,不叠加任何外部利息补贴假设:

四大准入方案全周期回测实证 (2021-2026):净值曲线、回撤分布与同量纲消融对比
四大准入方案全周期回测实证 (2021-2026):净值曲线、回撤分布与同量纲消融对比

上图左侧展示了累计净值与动态回撤演变,右侧将四个核心评价指标按独立量纲分组横向对比,实证数据反映出三点明确结论:

  1. 止损次数大幅减少:引入 4.0σ 波动率安全距离与 MA50 趋势门后,全周期止损触发次数从基准方案的 9 次下降到 6 次,大幅降低了无谓的来回割肉与调仓磨损;
  2. 极端回撤显著收窄:MA50 趋势门成功拦截了高位暴跌股票的“逆向买入”,将全周期最大回撤从基准方案的 -14.26% 压缩到 -12.7% 左右,有效抚平了组合的水下深度;
  3. 风险收益比实质提升:在年化收益维持在 +21% 稳健水平的同时,卡玛比率(年化/最大回撤)从基准方案的 1.50 稳步提升至 1.70 以上,实现了“少折腾、稳运行”的系统目标。

结语:管住系统不要瞎折腾

实盘跑久了就会发现,最耗费心力和资金的,往往不是能不能挑出大牛股,而是怎么管住系统不要瞎折腾。

算得出动量,还要看当前离止损线还有没有安全距离,不贴着线买;看见涨幅诱人,还要分得清是正常回踩还是破位下坠,不接急跌飞刀;调仓脚本和日常监控脚本的规则口径也要完全对齐,不自己跟自己打架。

把这些细节在工程层面理顺,量化系统才能在实盘中稳定地跑下去。


个人量化选股实战系列导航


  • 个人量化选股实战系列由 kuhung 整理与维护。
  • 策略源码、配置清单与量化回测框架同步开源于 cang-in-house。