第 05 课:经典策略范式
量化不是发明新策略,而是在正确的市场用正确的策略。
两种交易者的命运
2020 年 3 月,新冠疫情引发全球股市暴跌。
交易者 A 使用趋势跟随策略。在下跌初期,他的策略及时做空,一个月盈利 40%。随后市场触底反弹,他又顺势做多,年底账户翻了三倍。
交易者 B 使用均值回归策略。看到大跌后,他认为"跌多了必然反弹",不断抄底。结果越抄越跌,在最低点前一天爆仓离场。
同一个市场,两种策略,截然不同的结局。
2021 年,情况反过来了。
市场进入震荡期,交易者 A 的趋势策略开始反复被打脸:追涨杀跌,每次都买在高点、卖在低点。他亏掉了 2020 年的一半利润。
而交易者 B(换了新资金)的均值回归策略开始发威:高抛低吸,稳定盈利。年底账户增长 60%。
教训是什么?
- 没有一种策略能适应所有市场
- 趋势市场需要趋势策略,震荡市场需要均值回归策略
- 识别市场状态比选择策略更重要
这就是为什么我们需要多智能体系统——让不同的专家策略负责不同的市场状态。
5.1 趋势跟随
核心思想
"趋势是你的朋友,直到它不再是。"
趋势跟随的哲学:市场有惯性,涨的容易继续涨,跌的容易继续跌。
| 特点 | 描述 |
|---|---|
| 盈利模式 | 捕捉大趋势,赚"头部"和"尾部"的钱 |
| 胜率 | 通常只有 30-45% |
| 盈亏比 | 高,单笔盈利可能是亏损的 3-10 倍 |
| 适用市场 | 趋势明显的市场(牛市、熊市) |
| 致命场景 | 震荡市反复被打脸 |
双均线策略
最经典的趋势跟随策略:
规则:
- 金叉买入:短期均线上穿长期均线(如 MA5 > MA20)
- 死叉卖出:短期均线下穿长期均线(如 MA5 < MA20)
直观理解:
- 短期均线代表"当前情绪"
- 长期均线代表"长期趋势"
- 短期超过长期 = 趋势可能向上转变
| 参数组合 | 适用场景 | 特点 |
|---|---|---|
| MA5/MA20 | 短线交易 | 灵敏,假信号多 |
| MA10/MA60 | 中线交易 | 平衡 |
| MA20/MA120 | 长线投资 | 稳定,滞后严重 |
实际表现:
| 市场状态 | 双均线表现 |
|---|---|
| 强趋势(牛/熊市) | 盈利,能抓住大部分行情 |
| 弱趋势 | 小亏小赚 |
| 震荡市 | 亏损,频繁假信号 |
优化方向:
- 加入趋势过滤器(ADX > 25 才开仓)
- 加入成交量确认(放量时信号更可靠)
- 多周期验证(日线金叉 + 周线趋势向上)
日内趋势交易
适合全职交易者的策略:
规则:
1. 开盘后 30 分钟,观察价格方向
2. 如果突破开盘价 0.5%,顺势开仓
3. 止损设在开盘价另一侧 0.5%
4. 收盘前平仓,不留隔夜风险
| 优点 | 缺点 |
|---|---|
| 不承担隔夜风险 | 需要全程盯盘 |
| 信号明确 | 手续费成本高 |
| 当天结算 | 可能错过大趋势 |
趋势跟随的风险特征
关键洞察:
- 趋势策略在震荡期会连续小亏
- 需要心理准备承受 10-20 次连续止损
- 靠少数几次大趋势赚回所有亏损并盈利
5.2 均值回归
核心思想
"涨多了会跌,跌多了会涨。"
均值回归的哲学:价格终将回归到某个"正常"水平。
| 特点 | 描述 |
|---|---|
| 盈利模式 | 高抛低吸,赚"震荡"的钱 |
| 胜率 | 通常 55-70% |
| 盈亏比 | 低,单笔盈利通常小于亏损 |
| 适用市场 | 震荡市、有界区间 |
| 致命场景 | 趋势突破,越抄越跌 |
网格交易策略
在预设的价格区间内,等距设置买卖点:
规则:
- 价格下跌到 95 → 买入 1 份
- 价格下跌到 90 → 再买 1 份
- 价格上涨到 105 → 卖出 1 份
- 价格上涨到 110 → 再卖 1 份
| 参数 | 建议值 | 说明 |
|---|---|---|
| 网格间距 | 3-5% | 间距太小手续费吃利润,太大信号太少 |
| 总网格数 | 5-10 格 | 太多资金分散,太少容错空间小 |
| 单格仓位 | 总资金/网格数 | 确保最坏情况不爆仓 |
网格交易的真相:
| 市场状态 | 网格表现 |
|---|---|
| 震荡市 | 稳定盈利,每次震荡都能吃到价差 |
| 趋势市向上 | 小盈利,但持仓被卖空,踏空后续涨幅 |
| 趋势市向下 | 巨亏,越跌越买,资金被套 |
重要警告:网格交易最怕单边下跌,务必设置整体止损。
配对交易 (Pairs Trading)
找到两个高度相关的资产,当它们价差偏离正常范围时交易:
示例:SPY vs IVV(两只追踪 S&P 500 的 ETF)
计算标准化价差(而非原始价格比):
标准化价差 = (SPY收益率 - IVV收益率) 的 Z-score
当 Z-score > 2:SPY 相对高估
当 Z-score < -2:SPY 相对低估
操作(假设 Z-score = 2.5):
- 做空 $10,000 SPY
- 做多 $10,000 IVV(等金额对冲)
- 等待 Z-score 回归到 0 附近平仓
注意:SPY 和 IVV 的绝对价格不同(SPY~$600,IVV~$550),不能直接比较价格比。配对交易应使用标准化价差或等金额对冲。
注意:经典的 KO vs PEP 配对在现代市场中协整性已减弱。追踪同一指数的 ETF(如 SPY/IVV、QQQ/QQQM)是更稳健的配对选择。
为什么有效?
- 两只 ETF 追踪完全相同的指数
- 价差偏离是因为市场微观结构差异(流动性、交易时间)
- 偏离通常很快回归
关键概念:协整 (Cointegration)
| 概念 | 定义 | 举例 |
|---|---|---|
| 相关性 | 两个序列同涨同跌 | 黄金和黄金 ETF |
| 协整性 | 两个序列的差值是稳定的 | SPY 和 IVV(同一指数 ETF) |
相关不代表协整。协整才是配对交易的基础。
均值回归的风险特征
关键洞察:
- 均值回归在震荡期非常稳定
- 但一次趋势突破可能亏掉数月利润
- 必须严格止损,不能"死扛"
5.3 多策略组合
为什么要组合?
| 单策略问题 | 组合策略解决方案 |
|---|---|
| 趋势策略在震荡市亏损 | 均值回归策略弥补 |
| 均值回归在趋势市亏损 | 趋势策略弥补 |
| 单一策略风险集中 | 多策略分散风险 |
策略相关性
组合的关键是低相关性:
| 策略 A | 策略 B | 相关性 | 组合效果 |
|---|---|---|---|
| 趋势跟随 | 趋势跟随 | 高 | 无分散效果 |
| 趋势跟随 | 均值回归 | 低/负 | 良好分散 |
| 股票多头 | 债券 | 负 | 优秀分散 |
资本分配方法
方法 1:等权分配
策略 A: 33%
策略 B: 33%
策略 C: 34%
简单,但没有考虑策略风险差异。
方法 2:风险平价 (Risk Parity)
按波动率的倒数分配:
策略 A 波动率 20% → 权重 ∝ 1/0.20 = 5
策略 B 波动率 10% → 权重 ∝ 1/0.10 = 10
策略 C 波动率 40% → 权重 ∝ 1/0.40 = 2.5
标准化后:
策略 A: 5/17.5 ≈ 29%
策略 B: 10/17.5 ≈ 57%
策略 C: 2.5/17.5 ≈ 14%
让每个策略对组合的风险贡献相等。
方法 3:动态调整
- 趋势市场 → 增加趋势策略权重
- 震荡市场 → 增加均值回归策略权重
- 这需要准确的 Regime Detection(第 11 课详解)
5.4 高风险策略警示
马丁格尔策略(慎用)
逻辑:
第 1 次下注 $100,输
第 2 次下注 $200,输
第 3 次下注 $400,输
第 4 次下注 $800,赢!
赢了 $800,之前亏了 $700,净赚 $100
看起来很美,实际很危险:
| 连亏次数 | 累计投入 | 单次下注 |
|---|---|---|
| 1 | $100 | $100 |
| 2 | $300 | $200 |
| 3 | $700 | $400 |
| 4 | $1,500 | $800 |
| 5 | $3,100 | $1,600 |
| 6 | $6,300 | $3,200 |
| 7 | $12,700 | $6,400 |
| 8 | $25,500 | $12,800 |
| 9 | $51,100 | $25,600 |
| 10 | $102,300 | $51,200 |
10 次连亏需要 10 万美金,而收益只是最初的 $100。
为什么会连亏 10 次?
- 50% 胜率下,连亏 10 次的概率 = 0.5^10 ≈ 0.1%
- 看起来很小,但交易 1000 次就会遇到一次
- 一次就足以爆仓
如果一定要用:
- 设置最大加仓次数(如最多加仓 3 次)
- 设置单日最大亏损(如 10%)
- 理解这本质上是"用爆仓风险换高胜率"
5.5 期权策略简介(进阶)
期权是高级工具,风险也高。本节仅作入门介绍,实操前请深入学习希腊值。
期权基础概念
| 术语 | 含义 |
|---|---|
| 认购期权 (Call) | 有权以约定价格买入 |
| 认沽期权 (Put) | 有权以约定价格卖出 |
| 行权价 (Strike) | 约定的买卖价格 |
| 到期日 | 期权失效的日期 |
| 权利金 | 购买期权的价格 |
牛市价差策略 (Bull Call Spread)
操作:
- 买入低行权价的认购期权(如 100 元 Call)
- 卖出高行权价的认购期权(如 110 元 Call)
盈亏图:
盈利 │ ____
│ /
0 │──────●
│ /│
亏损 │____/ │
└──────┴────── 股价
100 110
| 特点 | 描述 |
|---|---|
| 成本 | 低于直接买 Call |
| 最大亏损 | 权利金净支出 |
| 最大盈利 | 行权价差 - 净权利金 |
| 适用场景 | 预期温和上涨 |
末日期权策略(高风险)
在期权到期前 1-3 天,押注波动率爆发:
原理:
- 临近到期,期权时间价值快速衰减
- 但如果有大事件(财报、Fed 会议),波动率可能暴涨
- Gamma 值极高,小幅价格变动会带来巨大收益(或亏损)
| 特点 | 描述 |
|---|---|
| 潜在收益 | 可能 10 倍以上 |
| 潜在亏损 | 权利金归零(100%损失) |
| 胜率 | 通常低于 20% |
| 仓位建议 | ≤ 总资金的 5% |
Gamma Scalping(专业)
原理:持有期权头寸,通过反复买卖标的资产对冲 Delta。
简化示意:
1. 持有 Call 期权(做多 Gamma)
2. 价格上涨 → Delta 变大 → 卖出股票对冲
3. 价格下跌 → Delta 变小 → 买入股票对冲
4. 反复操作,赚取波动差价
盈利条件:实际波动率 > 隐含波动率
| 要求 | 描述 |
|---|---|
| 手续费 | 必须极低 |
| 交易频率 | 高,可能每天几十次 |
| 技术门槛 | 需要精通期权定价和希腊值 |
5.6 策略选择框架
如何选择策略?(可证伪的规则)
模糊的"看趋势"没有意义,需要可量化、可验证的规则:
| 指标条件 | 判定结果 | 推荐策略 | 失效信号 |
|---|---|---|---|
| ADX > 25 且持续 5 日以上 | 趋势确认 | 趋势跟随 | ADX < 20 连续 3 日 |
| ADX < 20 且价格在布林带内震荡 | 震荡确认 | 均值回归 | 价格突破布林带 2σ 且 ADX 上升 |
| 波动率 > 历史 90 分位 | 危机模式 | 减仓/对冲 | 波动率回落到 50 分位以下 |
| 以上均不满足 | 不确定 | 降低仓位 50% | 任一条件满足 |
可证伪的策略选择规则:
如果以下条件满足 → 使用趋势跟随:
1. ADX(14) > 25 连续 5 天
2. 价格在 20 日均线同侧连续 10 天
3. 近 20 日收益率显著不为 0(t 检验 p < 0.05)
如果以下条件满足 → 使用均值回归:
1. ADX(14) < 20 连续 5 天
2. 价格在布林带(20日,2σ)内震荡
3. 近 20 日收益率接近 0(t 检验 p > 0.2)
如果以上条件均不满足 → 降低仓位至 50%,等待信号明确
Regime 切换的过渡期处理
最危险的时刻不是趋势或震荡,而是切换期。
| 切换场景 | 风险 | 应对策略 |
|---|---|---|
| 震荡 → 趋势 | 均值回归策略被套、止损连击 | 突破信号出现后立即减仓均值回归仓位 |
| 趋势 → 震荡 | 趋势策略连续假突破、反复止损 | ADX 下降时逐步减仓趋势策略 |
| 正常 → 危机 | 所有策略同时亏损,相关性飙升 | 波动率突然飙升时优先减仓,而非切换策略 |
切换期的保守规则:
- 确认滞后:Regime 变化确认需要 3-5 天,不要追第一天的信号
- 减仓优先:在不确定期,先减仓再换策略,而非直接全仓切换
- 亏损容忍:预留 5-10% 的"切换成本",接受这部分亏损
回测时必须检验:
- 切换期的亏损占总亏损的比例(如果 > 50%,说明切换逻辑有问题)
- 切换延迟天数(如果 > 5 天,考虑更灵敏的指标)
- 误切换次数(如果太频繁,考虑增加确认条件)
策略对比总结
| 维度 | 趋势跟随 | 均值回归 | 网格交易 |
|---|---|---|---|
| 胜率 | 30-45% | 55-70% | 60-75% |
| 盈亏比 | 3:1 以上 | 1:2 左右 | 1:3 左右 |
| 最大回撤 | 20-40% | 15-30% | 可能爆仓 |
| 资金效率 | 一般 | 较高 | 低(资金分散) |
| 心理压力 | 连续止损 | 扛单压力 | 被套压力 |
| 适用市场 | 趋势市 | 震荡市 | 震荡市 |
常见误区
误区一:高胜率策略更好
不一定。胜率 40% 但盈亏比 3:1 的策略,期望收益远高于胜率 70% 盈亏比 0.5:1 的策略。关键是 期望收益 = 胜率 × 盈利 - 败率 × 亏损。
误区二:回测表现好的参数就是最优参数
危险假设。最优参数往往是"过拟合"的结果。参数 ±20% 变化后收益剧变,说明这套参数只是恰好在历史数据上表现好。
误区三:趋势策略在震荡市"调整参数"就能盈利
不能。趋势策略的逻辑是"趋势存在",震荡市没有趋势,再怎么调参数也无法盈利。正确做法是切换到均值回归策略。
误区四:网格交易是"稳赚"策略
极其危险。网格交易在震荡市确实稳定盈利,但遇到单边下跌会越跌越买,资金被套死。必须设置整体止损。
误区五:经典策略永远有效
当太多人使用同一策略时,策略会失效——这就是策略同质化(Strategy Crowding)风险。2024 年初,中国头部量化基金因小盘股因子拥挤集体亏损 8-13%,揭示了策略趋同的系统性风险。任何策略在被广泛采用后,超额收益都会衰减。详见第 18 课的策略拥挤案例分析。
多智能体视角
在多智能体系统中:
| Agent | 主要策略 | 激活条件 |
|---|---|---|
| Trend Agent | 趋势跟随 | Regime Agent 判定为趋势市 |
| Mean Reversion Agent | 均值回归 | Regime Agent 判定为震荡市 |
| Crisis Agent | 防御策略 | 波动率飙升或出现异常 |
| Portfolio Agent | 多策略组合 | 动态调整各策略权重 |
| Risk Agent | 风控 | 永远在线,一票否决 |
💻 代码实现(可选)
双均线策略回测框架
import pandas as pd
import numpy as np
def dual_ma_strategy(df, short_window=5, long_window=20):
"""
双均线策略
返回持仓信号:1=多头,-1=空头,0=空仓
"""
df = df.copy()
df['MA_Short'] = df['close'].rolling(short_window).mean()
df['MA_Long'] = df['close'].rolling(long_window).mean()
# 生成信号
df['signal'] = 0
df.loc[df['MA_Short'] > df['MA_Long'], 'signal'] = 1 # 金叉做多
df.loc[df['MA_Short'] < df['MA_Long'], 'signal'] = -1 # 死叉做空
return df['signal']
def grid_trading_signal(price, grid_center, grid_step, num_grids):
"""
网格交易信号
返回建议仓位变化
"""
position_change = 0
for i in range(1, num_grids + 1):
buy_level = grid_center * (1 - grid_step * i)
sell_level = grid_center * (1 + grid_step * i)
if price <= buy_level:
position_change = i # 越跌买越多
elif price >= sell_level:
position_change = -i # 越涨卖越多
return position_change
def calculate_strategy_metrics(returns):
"""计算策略评价指标"""
total_return = (1 + returns).prod() - 1
annual_return = (1 + total_return) ** (252 / len(returns)) - 1
volatility = returns.std() * np.sqrt(252)
sharpe = annual_return / volatility if volatility > 0 else 0
# 正确的最大回撤计算(基于权益曲线,非收益累加)
equity = (1 + returns).cumprod()
running_max = equity.cummax()
drawdown = (equity - running_max) / running_max
max_drawdown = drawdown.min()
return {
'total_return': f'{total_return:.2%}',
'annual_return': f'{annual_return:.2%}',
'volatility': f'{volatility:.2%}',
'sharpe_ratio': f'{sharpe:.2f}',
'max_drawdown': f'{max_drawdown:.2%}'
}
本课交付物
完成本课后,你将获得:
- 对两大策略范式的理解 - 趋势跟随 vs 均值回归的本质差异
- 经典策略的实现思路 - 双均线、网格交易、配对交易
- 策略组合的框架 - 理解如何通过低相关性策略分散风险
- 对高风险策略的警惕 - 马丁格尔、末日期权的陷阱
✅ 验收标准
| 检查项 | 验收标准 | 自测方法 |
|---|---|---|
| 策略特征 | 能说出趋势跟随和均值回归的胜率/盈亏比特点 | 不看笔记,填写对比表 |
| 策略选择 | 能根据 ADX 值判断应该用什么策略 | 给定 ADX=30,说出策略选择理由 |
| 风险识别 | 能解释马丁格尔为什么危险 | 计算连亏 8 次需要多少资金 |
| 切换成本 | 能说出 Regime 切换期的三个风险 | 画出切换时的仓位调整流程 |
📝 场景练习:
-
场景 A:SPY 过去 2 周 ADX 从 15 升到 28,价格突破 20 日均线
- 问:应该选择什么策略?为什么?
-
场景 B:你的网格策略在过去 3 个月稳定盈利 15%,突然 SPY 连跌 5 天 12%
- 问:应该如何调整?继续加仓还是止损?
-
场景 C:马丁格尔策略连亏 6 次后终于赢了
- 问:这 7 次交易的总盈利是多少?总共投入了多少资金?
点击查看答案
-
场景 A 答案:切换到趋势跟随策略。理由:ADX > 25 且上升、价格突破均线,满足趋势确认条件。
-
场景 B 答案:应该止损!网格交易最怕单边下跌,5 天跌 12% 已经远超正常震荡。设置整体止损(如亏损 5%)是必须的。
-
场景 C 答案:
- 初始下注 $100
- 第 7 次赢了 $6,400,之前累计亏了 $6,300
- 净盈利只有 $100,但总共投入了 $12,700
- 风险/收益比极差:冒 $12,700 的风险只赚 $100
本课要点回顾
- 理解趋势跟随策略的特点:低胜率、高盈亏比、怕震荡
- 理解均值回归策略的特点:高胜率、低盈亏比、怕趋势突破
- 掌握网格交易和配对交易的基本原理
- 认识马丁格尔策略的致命风险
- 理解多策略组合的价值和方法
延伸阅读
- 背景知识:高频交易与市场微结构 - 更复杂的策略类型
- 背景知识:加密货币交易特点 - 7×24 市场的策略调整
下一课预告
第 06 课:数据工程的残酷现实
策略再好,数据有问题就是白搭。API 限流、数据缺失、时间对齐、幸存者偏差……这些问题杀死的策略比模型问题多得多。下一课直面数据的残酷现实。