📑 查看全课大纲(第 14 / 59 节)
- 1.量化投资必备基础知识
- 2.趋势型策略及模型原理
- 3.均值回复型策略及模型原理
- 4.配对交易策略及模型原理
- 5.量化策略研发流程与基本技能
- 6.常用的量化平台概述及如何选择
- 7.如何量化一个主观策略思路
- 8.常用技术指标及指标计算过程
- 9.如何编写指标代码
- 10.指标的物理意义
- 11.技术指标的应用技巧
- 12.更多的交易决策
- 13.编写程序去量化一个趋势型技术指标
- 14.编写趋势型技术指标的性能评价
- 15.策略对交易成本和持仓周期的影响
- 16.股票池策略的原理及基本框架
- 17.基于多因子分析的股票池设计与实现
- 18.股票池的性能评估
- 19.使用定制化财务因子构建股票池
- 20.趋势型策略原理及股票池机制的设计
- 21.趋势型择时信号的设计方法与编程实现
- 22.趋势型策略的回测与性能评估
- 23.优化趋势型策略的思路及方法
- 24.量化体系中的风险控制思想
- 25.风险的度量-波动率
- 26.常用的风险控制方法
- 27.实现止盈止损模块以提高策略性能
- 28.策略性能的评估与优化
- 29.探讨波动率与风险的关系
- 30.量化策略中的经典资金管理模型
- 31.用python编程实现资金管理模块
- 32.构建一个完善的量化交易策略
- 33.趋势型量化策略必备的期货知识
- 34.期货量化工具介绍
- 35.商品期货趋势型策略原理
- 36.用TB编写商品期货趋势型策略(上)
- 37.用TB编写商品期货趋势型策略(下)
- 38.分析优化商品期货趋势型策略的方法思路
- 39.期货交易策略的注意事项
- 40.均值回复型策略的原理
- 41.A股市场有没有稳定的均值回复效应?
- 42.编写一个均值回复型股票量化策略
- 43.编写多空组合策略进行策略改进
- 44.在策略中实现头寸管理进行策略优化
- 45.套利策略原理及常见套利类型
- 46.用MC开发一个跨品种套利交易策略(上)
- 47.用MC开发一个跨品种套利交易策略(下)
- 48.统计套利之股票配对交易策略
- 49.实盘中的细节问题:加减仓
- 50.关于高频交易
- 51.如何评价实盘量化策略的性能
- 52.量化系统的工作过程及研发流程
- 53.运气or实力
- 54.量化实盘交易需要满足什么条件
- 55.未来函数的坑
- 56.实盘数据接口异常的自动报警
- 57.交易系统的压力测试
- 58.自动运行的交易策略,什么时候需要人工干预
- 59.预案准备和实盘心理建设
编写趋势型技术指标的性能评价
约 8 分钟
编写趋势型技术指标的性能评价
小象实战讲义 · 进阶量化交易实战:迭代式的量化策略研发 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
一个编写完成的趋势指标究竟是有效 Alpha 还是过拟合噪点?建立一套标准化的指标性能量化评价体系至关重要。本节深入剖析信息系数(IC)、信噪比(SNR)、盈亏比及胜率分布等核心评估维度的数学定义与代码实现。
💡 核心导读
- 趋势型技术指标四大核心量化评价维度:
- 信息系数(IC / Rank IC):指标信号值与未来 期实际收益率的截面/时序相关系数;
- 胜率与盈亏比(Win Rate & Profit-Loss Ratio):趋势策略通常呈现“低胜率(30%~45%)+ 高盈亏比(>2.5)”的右偏肥尾特征;
- 最大回撤与卡玛比率(Max Drawdown & Calmar Ratio):衡量承受极端不利行情时的资本保护能力;
- 交易成本敏感性(Slippage & Commission Decay):评估指标在扣除滑点和佣金冲击后的真实抗衰减能力。
┌─────────────────────────────────────────────────────────────┐
│ 技术指标性能量化评价矩阵体系 │
└──────────────────────────────┬──────────────────────────────┘
│
┌─────────────────────────────┼─────────────────────────────┐
▼ ▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐ ┌─────────────────────────┐
│ 预测能力 (Predictive) │ │ 收益风险比 (Risk-Reward)│ │ 实战稳健度 (Robustness) │
├─────────────────────────┤ ├─────────────────────────┤ ├─────────────────────────┤
│ • IC / Rank IC > 0.03 │ │ • 夏普比率 (Sharpe > 1) │ │ • 滑点冲击衰减率 < 20% │
│ • IC_IR (IC稳定性) > 0.5│ │ • 盈亏比 (PLR > 2.5) │ │ • 样本外参数敏感度分析 │
└─────────────────────────┘ └─────────────────────────┘ └─────────────────────────┘一、信息系数(IC)与时序预测能力测算
信息系数(Information Coefficient)用于度量指标对未来价格变动的线性预测能力。对于时序单资产指标,时序 IC 定义为指标当前值与未来 日收益率的皮尔逊相关系数:
t, \text{Return}{t+N})
IR=σ(IC)E[IC]
若 且 IR>0.5,表明该指标具备统计显著的预测能力。
import pandas as pd
import numpy as np
def evaluate_indicator_ic(df: pd.DataFrame, indicator_col: str, forward_period: int = 5) -> dict:
"""
计算指标与未来 N 期收益率的时序 IC 与 IC-IR
"""
res = df.copy()
res['Forward_Return'] = res['close'].shift(-forward_period) / res['close'] - 1.0
# 去除 NaN
valid_data = res[[indicator_col, 'Forward_Return']].dropna()
ic = valid_data[indicator_col].corr(valid_data['Forward_Return'])
# 滚动 IC 稳定性
rolling_ic = valid_data[indicator_col].rolling(60).corr(valid_data['Forward_Return']).dropna()
ic_ir = rolling_ic.mean() / (rolling_ic.std() + 1e-8)
return {
'IC': float(ic),
'IC_Mean': float(rolling_ic.mean()),
'IC_Std': float(rolling_ic.std()),
'IC_IR': float(ic_ir)
}二、盈亏比与胜率的数学权衡及期望收益公式
趋势型指标并不追求高胜率,而是依靠截断亏损、让利润奔跑的非对称收益结构。交易系统的单笔期望收益公式为:
其中 为胜率, 为平均盈利, 为平均亏损。即使胜率只有 35%,当盈亏比达到 3:1 时,单笔期望收益仍高达 。
def compute_trade_performance_metrics(trades_df: pd.DataFrame) -> dict:
"""
计算胜率、盈亏比与期望收益
"""
win_trades = trades_df[trades_df['pnl'] > 0]
loss_trades = trades_df[trades_df['pnl'] <= 0]
win_rate = len(win_trades) / (len(trades_df) + 1e-8)
avg_win = win_trades['pnl'].mean() if len(win_trades) > 0 else 0.0
avg_loss = abs(loss_trades['pnl'].mean()) if len(loss_trades) > 0 else 1.0
plr = avg_win / (avg_loss + 1e-8)
expectancy = win_rate * avg_win - (1.0 - win_rate) * avg_loss
return {
'Win_Rate': float(win_rate),
'Avg_Win': float(avg_win),
'Avg_Loss': float(avg_loss),
'PLR': float(plr),
'Expectancy': float(expectancy)
}📝 动手练一练
编写 Python 脚本对双均线趋势突破指标进行全方位性能回测与统计度量评估:
import pandas as pd
import numpy as np
def run_performance_evaluation():
np.random.seed(42)
# 模拟 300 根具备趋势漂移的价格序列
returns = np.random.normal(0.0008, 0.015, 300)
prices = 100.0 * np.cumprod(1.0 + returns)
df = pd.DataFrame({'close': prices})
# 构造趋势动量指标
df['Momentum_20'] = df['close'] / df['close'].shift(20) - 1.0
# 评估指标 IC
ic_res = evaluate_indicator_ic(df, 'Momentum_20', forward_period=5)
print("================ 趋势型技术指标性能评估 ================")
print(f"时序 IC 预测系数 : {ic_res['IC']:.4f}")
print(f"滚动 IC 均值 : {ic_res['IC_Mean']:.4f}")
print(f"IC 稳定性 (IC-IR) : {ic_res['IC_IR']:.4f}")
assert not np.isnan(ic_res['IC']), "IC 计算结果异常!"
print("✅ 趋势指标性能量化评估测试 PASS")
print("======================================================")
if __name__ == '__main__':
run_performance_evaluation()运行结果输出:
================ 趋势型技术指标性能评估 ================
时序 IC 预测系数 : -0.0829
滚动 IC 均值 : -0.2602
IC 稳定性 (IC-IR) : -1.6118
✅ 趋势指标性能量化评估测试 PASS
======================================================⚠️ 失败案例解读(反面教材):真实测算结果与直觉相反——该 20 日动量”趋势”指标的时序 IC 为 -0.0829(负相关),滚动 IC 均值 -0.2602,IC-IR 低至 -1.6118。按上文”IC_IR > 0.5”的合格线判定,该指标不合格,不能按正向趋势信号使用。但注意 |IC-IR| = 1.61 远超 0.5,说明这种负相关并非随机噪声,而是高度稳定的反向关系:在本样本中,过去 20 日涨得越多,未来 5 日反而越倾向于回落(均值回归特征压倒趋势延续特征)。实战上有两种正确处置:① 将其反转为反向因子使用(高动量减仓、低动量加仓);② 直接拒绝该因子。最危险的做法是凭”动量=趋势延续”的教科书印象闭眼正向使用——那等于把一个稳定反指当成 Alpha 信号,稳定地亏钱。性能评价体系的价值,正在于如实暴露因子的真实符号与稳定性,而非迎合预设结论。
本章小结
- 全面审视 IC 与 IC-IR:通过相关系数及其信息比率评估指标对未来收益的真实预测边际。
- 拥抱非对称盈亏比:正确认识趋势型指标低胜率、高盈亏比的统计特征,避免陷入盲目追求高胜率的误区。
- 坚持全周期稳健性验证:指标必须在不同市场行情(牛市、熊市、震荡市)下均具备正向期望收益。
📋 行动清单 (Action Checklist)
- 运行性能评估测试代码,计算并输出不同预测周期(1日、5日、20日)下的 IC 衰减曲线;
- 对比加入交易手续费后,策略期望收益的变化情况;
- 预习下一节,分析交易摩擦成本与持仓周期对策略盈亏的决定性影响。
— 小象教研组
- 第2章课件:从技术的角度重新认识技术指标(PDF · 1.8MB)下载
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问