Skip to content

第 12 讲:止损——持仓期内何时动手

本讲要点

止损是风控规则,不是又一个择时指标;能限制亏损,也可能切断动量。


1. 问题从哪里来

月度(或季度)再平衡意味着:两次调仓之间,组合可能连续持有数周。若其中某只标的迅速大跌,要不要提前卖出、改持现金,直到下一次再平衡再重新排名?

再平衡止损
触发日历 / 规则日价格相对建仓价触及阈值
目的更新相对强弱限制单段持仓的绝对亏损
风险过勤则费成本阈值过紧则频繁下车、踏空反弹

止损不是再叠一条均线;它是持仓期内的退出规则,阈值本身也可被过拟合。


2. 本讲规则(写死)

基础策略与第 8 讲一致:

  • Universe:四只 ETF
  • 月末按上月收益选 Top-2,等权
  • 持有至下一月末

增加持仓期内规则(相对该期建仓价):

  • 止损 (x%):任一只跌幅 ≤ (-,x%),则该只清仓为现金,其余继续持有至期末或也被触发
  • 止盈 (y%)(对照实验):涨幅 ≥ (y%) 则该只清仓为现金

用日频价格检查触发;触发后该权重收益记为 0(持币),不在月中换入其他标的。


3. 代码要点

python
# 每个调仓段:选出 picks,记录 entry 价
for d in days_in_holding_period:
    # 未退出标的按权重计入当日组合收益
    ...
    pnl = price[d] / entry - 1
    if stop_loss is not None and pnl <= -stop_loss:
        mark_stopped(symbol)   # 之后持币
    elif take_profit is not None and pnl >= take_profit:
        mark_stopped(symbol)

脚本:easy-quant/code/12_stop_loss.py


4. 运行结果

固定窗口 2021-01-012026-03-04

text
无退出       累计  64.93%  最大回撤 -25.35%  调仓段 61  —
止损 5%     累计  26.39%  最大回撤 -23.64%  调仓段 61  止损触发 29
止损 8%     累计  43.77%  最大回撤 -22.46%  调仓段 61  止损触发 10
止损 10%    累计  50.00%  最大回撤 -26.69%  调仓段 61  止损触发 6
止损 15%    累计  61.23%  最大回撤 -27.03%  调仓段 61  止损触发 2
止盈 10%    累计  82.34%  最大回撤 -21.51%  调仓段 61  止盈触发 11
止盈 15%    累计  81.63%  最大回撤 -25.24%  调仓段 61  止盈触发 5
方案累计收益最大回撤触发次数
无退出64.93%−25.35%
止损 5%26.39%−23.64%29
止损 8%43.77%−22.46%10
止损 10%50.00%−26.69%6
止损 15%61.23%−27.03%2
止盈 10%82.34%−21.51%11
止盈 15%81.63%−25.24%5

止损/止盈对照

读法:

  1. 止损越紧,本样本累计收益越差,触发次数也越多——常在波动中下车,动量尚未展开。
  2. 止损 未必明显改善最大回撤(本例 10%、15% 止损回撤并不优于无退出)。
  3. 止盈 10%/15% 在本窗口更好看——这正是危险信号:动量策略本意是让强势继续持有,样本内「最优止盈」很容易变成又一次参数拟合(回顾第 6–7 讲)。

教学结论:

  • 止损是可选风控,要报告触发次数与对收益/回撤的影响;
  • 不可把样本内扫出的「最佳阈值」直接当规律;
  • 动量主线里,对止盈尤须谨慎,除非有独立的样本外与经济逻辑支撑。

说明:日频模拟与第 8 讲「月收益 × 权重」在实现细节上略有差别,无退出约 64.93% 与月频毛收益 63.56% 同一量级,对照实验在同一套日频框架内进行即可。


5. B 单元收束

解决的问题
8主线:池内动量轮动
9谁能进场(Universe)
10各买多少(等权等)
11多久换一次(频率 × 成本)
12持仓期内是否止损/止盈

下一单元进入组合怎么验收与更严的滚动样本外检验。

上一讲:再平衡 · 下一讲:组合验收 · 目录