📑 查看全课大纲(第 32 / 38 节)
- 1.课程介绍与学习目标
- 2.量化交易的发展
- 3.主观投资与量化投资的关系
- 4.认识一个量化策略(1)
- 5.认识一个量化策略(2)
- 6.理工生做量化的优势
- 7.量化交易系统的基本架构
- 8.必要的交易基础知识及参考资料
- 9.上节课思考题及本节课内容介绍
- 10.技术指标简介
- 11.基于MACD的交易信号开发(1)
- 12.基于MACD的交易信号开发(2)
- 13.基于RSI的交易信号开发
- 14.基于BOLL的交易信号开发
- 15.基于分形的交易信号开发
- 16.总结及下节课预告
- 17.开发环境安装
- 18.获取指数和个股历史行情数据
- 19.修复行情数据中的问题
- 20.抓取财报数据、数据定时更新
- 21.实现低PE股票池(1)
- 22.实现低PE股票池(2)
- 23.实现低PE策略的回测(1)
- 24.实现低PE策略的回测(2)
- 25.风险控制综述
- 26.风险控制中的止盈止损
- 27.仓位管理的工程实现
- 28.完整策略介绍-基础策略
- 29.策略的分步优化
- 30.策略评价指标(1)
- 31.策略评价指标(2)
- 32.如何评价策略
- 33.如何优化策略
- 34.tick数据的意义
- 35.tick数据的介绍及使用
- 36.Hans123策略
- 37.经典买入三法策略
- 38.量化系统的完整研发和系统搭建
如何评价策略
约 29 分钟
从哪些方面去改进策略:多因子融合与全链路精细化
小象实战讲义 · 初阶量化交易:策略编写及系统搭建 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
当一个量化策略通过初步回测与健康体检后,量化工程师通常会发现其存在某些局部短板(例如震荡市回撤略大、多头行情抓取不全或特定周期换手率偏高)。此时,策略迭代绝不是盲目调整几个数字参数,而是需要沿着底层交易逻辑的因果关系链条,从标的池因子质量、入场特征工程、出场风控精细化到多策略低相关性对冲展开全链路系统性改进。
本讲系统介绍量化策略全流程优化的标准框架;深入探讨多因子非同质化融合(价值/成长/动量/低波)与因子正交化去共线性;剖析基于 ATR 真实波幅的动态出场止损优化;并阐明多策略组合降低组合波动率的工程实践。
💡 核心导读
- 策略优化的核心前提:逻辑驱动而非数据挖掘:
- 一切优化的起点必须源于清晰的经济学逻辑或市场微观结构逻辑(例如:为什么小市值具有壳价值溢价?为什么低估值具有均值回归动力?);
- 严禁无逻辑地对上百个技术指标做穷举拼凑,避免落入伪相关性的陷阱。
- 策略四大核心维度的改进抓手:
- 标的池层(Universe Optimization):
- 从单一单因子(如仅看 PE)升级为多因子融合模型(价值因子 PE/PB + 质量因子 ROE + 动量因子 Momentum + 波动率因子 ATR);
- 因子正交化(Factor Orthogonalization):消除因子间的共线性重叠,提取纯净的增量 Alpha;
- 择时与特征层(Timing & Features):
- 引入量价过滤(如成交量放大确认突破、威科夫努力与结果背离过滤);
- 将固定时间窗口(如 MA10)升级为基于市场波动率的自适应均线(如 Kaufman 自适应均线 AMA);
- 出场与风控层(Exit & Sizing):
- 将固定比例止损升级为 动态波动率跟踪止损(棘轮式:止损线只上移、不下移),在暴风雨来临时自动放宽容忍度,在平静期自动收紧保护线,浮盈扩大时逐级上移锁定利润;
- 资产配置层(Portfolio Diversification):
- 将单一趋势策略拓展为低相关性多策略组合(趋势跟踪策略 + 均值回归套利策略 + 基本面多因子策略),利用策略间的负相关性抹平组合回撤。
- 标的池层(Universe Optimization):
┌─────────────────────────────────────────────────────────────┐
│ 量化策略全链路精细化改进路径 │
└──────────────────────────────┬──────────────────────────────┘
│
┌───────────────┬─────────────┴─────────────┬───────────────┐
▼ ▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 1. 股票池 │ │ 2. 择时特征 │ │ 3. 出场风控 │ │ 4. 多策略 │
├─────────────┤ ├─────────────┤ ├─────────────┤ ├─────────────┤
│ • 多因子融合│ │ • 量价配合 │ │ • 3×ATR动态 │ │ • 趋势+套利 │
│ • 因子正交化│ │ • 波动自适应│ │ • 阶梯式止盈│ │ • 低相关对冲│
│ • 剔除伪因子│ │ • 威科夫过滤│ │ • CPR风险仓 │ │ • 抹平回撤 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘一、真实波幅(ATR)在动态风控中的应用
传统固定 5% 止损无法适应不同股票的波动个性(银行股日均波动 1%,而科技股日均波动 5%)。通过引入真实波幅 :
注意 ATR 的经典定义采用 Wilder 平滑(),而非普通 EMA 的 ——pandas 中应对应 ewm(alpha=1/N, adjust=False);若写成 ewm(span=N),平滑系数近乎翻倍,ATR 响应速度约为经典定义的两倍,与主流行情软件(通达信/TradingView 均为 Wilder 口径)的数值不可比。将初始止损距离设定为 ,动态实现”大波动给大空间、小波动给小空间”的自适应风控;多头跟踪止损线再叠加棘轮机制 t = \max(\text{Stop}{t-1},\ Close_t - 3 \times ATR_t)——只上移、不下移,随浮盈扩大逐级锁定利润。
二、多策略低相关性对冲的数学奇迹
若组合中包含策略 A(夏普 1.0)与策略 B(夏普 1.0),且两者收益率相关系数 :
- 组合后的整体夏普比率可直接跃升至 以上;
- 这正是对冲基金(Hedge Fund)通过跨品种、跨周期、跨逻辑组合实现净值平滑向上的核心奥秘。
📝 动手练一练
下面我们用 Python 编写一段 真实波幅(ATR)动态计算与自适应止损带构建引擎,演示如何根据标的实时波动率动态调整止损幅度:
import pandas as pd
import numpy as np
def compute_atr_and_dynamic_stop(df, window=14, multiplier=3.0):
"""
真实波幅 (ATR, Wilder 平滑) 与 3×ATR 自适应跟踪止损带引擎
"""
df = df.copy()
# 1. 计算单日真实波幅 True Range (TR)
hl = df['high'] - df['low']
hc = np.abs(df['high'] - df['close'].shift(1))
lc = np.abs(df['low'] - df['close'].shift(1))
df['TR'] = np.maximum(hl, np.maximum(hc, lc)).fillna(hl)
# 2. 计算 N 日 Wilder 平滑 ATR (alpha=1/N; 注意 span=N 对应 alpha=2/(N+1), 并非 Wilder 口径)
df['ATR'] = df['TR'].ewm(alpha=1/window, adjust=False).mean()
# 3. 动态计算 3 倍 ATR 止损距离与多头跟踪止损线
# 棘轮机制: 止损线 = max(此前全部历史止损线, 今日 close - 3×ATR), 只上移不下移, 逐级锁定浮盈
df['Stop_Distance'] = df['ATR'] * multiplier
raw_stop = df['close'] - df['Stop_Distance']
df['Dynamic_Stop_Line'] = np.maximum.accumulate(raw_stop.to_numpy())
return df
def test_atr_run():
np.random.seed(42)
dates = pd.date_range("2023-01-01", periods=10, freq="B")
# 模拟标的走势: 前 5 日冲高, 后 5 日回落 —— 检验棘轮止损线在下跌段是否守住高位
highs = [10.5, 10.8, 11.2, 11.8, 12.0, 11.6, 11.4, 11.0, 10.8, 10.5]
lows = [9.8, 10.0, 10.4, 10.9, 11.2, 11.0, 10.7, 10.2, 10.1, 9.9]
closes= [10.2, 10.6, 11.0, 11.5, 11.8, 11.2, 10.9, 10.4, 10.3, 10.1]
raw_df = pd.DataFrame({'high': highs, 'low': lows, 'close': closes}, index=dates)
res = compute_atr_and_dynamic_stop(raw_df, window=5, multiplier=3.0)
print("================ ATR (Wilder) 动态跟踪止损带测算 ================")
print(res[['high', 'low', 'close', 'TR', 'ATR', 'Dynamic_Stop_Line']])
print("--------------------------------------------------------")
print("量化精要: 价格自 11.8 回落至 10.1, 但棘轮止损线锁定在峰值 9.47488 不再下移, 浮盈保护生效!")
print("========================================================")
if __name__ == "__main__":
test_atr_run()运行结果输出:
================ ATR (Wilder) 动态跟踪止损带测算 ================
high low close TR ATR Dynamic_Stop_Line
2023-01-02 10.5 9.8 10.2 0.7 0.700000 8.10000
2023-01-03 10.8 10.0 10.6 0.8 0.720000 8.44000
2023-01-04 11.2 10.4 11.0 0.8 0.736000 8.79200
2023-01-05 11.8 10.9 11.5 0.9 0.768800 9.19360
2023-01-06 12.0 11.2 11.8 0.8 0.775040 9.47488
2023-01-09 11.6 11.0 11.2 0.8 0.780032 9.47488
2023-01-10 11.4 10.7 10.9 0.7 0.764026 9.47488
2023-01-11 11.0 10.2 10.4 0.8 0.771220 9.47488
2023-01-12 10.8 10.1 10.3 0.7 0.756976 9.47488
2023-01-13 10.5 9.9 10.1 0.6 0.725581 9.47488
--------------------------------------------------------
量化精要: 价格自 11.8 回落至 10.1, 但棘轮止损线锁定在峰值 9.47488 不再下移, 浮盈保护生效!
========================================================本章小结
- 坚持逻辑驱动优化:拒绝无脑数据挖掘,从选股、择时、风控与多策略协同四大维度推进策略迭代。
- 掌握 ATR(Wilder)动态跟踪止损:以 的 Wilder 平滑计算真实波幅,消除固定比例止损的僵化弊端;棘轮机制令止损线只上移、不下移,实现顺应市场波动、逐级锁定浮盈的智能保护。
- 利用多策略负相关性:通过不同逻辑策略的低相关性组合,打造平滑稳健向上的资产净值曲线。
📋 行动清单 (Action Checklist)
- 运行本讲 ATR 动态止损代码,观察止损带随价格波动的动态收放过程;
- 思考自己当前策略是否存在单因子共线性过高问题;
- 预习下一讲,学习量化研发的头号杀手——策略过拟合(Overfitting)的深度诊断与防范。
— 小象教研组
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问