← 返回《进阶量化交易实战:迭代式的量化策略研发》
📑 查看全课大纲(第 14 / 59 节)
  1. 1.量化投资必备基础知识
  2. 2.趋势型策略及模型原理
  3. 3.均值回复型策略及模型原理
  4. 4.配对交易策略及模型原理
  5. 5.量化策略研发流程与基本技能
  6. 6.常用的量化平台概述及如何选择
  7. 7.如何量化一个主观策略思路
  8. 8.常用技术指标及指标计算过程
  9. 9.如何编写指标代码
  10. 10.指标的物理意义
  11. 11.技术指标的应用技巧
  12. 12.更多的交易决策
  13. 13.编写程序去量化一个趋势型技术指标
  14. 14.编写趋势型技术指标的性能评价
  15. 15.策略对交易成本和持仓周期的影响
  16. 16.股票池策略的原理及基本框架
  17. 17.基于多因子分析的股票池设计与实现
  18. 18.股票池的性能评估
  19. 19.使用定制化财务因子构建股票池
  20. 20.趋势型策略原理及股票池机制的设计
  21. 21.趋势型择时信号的设计方法与编程实现
  22. 22.趋势型策略的回测与性能评估
  23. 23.优化趋势型策略的思路及方法
  24. 24.量化体系中的风险控制思想
  25. 25.风险的度量-波动率
  26. 26.常用的风险控制方法
  27. 27.实现止盈止损模块以提高策略性能
  28. 28.策略性能的评估与优化
  29. 29.探讨波动率与风险的关系
  30. 30.量化策略中的经典资金管理模型
  31. 31.用python编程实现资金管理模块
  32. 32.构建一个完善的量化交易策略
  33. 33.趋势型量化策略必备的期货知识
  34. 34.期货量化工具介绍
  35. 35.商品期货趋势型策略原理
  36. 36.用TB编写商品期货趋势型策略(上)
  37. 37.用TB编写商品期货趋势型策略(下)
  38. 38.分析优化商品期货趋势型策略的方法思路
  39. 39.期货交易策略的注意事项
  40. 40.均值回复型策略的原理
  41. 41.A股市场有没有稳定的均值回复效应?
  42. 42.编写一个均值回复型股票量化策略
  43. 43.编写多空组合策略进行策略改进
  44. 44.在策略中实现头寸管理进行策略优化
  45. 45.套利策略原理及常见套利类型
  46. 46.用MC开发一个跨品种套利交易策略(上)
  47. 47.用MC开发一个跨品种套利交易策略(下)
  48. 48.统计套利之股票配对交易策略
  49. 49.实盘中的细节问题:加减仓
  50. 50.关于高频交易
  51. 51.如何评价实盘量化策略的性能
  52. 52.量化系统的工作过程及研发流程
  53. 53.运气or实力
  54. 54.量化实盘交易需要满足什么条件
  55. 55.未来函数的坑
  56. 56.实盘数据接口异常的自动报警
  57. 57.交易系统的压力测试
  58. 58.自动运行的交易策略,什么时候需要人工干预
  59. 59.预案准备和实盘心理建设

编写趋势型技术指标的性能评价

约 8 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

编写趋势型技术指标的性能评价

小象实战讲义 · 进阶量化交易实战:迭代式的量化策略研发 本讲义仅用于编程与量化方法教学,不构成任何投资建议。

一个编写完成的趋势指标究竟是有效 Alpha 还是过拟合噪点?建立一套标准化的指标性能量化评价体系至关重要。本节深入剖析信息系数(IC)、信噪比(SNR)、盈亏比及胜率分布等核心评估维度的数学定义与代码实现。

💡 核心导读

  • 趋势型技术指标四大核心量化评价维度
    • 信息系数(IC / Rank IC):指标信号值与未来 NN 期实际收益率的截面/时序相关系数;
    • 胜率与盈亏比(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 定义为指标当前值与未来 NN 日收益率的皮尔逊相关系数:

IC=Corr(Indicatort,Returnt+N)IC = \text{Corr}(\text{Indicator}t, \text{Return}{t+N})

ICIR=E[IC]σ(IC)IC_IR = \frac{\mathbb{E}[IC]}{\sigma(IC)}IR=σ(IC)E[IC]

IC>0.03|IC| > 0.03ICIR>0.5IC_IR > 0.5IR>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)
    }

二、盈亏比与胜率的数学权衡及期望收益公式

趋势型指标并不追求高胜率,而是依靠截断亏损、让利润奔跑的非对称收益结构。交易系统的单笔期望收益公式为:

E[R]=W×Rw(1W)×Rl\mathbb{E}[R] = W \times R_w - (1 - W) \times R_l

其中 WW 为胜率,RwR_w 为平均盈利,RlR_l 为平均亏损。即使胜率只有 35%,当盈亏比达到 3:1 时,单笔期望收益仍高达 0.35×30.65×1=+0.400.35 \times 3 - 0.65 \times 1 = +0.40

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 信号,稳定地亏钱。性能评价体系的价值,正在于如实暴露因子的真实符号与稳定性,而非迎合预设结论。

本章小结

  1. 全面审视 IC 与 IC-IR:通过相关系数及其信息比率评估指标对未来收益的真实预测边际。
  2. 拥抱非对称盈亏比:正确认识趋势型指标低胜率、高盈亏比的统计特征,避免陷入盲目追求高胜率的误区。
  3. 坚持全周期稳健性验证:指标必须在不同市场行情(牛市、熊市、震荡市)下均具备正向期望收益。

📋 行动清单 (Action Checklist)

  • 运行性能评估测试代码,计算并输出不同预测周期(1日、5日、20日)下的 IC 衰减曲线;
  • 对比加入交易手续费后,策略期望收益的变化情况;
  • 预习下一节,分析交易摩擦成本与持仓周期对策略盈亏的决定性影响。

— 小象教研组

配套学习资源与课件
  • 第2章课件:从技术的角度重新认识技术指标(PDF · 1.8MB)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问