均值回归的真相:为什么"抄底"很难赚钱
引言:一个让人失望的发现
在量化交易的世界里,存在两种截然不同的投资哲学:
- 趋势跟踪:顺势而为,认为"趋势是你的朋友"
- 均值回归:逆势操作,相信"价格终将回归均值"
均值回归听起来很诱人——"跌多了买,涨多了卖",这不就是"低买高卖"的完美实现吗?
但数据告诉我们一个残酷的事实:
| 市场 | 买入持有 | 最优均值回归策略 | 结果 |
|---|---|---|---|
| 美股 QQQ(16年) | 18.56% | 10.27%(V1偏离度) | ❌ 跑输 8% |
| A股 沪深300(8年) | 3.41% | 2.99%(V4趋势过滤) | ❌ 跑输 0.4% |
| A股 创业板(8年) | 8.42% | 3.58%(V6趋势止盈) | ❌ 跑输 5% |
我们测试了7个版本的均值回归策略,没有一个能跑赢简单的买入持有。
但真正的发现藏在细节里:同样的买入逻辑,仅仅改变卖出策略,收益差距可达4-5个百分点。
这不是参数问题,也不是实现问题——均值回归作为独立策略,在股票/ETF市场很难创造超额收益。
但这篇文章的价值不在于展示一个"成功策略",而在于:
- 诚实地揭示均值回归的适用边界 — 什么时候不该用它
- 发现它的正确定位 — 作为趋势策略的入场时机优化工具
- 展示原语系统的表达能力 — 如何用原语实现从简单到复杂的均值回归逻辑
最重要的发现是:买入和卖出需要分开设计。V4和V6的对比揭示了一个被忽视的真相——同样的买入逻辑,不同的卖出策略,在不同市场的表现可以相差4-5个百分点。
均值回归的核心概念
什么是均值回归?
均值回归理论认为:价格偏离均值后,终将回归到均值附近。
这个理论基于以下假设:
- 市场存在一个"公允价值"(通常用移动平均线代表)
- 短期价格波动是对公允价值的偏离
- 偏离过大时,市场力量会推动价格回归
核心问题
实现均值回归策略需要回答两个关键问题:
- 如何定义"偏离"? —— 价格与均值的距离
- 如何定义"够远"? —— 触发交易的阈值
本文介绍三种衡量偏离的方式:
| 方法 | 计算方式 | 特点 |
|---|---|---|
| 百分比偏离度 | (价格 - MA) / MA | 简单直观,但阈值需要针对不同标的调整 |
| 布林带 | 使用标准差标准化 | 自动适应波动率,通用性强 |
| ATR自适应 | 根据波动率动态调整阈值 | 在极端行情中更稳健 |
策略版本概览
我们构建了7个版本的策略进行对比:
| 版本 | 策略名称 | 核心逻辑 |
|---|---|---|
| V0 | 买入持有 | 基准对照组 |
| V1 | 百分比偏离度 | 价格偏离MA20达到阈值时买卖 |
| V2 | 布林带策略 | 触及下轨买入,触及上轨卖出 |
| V3 | ATR自适应布林带 | 波动率高时放宽阈值 |
| V4 | 趋势过滤+均值回归 | 仅在上升趋势中执行均值回归买入,上轨卖出 |
| V5 | 偏离度分批建仓 | 根据偏离程度动态调整仓位 |
| V6 | 趋势跟踪止盈 | 均值回归买入 + 趋势跟踪卖出 |
V1:百分比偏离度策略(入门版)
核心逻辑
最简单的均值回归实现:
偏离度 = (价格 - MA20) / MA20
买入条件:偏离度 < -8%(美股)/ -6%(A股)
卖出条件:偏离度 > +8%(美股)/ +6%(A股)
原语配置
{
"trade_strategy": {
"indicators": [
{ "id": "ma20", "type": "SMA", "params": { "period": 20, "column": "Close" } },
{ "id": "threshold_buy", "type": "Constant", "params": { "value": -0.08 } },
{ "id": "threshold_sell", "type": "Constant", "params": { "value": 0.08 } }
],
"signals": [
{
"id": "price_minus_ma",
"type": "Subtract",
"params": { "return_calculation": true },
"inputs": [
{ "column": "Close" },
{ "ref": "ma20" }
]
},
{
"id": "deviation_pct",
"type": "Divide",
"params": { "return_calculation": true },
"inputs": [
{ "ref": "price_minus_ma" },
{ "ref": "ma20" }
]
},
{
"id": "oversold",
"type": "LessThan",
"inputs": [
{ "ref": "deviation_pct" },
{ "ref": "threshold_buy" }
]
},
{
"id": "overbought",
"type": "GreaterThan",
"inputs": [
{ "ref": "deviation_pct" },
{ "ref": "threshold_sell" }
]
}
],
"outputs": {
"buy_signal": "oversold",
"sell_signal": "overbought"
}
}
}
策略特点
- 优点:逻辑简单,易于理解
- 缺点:固定阈值无法适应不同市场的波动率
V2:布林带策略(标准版)
核心逻辑
布林带通过标准差自动调整通道宽度,解决了固定阈值的问题:
中轨 = MA20
上轨 = MA20 + 2 × 标准差
下轨 = MA20 - 2 × 标准差
买入条件:价格 < 下轨
卖出条件:价格 > 上轨
原语配置
{
"trade_strategy": {
"indicators": [
{
"id": "bb",
"type": "BollingerBands",
"params": {
"period": 20,
"std_dev": 2.0,
"column": "Close",
"method": "sma"
}
}
],
"signals": [
{
"id": "below_lower",
"type": "LessThan",
"inputs": [
{ "column": "Close" },
{ "ref": "bb.lower" }
]
},
{
"id": "above_upper",
"type": "GreaterThan",
"inputs": [
{ "column": "Close" },
{ "ref": "bb.upper" }
]
}
],
"outputs": {
"buy_signal": "below_lower",
"sell_signal": "above_upper"
}
}
}
布林带原语详解
📖 关于布林带策略的完整介绍,请参考 布林带策略。
BollingerBands 原语输出三条线,可通过点符号访问:
bb.upper- 上轨bb.middle- 中轨(MA)bb.lower- 下轨
策略特点
- 优点:自动适应波动率,无需针对不同标的调整参数
- 缺点:在单边趋势中可能频繁触发错误信号
V3:ATR自适应布林带(进阶版)
问题背景
标准布林带在极端行情中可能失效——当市场恐慌性下跌时,"触及下轨"可能只是下跌的开始。
解决方案
根据ATR(真实波动幅度)动态调整布林带标准差:
- ATR高(市场恐慌)→ 使用宽布林带(标准差2.5)
- ATR低(市场平静)→ 使用窄布林带(标准差1.5)
原语配置
{
"trade_strategy": {
"indicators": [
{
"id": "bb_tight",
"type": "BollingerBands",
"params": { "period": 20, "std_dev": 1.5, "column": "Close", "method": "sma" }
},
{
"id": "bb_wide",
"type": "BollingerBands",
"params": { "period": 20, "std_dev": 2.5, "column": "Close", "method": "sma" }
},
{ "id": "atr_short", "type": "ATR", "params": { "period": 14 } },
{ "id": "atr_long", "type": "ATR", "params": { "period": 60 } },
{ "id": "atr_ratio_threshold", "type": "Constant", "params": { "value": 1.2 } }
],
"signals": [
{
"id": "atr_ratio",
"type": "Divide",
"params": { "return_calculation": true },
"inputs": [{ "ref": "atr_short" }, { "ref": "atr_long" }]
},
{
"id": "high_volatility",
"type": "GreaterThan",
"inputs": [{ "ref": "atr_ratio" }, { "ref": "atr_ratio_threshold" }]
},
{
"id": "below_lower_tight",
"type": "LessThan",
"inputs": [{ "column": "Close" }, { "ref": "bb_tight.lower" }]
},
{
"id": "below_lower_wide",
"type": "LessThan",
"inputs": [{ "column": "Close" }, { "ref": "bb_wide.lower" }]
},
{
"id": "above_upper_tight",
"type": "GreaterThan",
"inputs": [{ "column": "Close" }, { "ref": "bb_tight.upper" }]
},
{
"id": "above_upper_wide",
"type": "GreaterThan",
"inputs": [{ "column": "Close" }, { "ref": "bb_wide.upper" }]
},
{
"id": "low_vol_not",
"type": "Not",
"inputs": [{ "ref": "high_volatility" }]
},
{
"id": "buy_low_vol",
"type": "And",
"inputs": [{ "ref": "low_vol_not" }, { "ref": "below_lower_tight" }]
},
{
"id": "buy_high_vol",
"type": "And",
"inputs": [{ "ref": "high_volatility" }, { "ref": "below_lower_wide" }]
},
{
"id": "buy_signal",
"type": "Or",
"inputs": [{ "ref": "buy_low_vol" }, { "ref": "buy_high_vol" }]
},
{
"id": "sell_low_vol",
"type": "And",
"inputs": [{ "ref": "low_vol_not" }, { "ref": "above_upper_tight" }]
},
{
"id": "sell_high_vol",
"type": "And",
"inputs": [{ "ref": "high_volatility" }, { "ref": "above_upper_wide" }]
},
{
"id": "sell_signal",
"type": "Or",
"inputs": [{ "ref": "sell_low_vol" }, { "ref": "sell_high_vol" }]
}
],
"outputs": {
"buy_signal": "buy_signal",
"sell_signal": "sell_signal"
}
}
}
策略特点
- 优点:在恐慌行情中更加谨慎
- 缺点:高波动时放宽阈值反而可能减少入场机会
V4:趋势过滤 + 均值回归(混合策略)
核心思想
这是本文最重要的策略改进:将趋势跟踪与均值回归结合。
趋势判断:价格 > MA200(大趋势向上)
入场时机:价格触及布林带下轨(短期超卖)
买入信号 = 趋势向上 AND 短期超卖
卖出信号 = 价格触及上轨
这个组合的哲学是:
- 用趋势判断决定"是否参与"
- 用均值回归决定"何时入场"
📖 关于如何用
And、Or等原语组合信号,请参考 原语组合。
原语配置
{
"trade_strategy": {
"indicators": [
{ "id": "ma200", "type": "SMA", "params": { "period": 200, "column": "Close" } },
{
"id": "bb",
"type": "BollingerBands",
"params": { "period": 20, "std_dev": 2.0, "column": "Close" }
}
],
"signals": [
{
"id": "uptrend",
"type": "GreaterThan",
"inputs": [
{ "column": "Close" },
{ "ref": "ma200" }
]
},
{
"id": "below_lower",
"type": "LessThan",
"inputs": [
{ "column": "Close" },
{ "ref": "bb.lower" }
]
},
{
"id": "above_upper",
"type": "GreaterThan",
"inputs": [
{ "column": "Close" },
{ "ref": "bb.upper" }
]
},
{
"id": "buy_signal",
"type": "And",
"inputs": [
{ "ref": "uptrend" },
{ "ref": "below_lower" }
]
}
],
"outputs": {
"buy_signal": "buy_signal",
"sell_signal": "above_upper"
}
}
}
策略特点
- 优点:避免在下跌趋势中"接飞刀"
- 缺点:趋势过滤会过滤掉部分有效信号
V5:偏离度分批建仓(仓位管理版)
核心思想
不是"触及下轨就满仓",而是"偏离越大,仓位越高":
偏离1个标准差 → 30%仓位
偏离1.5个标准差 → 60%仓位
偏离2个标准差 → 100%仓位
📖 关于
LinearScaleWeight动态仓位原语的详细用法,请参考 动态仓位策略。
原语配置
{
"trade_strategy": {
"indicators": [
{
"id": "bb",
"type": "BollingerBands",
"params": { "period": 20, "std_dev": 1.0, "column": "Close" }
},
{ "id": "ma200", "type": "SMA", "params": { "period": 200, "column": "Close" } },
{ "id": "minus_one", "type": "Constant", "params": { "value": -1.0 } }
],
"signals": [
{
"id": "price_minus_middle",
"type": "Subtract",
"params": { "return_calculation": true },
"inputs": [
{ "column": "Close" },
{ "ref": "bb.middle" }
]
},
{
"id": "band_width",
"type": "Subtract",
"params": { "return_calculation": true },
"inputs": [
{ "ref": "bb.upper" },
{ "ref": "bb.middle" }
]
},
{
"id": "deviation_in_sigma",
"type": "Divide",
"params": { "return_calculation": true },
"inputs": [
{ "ref": "price_minus_middle" },
{ "ref": "band_width" }
]
},
{
"id": "uptrend",
"type": "GreaterThan",
"inputs": [
{ "column": "Close" },
{ "ref": "ma200" }
]
},
{
"id": "oversold_1sigma",
"type": "LessThan",
"inputs": [
{ "ref": "deviation_in_sigma" },
{ "ref": "minus_one" }
]
},
{
"id": "buy_signal",
"type": "And",
"inputs": [
{ "ref": "uptrend" },
{ "ref": "oversold_1sigma" }
]
},
{
"id": "negate_deviation",
"type": "Multiply",
"params": { "return_calculation": true },
"inputs": [
{ "ref": "deviation_in_sigma" },
{ "ref": "minus_one" }
]
},
{
"id": "dynamic_weight",
"type": "LinearScaleWeight",
"inputs": [{ "ref": "negate_deviation" }],
"params": {
"min_indicator": 1.0,
"max_indicator": 2.0,
"min_weight": 0.3,
"max_weight": 1.0,
"clip": true
}
}
],
"outputs": {
"buy_signal": "buy_signal",
"sell_signal": "overbought",
"target_weight": "dynamic_weight"
}
}
}
策略特点
- 优点:渐进式建仓,降低择时风险
- 缺点:需要配合
RebalancingCapitalStrategy使用
V6:趋势跟踪止盈(混合策略改进版)
问题背景
V4策略虽然在买入时加入了趋势过滤,但卖出逻辑仍然是均值回归思维(触及上轨就卖)。这导致在上涨趋势中过早卖出,错失后续涨幅。
| 环节 | V4 逻辑 | 问题 |
|---|---|---|
| 买入 | 趋势向上 + 短期超卖 | ✅ 有趋势过滤 |
| 卖出 | 触及布林带上轨 | ❌ 无趋势过滤,可能过早卖出 |
解决方案
V6将卖出逻辑改为趋势跟踪:
买入条件:价格 > MA200 AND 价格 < 布林带下轨(同V4)
卖出条件:价格 < MA200(趋势转弱时才卖)
核心思想:
- 用均值回归找入场时机(回调到下轨买入)
- 用趋势跟踪持有利润(跌破MA200才卖出)
原语配置
{
"trade_strategy": {
"indicators": [
{ "id": "ma200", "type": "SMA", "params": { "period": 200, "column": "Close" } },
{
"id": "bb",
"type": "BollingerBands",
"params": { "period": 20, "std_dev": 2.0, "column": "Close" }
}
],
"signals": [
{
"id": "uptrend",
"type": "GreaterThan",
"inputs": [
{ "column": "Close" },
{ "ref": "ma200" }
]
},
{
"id": "downtrend",
"type": "LessThan",
"inputs": [
{ "column": "Close" },
{ "ref": "ma200" }
]
},
{
"id": "below_lower",
"type": "LessThan",
"inputs": [
{ "column": "Close" },
{ "ref": "bb.lower" }
]
},
{
"id": "buy_signal",
"type": "And",
"inputs": [
{ "ref": "uptrend" },
{ "ref": "below_lower" }
]
}
],
"outputs": {
"buy_signal": "buy_signal",
"sell_signal": "downtrend"
}
}
}
策略特点
- 优点:在趋势市中持有更久,避免过早止盈
- 缺点:MA200是滞后指标,在震荡市中可能吃掉利润后才止损
完整回测对比
美股 QQQ (2010-2025, 16年)
| 策略 | 净值 | 年化收益 | 最大回撤 | 夏普比率 | 波动率 | 交易次数 |
|---|---|---|---|---|---|---|
| V0-BuyHold | 15.21 | 18.56% | -35.12% | 0.96 | 20.64% | 1 |
| V1-偏离度 | 4.77 | 10.27% | -28.00% | 0.74 | 16.16% | 4 |
| V2-布林带 | 4.15 | 9.31% | -33.11% | 0.73 | 15.38% | 39 |
| V3-ATR自适应 | 3.71 | 8.54% | -21.39% | 0.87 | 14.11% | 60 |
| V4-趋势过滤 | 3.53 | 8.20% | -29.65% | 0.68 | 14.40% | 34 |
| V5-动态仓位 | 3.74 | 8.61% | -23.12% | 0.71 | 11.49% | 1 |
| V6-趋势止盈 | 3.37 | 7.89% | -20.60% | 0.61 | 11.39% | 12 |
结论:
- 所有均值回归策略都大幅跑输买入持有(年化差距8-10个百分点)
- 风险控制亮点:V3/V5/V6的最大回撤(-20%~-23%)显著优于买入持有(-35%)
- 夏普比率悖论:买入持有的夏普比率(0.96)反而最高,因为QQQ长期向上
A股 沪深300 (2018-2025, 8年)
| 策略 | 净值 | 年化收益 | 最大回撤 | 夏普比率 | 波动率 | 交易次数 |
|---|---|---|---|---|---|---|
| V0-BuyHold | 1.31 | 3.41% | -41.85% | 0.22 | 19.50% | 1 |
| V1-偏离度 | 1.05 | 0.65% | -33.43% | 0.05 | 13.80% | 4 |
| V2-布林带 | 0.98 | -0.19% | -26.54% | -0.04 | 12.39% | 21 |
| V3-ATR自适应 | 0.99 | -0.10% | -32.52% | -0.05 | 12.02% | 26 |
| V4-趋势过滤 | 1.27 | 2.99% | -13.67% | 0.63 | 7.22% | 11 |
| V5-动态仓位 | 1.12 | 1.41% | -24.35% | 0.09 | 8.82% | 1 |
| V6-趋势止盈 | 0.95 | -0.60% | -19.75% | -0.54 | 8.71% | 7 |
结论:
- V4是最优策略:年化2.99%接近买入持有,但最大回撤仅-13.67%(vs -41.85%),夏普比率0.63(vs 0.22)
- V4用19%的时间获得了85%的收益,同时回撤降低了28个百分点
- V6在震荡市中失效,夏普比率为负
A股 创业板 (2018-2025, 8年)
| 策略 | 净值 | 年化收益 | 最大回撤 | 夏普比率 | 波动率 | 交易次数 |
|---|---|---|---|---|---|---|
| V0-BuyHold | 1.91 | 8.42% | -56.56% | 0.37 | 30.23% | 1 |
| V2-布林带 | 0.72 | -4.10% | -48.82% | -0.43 | 15.04% | 15 |
| V4-趋势过滤 | 0.91 | -1.12% | -36.49% | -0.19 | 12.11% | 10 |
| V6-趋势止盈 | 1.32 | 3.58% | -32.09% | 0.20 | 14.72% | 5 |
结论:
- 创业板波动极大(-56%回撤),均值回归策略整体失效
- V6相对最优:虽然跑输买入持有,但回撤降低了24个百分点
- 在高波动趋势市场,趋势跟踪止盈(V6)优于均值回归止盈(V4)
全景对比:风险调整后收益
按夏普比率排序,展示风险调整后的真实表现:
| 排名 | 策略 | 市场 | 年化收益 | 最大回撤 | 夏普比率 | 评价 |
|---|---|---|---|---|---|---|
| 1 | V0-BuyHold | QQQ | 18.56% | -35.12% | 0.96 | 🏆 牛市首选 |
| 2 | V3-ATR自适应 | QQQ | 8.54% | -21.39% | 0.87 | 回撤控制出色 |
| 3 | V1-偏离度 | QQQ | 10.27% | -28.00% | 0.74 | 简单有效 |
| 4 | V5-动态仓位 | QQQ | 8.61% | -23.12% | 0.71 | 波动率最低 |
| 5 | V4-趋势过滤 | 沪深300 | 2.99% | -13.67% | 0.63 | 🏆 震荡市首选 |
| 6 | V0-BuyHold | 创业板 | 8.42% | -56.56% | 0.37 | 高收益高风险 |
| 7 | V0-BuyHold | 沪深300 | 3.41% | -41.85% | 0.22 | 回撤太大 |
| 8 | V6-趋势止盈 | 创业板 | 3.58% | -32.09% | 0.20 | 风控改善明显 |
核心发现:
- QQQ买入持有的夏普比率最高——在超级牛市中,被动策略就是最优策略
- 沪深300的V4趋势过滤是均值回归策略的最佳实践——夏普0.63远超买入持有的0.22
- 回撤控制是均值回归的主要价值——虽然跑输收益,但风险大幅降低
关键发现:均值回归的适用边界
发现一:均值回归在趋势市中表现糟糕
从三个市场的对比可以看出:
| 市场 | 特征 | 均值回归表现 |
|---|---|---|
| QQQ | 16年超级牛市 | 大幅跑输基准 |
| 沪深300 | 震荡偏多 | 接近基准 |
| 创业板 | 高波动趋势 | 严重亏损 |
核心原因:均值回归策略在价格"回归均值"时卖出,导致在上涨趋势中反复踏空。
发现二:持仓时间是收益的关键因素
| 策略 | QQQ持仓比例 | QQQ年化 | 300持仓比例 | 300年化 |
|---|---|---|---|---|
| V0 | 100% | 18.56% | 100% | 3.41% |
| V1 | 65% | 10.27% | 75% | 0.65% |
| V2 | 48% | 9.31% | 50% | -0.19% |
持仓比例与收益高度相关。均值回归策略的"等待机会"本质上是在趋势市中错过收益。
发现三:买入和卖出需要匹配市场特征
V4和V6的对比揭示了一个重要发现:卖出策略需要与市场特征匹配。
| 市场 | V4(上轨止盈) | V6(MA200止损) | 更优策略 |
|---|---|---|---|
| 沪深300(震荡市) | 2.99% | -0.60% | V4 |
| 创业板(趋势市) | -1.12% | 3.58% | V6 |

