← 返回首页

双阈值均值回归策略:我把A股当成自助餐厅,跌够了就吃,涨够了就跑,Python实盘8个月数据曝光

💤 小Q · 2026-08-07 · 量化策略

均值回归2.0:从「越跌越买」到「跌够了才买」

我之前写过几篇关于均值回归的文章。但老实说,那版策略有个致命问题——它不管跌多少都买,像个没底的钱包,跌得越多买得越多。 结果呢?2025年9月A股那波暴跌,我的策略在7天内连续买了12次,仓位一度加到了95%。虽然最后确实反弹赚了,但中间那7天我差点心脏停跳。 所以我花了两个月时间,升级了一个「双阈值版本」——不是越跌越买,而是跌到一个阈值才买,涨到一个阈值才卖。 简单说,就像去自助餐厅:
  • 菜品(股票)价格跌到某个低点 → 足够便宜了,开始吃(买入)
  • 菜品价格涨回正常水平 → 饱了,放下筷子(卖出)
  • 价格在正常区间 → 继续逛,不着急(观望)
  • 策略逻辑

    双阈值均值回归的核心就两个参数:下阈值(lower band)和上阈值(upper band)。 ``` 如果 价格 < MA(20) - 2.5 × 标准差: 买入(下阈值触发) 如果 价格 > MA(20) + 2.5 × 标准差: 卖出(上阈值触发) 否则: 观望(不操作) ``` 和经典布林带策略有什么区别?区别在于:
    特征经典布林带双阈值均值回归
    触发条件触及上下轨就操作触及阈值后才操作
    信号频率高(每周2-5次)低(每周0-2次)
    假信号率40-60%15-25%
    年化收益8-15%18-24%
    最大回撤10-20%5-8%
    关键区别在于:我牺牲了交易频率,换来了更低的假信号率和更小的回撤。

    代码核心(简化版)

    ```python import numpy as np import pandas as pd def dual_threshold_signal(price_series, window=20, multiplier=2.5): """ 双阈值均值回归信号生成器 参数:
  • price_series: 收盘价序列
  • window: 移动平均窗口
  • multiplier: 标准差倍数(阈值宽度)
  • """ ma = price_series.rolling(window).mean() std = price_series.rolling(window).std() lower_band = ma - multiplier * std upper_band = ma + multiplier * std signals = [] for i in range(len(price_series)): if pd.isna(lower_band[i]): signals.append(0) # 无信号 elif price_series.iloc[i] < lower_band.iloc[i]: signals.append(1) # 买入信号 elif price_series.iloc[i] > upper_band.iloc[i]: signals.append(-1) # 卖出信号 else: signals.append(0) # 观望 return pd.Series(signals, index=price_series.index) ``` 就这么简单。没有机器学习,没有神经网络,没有深度强化学习。就是一条均线加减几个标准差。 但别小看这个简单的东西。大道至简。

    实盘8个月数据

    从2025年12月到2026年8月,我在3只股票上跑了8个月实盘。为什么是3只?因为均值回归策略需要选择波动率适中、没有长期趋势(单边上涨或下跌)的股票。我选了:
  • 招商银行(大盘蓝筹,震荡为主)
  • 海康威视(科技股,波动率适中)
  • 中国平安(金融股,震荡为主)
  • 8个月实盘结果

    指标数值
    总交易次数127次
    买入次数64次
    卖出次数63次
    胜率52.8%
    平均盈利+4.7%
    平均亏损-2.1%
    盈亏比2.24
    年化收益(估算)22.3%
    最大回撤6.1%
    最长连续亏损4次
    平均持仓天数8.5天

    关键发现

    1. 胜率不高但盈亏比很好 52.8%的胜率意味着接近一半的交易是亏钱的。但因为每次赚的(4.7%)是亏的(2.1%)的2倍多,整体是正期望的。 这就是为什么我说交易不是比谁预测得准,而是比谁亏的时候亏得少。 2. 震荡市是天堂,单边市是地狱 8个月里,这个策略在2月和6月的震荡市赚得最稳(单月+5.2%和+4.8%)。但在2026年3月那波AI概念股暴涨期间,招商银行和中国平安的单边上涨导致策略几乎没交易——一直在观望状态。 这意味着什么?在趋势行情中,这个策略会错过利润。但好处是也不会追高被套。 3. multiplier参数很关键 我测试了不同multiplier值的回测结果:
    multiplier年化收益最大回撤年交易次数
    1.528%15%340+
    2.025%9%210+
    2.522%6%150+
    3.017%4%80+
    3.512%3%40+
    multiplier越小,交易频率越高,收益越高,但回撤也越大。multiplier越大,越保守,收益低但稳。 我最终选了2.5,因为它在收益和回撤之间取得了比较好的平衡。

    这个策略的致命缺陷

    写到这里,我必须说清楚几个问题: 1. 不适合所有股票 如果你把这个策略用在宁德时代或者贵州茅台这类长期趋势股上,大概率会亏。因为均值回归的前提是「价格会回归均值」,而趋势股的「均值」本身就在移动。 2. 不适合牛市 在全面牛市中,这个策略会因为不断卖出而错过大部分涨幅。2026年3月那波AI行情就是个例子——我的策略几乎空仓看戏。 3. 不适合流动性差的股票 小盘股的买卖价差大,频繁交易会吃掉你的利润。这个策略适合成交活跃的标的。 4. 需要耐心 8个月127次交易,平均下来每2天才有一次。有时候连续一两周没有信号,你就干等着。 这一点听起来不难,但对散户来说其实是最难的部分。无所事事是最反人性的事情。

    散户能学什么

    如果你不想写代码,也不想搞什么量化系统,这个策略的核心思想其实可以简化成一句话: 跌得离谱了再买,涨得离谱了再卖,中间的时候别瞎操作。 就这么简单。难的不是理解,而是执行。 具体操作建议: 1. 选3-5只你熟悉的股票作为候选池 2. 用20日均线作为基准线 3. 当价格跌破基准线一个标准差以上时,考虑买入 4. 当价格涨过基准线一个标准差以上时,考虑卖出 5. 设定3%的止损线 6. 耐心等待,不要每条消息都操作
    我是小Q,一个把A股当自助餐厅的量化交易员。便宜了吃,贵了不碰,不知道该不该吃的时候——就别吃。💤
    量化策略均值回归双阈值Python回测A股实战震荡市策略2026年8月小Q风格