深入分析:沪深300 V4 vs V6 交易对比
V4交易记录(触及上轨卖出):
| 买入 | 卖出 | 收益 |
|---|---|---|
| 2020-09-09 @ 4.25 | 2020-10-12 @ 4.48 | +5% |
| 2021-03-08 @ 4.71 | 2021-05-25 @ 4.94 | +5% |
V6交易记录(跌破MA200卖出):
| 买入 | 卖出 | 收益 | 问题 |
|---|---|---|---|
| 2019-04-26 @ 3.50 | 2020-02-03 @ 3.35 | -4% | 持有9个月遇疫情暴跌 |
| 2025-01-02 @ 3.82 | 2025-04-07 @ 3.61 | -5% | 跌破MA200才止损 |
核心问题:MA200是滞后指标,在震荡市中:
- 价格频繁穿越MA200
- 每次"跌破才卖"意味着已经吃了大量回撤
- V4的"触及上轨就卖"虽然可能踏空,但锁定了利润
结论:
- 震荡市用均值回归止盈(V4):锁定利润,避免回吐
- 趋势市用趋势跟踪止盈(V6):持有更久,跟随趋势
发现四:没有万能策略
从V4和V6的对比可以清晰看出:同一策略在不同市场表现截然不同。
这提示我们:
- 策略选择必须基于对市场特征的判断
- 回测需要覆盖不同市场环境
- 实盘中需要根据市场状态动态切换策略
发现五:V1阈值过于严格
V1策略在16年内只触发了4次买入,说明-8%的偏离度阈值对于QQQ来说过于严格。这也提示我们:
- 固定阈值需要针对具体标的调整
- 布林带的自适应特性在这方面更有优势
策略选择指南
根据回测结果,我们总结出以下选择建议:
| 市场特征 | 推荐策略 | 理由 |
|---|---|---|
| 长期牛市 | V0 买入持有 | 均值回归会反复踏空 |
| 震荡市 | V4 趋势过滤 | 均值回归止盈锁定利润 |
| 趋势市(有回调) | V6 趋势止盈 | 趋势跟踪止盈持有更久 |
| 不确定市场 | V5 分批建仓 | 渐进入场,降低风险 |
V4 vs V6 选择矩阵
| 判断维度 | 选择V4 | 选择V6 |
|---|---|---|
| 市场特征 | 震荡、箱体 | 趋势明显 |
| 价格与MA200 | 频繁穿越 | 长期在上方/下方 |
| 波动特征 | 规律波动 | 单边运动 |
| 风险偏好 | 保守(锁定利润) | 激进(追求更大收益) |
参数调优建议
| 参数 | 推荐范围 | 说明 |
|---|---|---|
| 布林带周期 | 10-30日 | 短周期更敏感,长周期更稳健 |
| 标准差倍数 | 1.5-2.5 | 小值更激进,大值更保守 |
| 趋势过滤均线 | 100-250日 | MA200是经典选择 |
| 偏离度阈值 | 5%-10% | 需根据标的波动率调整 |
参数稳健性验证
本文的核心结论基于特定参数组合(MA200、布林带2.0倍标准差)。在实际应用前,建议验证结论在参数扰动下是否稳健:
- 将 MA200 替换为 MA150 / MA250
- 将布林带标准差从 2.0 调整为 1.5 / 2.5
如果在参数合理变动范围内,"震荡市V4优于V6"、"趋势市V6优于V4"的结论依然成立,则说明策略逻辑本身有效,而非参数过拟合的结果。
💡 你可以在 策引平台 上复制本文策略,修改参数后自行回测验证。
资金策略说明
本文策略使用两种资金策略:
PercentCapitalStrategy(V0-V4)
📖 详细介绍请参考 固定比例资金策略。
{
"name": "PercentCapitalStrategy",
"params": {
"initial_capital": 100000,
"percents": 99
}
}
每次买入使用99%资金,适合固定仓位策略。
RebalancingCapitalStrategy(V5)
📖 详细介绍请参考 再平衡资金策略。
{
"name": "RebalancingCapitalStrategy",
"params": {
"initial_capital": 100000,
"threshold": 0.05
}
}
支持 target_weight 动态仓位,当实际仓位与目标仓位偏差超过5%时触发调仓。
结论:均值回归的正确定位
通过7个版本、3个市场、累计超过30年的回测数据,我们得出了一个清醒的结论:
核心发现:均值回归不适合作为独立策略
在股票/ETF市场,纯均值回归策略很难跑赢买入持有。
这不是因为我们的实现有问题,而是因为:
- 股票市场有长期向上的趋势(尤其是QQQ)
- 均值回归会在趋势中反复"踏空" — 涨到上轨就卖,错过后续涨幅
- "跌多了"不等于"要涨了" — 在熊市中,触及下轨可能只是下跌的开始
均值回归的正确定位
均值回归不是独立策略,而是工具:
| 正确用法 | 说明 | 对应版本 |
|---|---|---|
| 入场时机优化 | 在趋势向上时,用均值回归找回调买点 | V4、V6 |
| 仓位管理工具 | 偏离越大,仓位越高 | V5 |
| 风险控制辅助 | 极度超买时减仓,而非清仓 | 参考 dynamic-position-strategy |
买入和卖出需要分开设计
这是本文最有价值的发现:
| 策略 | 买入逻辑 | 卖出逻辑 | 沪深300 | 创业板 |
|---|---|---|---|---|
| V4 | 趋势+均值回归 | 均值回归(上轨) | +2.99% | -1.12% |
| V6 | 趋势+均值回归 | 趋势跟踪(MA200) | -0.60% | +3.58% |
同样的买入逻辑,卖出策略不同,收益差距4-5个百分点。
- 震荡市(沪深300):用均值回归止盈(V4),锁定利润
- 趋势市(创业板):用趋势跟踪止盈(V6),持有更久
原语系统的价值
虽然均值回归策略本身表现平平,但这次研究展示了原语系统的核心能力:
- 快速验证想法 — 7个版本、3个市场的完整测试
- 精确定位问题 — V4 vs V6的差异可以追溯到卖出信号的一行配置
- 灵活组合哲学 — 趋势判断 + 均值回归入场,只需一个
And原语
均值回归可能有效的场景
本文的结论是针对股票/ETF市场。在以下场景中,均值回归可能更有效:
| 场景 | 原因 |
|---|---|
| 商品期货(如天然气、农产品) | 有生产成本和库存约束,价格有"锚" |
| 政策管控的汇率 | 央行干预形成隐性区间 |
| 配对交易(统计套利) | 两个相关资产的价差回归 |
| 高频做市策略 | 微观结构层面的短期回归 |
这些场景的共同特点是:存在某种外部力量或结构性约束,使得价格偏离后"必须"回归。而股票市场缺乏这种约束——公司可以持续增长,股价可以"永远"上涨。
如果你只记住三句话
- 不要单独用均值回归做股票策略 — 它很难跑赢买入持有
- 卖出逻辑比买入逻辑更重要 — V4 vs V6 的差距来自卖出信号
- 先判断标的特征再选策略 — 长期向上选买入持有,震荡市选V4控制回撤
附录
A. 完整配置文件
以下配置文件是策引策略引擎内部完整的投资组合配置,包含了原语策略定义、资金策略、标的物等完整信息。
如何在策引平台上使用这些策略:
-
创建原语策略组合:访问 策略组合创建页面
- 仅复制配置文件中
strategy_definition部分的内容 - 粘贴到"交易策略定义"区域
- 必须删除
capital_strategy字段(该字段仅供参考,在创建时通过界面选择对应的资金管理策略即可) - 其他配置项无需复制,在创建投资组合时通过界面配置
- 仅复制配置文件中
-
理解策略逻辑:访问 原语策略可视化编辑器
- 将
strategy_definition粘贴到编辑器中 - 可视化查看策略的指标、信号和逻辑关系
- 支持在线调试和修改策略参数
- 将
-
选择资金管理策略:在创建投资组合时,根据配置文件中的
capital_strategy类型,在界面上选择对应的资金管理策略(如固定金额、固定比例、再平衡等)
⚠️ 重要提示:直接复制完整配置文件可能导致策略无法正常工作或产生意外行为。请严格按照上述步骤操作。
美股策略配置:
A股策略配置:
B. 在线回测链接
美股 QQQ 策略:
A股 沪深300 策略:
A股 创业板 策略:
C. 风险提示
本文所有策略仅供研究和教育目的,不构成投资建议。历史表现不代表未来收益。在实盘交易前,请务必:
- 充分理解策略逻辑和风险
- 根据自身风险承受能力调整仓位
- 永远不要投入超过你能承受损失的资金
本文回测数据截至2025年12月31日。过往表现不代表未来收益,投资有风险,入市需谨慎。