量化策略绩效评估体系:收益、风险与决策能力指标(Python 实战)
阶段三:量化内核 · 配套代码
code/stage3/metrics.py
本文所有数值均由脚本在固定随机种子下真实运行得出,图表由matplotlib(Agg)离线生成。
一、量化投资全流程概览
一个完整的量化策略从想法到上线,通常经历以下闭环:
数据接入 → 因子/信号处理 → 组合构建 → 回测验证 → 绩效评估 → 风控迭代 → 实盘其中绩效评估(Performance Evaluation)是回测与实盘之间的"质检关":它用一套可量化的指标,回答三个核心问题——
- 赚了多少?(收益类指标)
- 为赚这些承担了多大风险?(风险类指标)
- 靠运气还是靠能力?(风险调整后收益 / 决策能力指标)
四大策略类型
| 策略类型 | 核心逻辑 | 典型指标/工具 |
|---|---|---|
| 基本面策略 | 低估值、高盈利、稳定成长 | PE/PB/ROE(见fundamental.md) |
| 技术面策略 | 价格形态、趋势与动量 | SMA/EMA/RSI/KDJ(见indicators.md) |
| 统计套利 | 价差均值回归、配对交易 | 协整、z-score、相关性 |
| AI 策略 | 用模型学习非线性规律 | 机器学习/深度学习预测收益 |
无论哪一类策略,最终都要用同一套绩效指标来横向比较优劣。本文聚焦这套通用评估体系。
二、指标定义与 Python 实现
我们用合成数据构造一条"策略日收益"序列和一条"基准日收益"序列(宽基指数近似),全部基于几何布朗运动(GBM)叠加正态噪声,并用固定种子SEED=123保证可复现。
数据生成方式(无网络依赖):
rng=np.random.default_rng(SEED)ret=mu/252+sigma/np.sqrt(252)*rng.standard_normal(N)策略参数:年化漂移 16%、年化波动 16%,并注入 2 次 -4.5% 的黑天鹅冲击;
基准参数:年化漂移 10%、年化波动 14%。样本长度N=756(约三年交易日)。
2.1 收益类指标
defcumulative_return(r):# 累计收益 = Π(1+r) - 1returnfloat((1.0+r).prod()-1.0)defannualized_return(r,p=252):# 年化收益(几何)returnfloat((1.0+r).prod()**(p/len(r))-1.0)defexcess_return(s,b):# 超额累计收益returncumulative_return(s)-cumulative_return(b)2.2 风险类指标
defannualized_vol(r,p=252):# 年化波动率 = 日波动 × √252returnfloat(r.std(ddof=1)*np.sqrt(p))defmax_drawdown(r):# 最大回撤eq=(1.0+r).cumprod()dd=eq/eq.cummax()-1.0returnfloat(dd.min())2.3 风险调整后收益(决策能力指标)
defsharpe_ratio(r,rf=0.02,p=252):rf_d=rf/p ex=r-rf_dreturnfloat(ex.mean()/ex.std(ddof=1)*np.sqrt(p))defsortino_ratio(r,rf=0.02,p=252):rf_d=rf/p ex=r-rf_d down=ex[ex<0]dvol=down.std(ddof=1)*np.sqrt(p)returnfloat(ex.mean()*p/dvol)defcalmar_ratio(r,p=252):mdd=max_drawdown(r)returnfloat(annualized_return(r,p)/abs(mdd))关于无风险利率:本文取年化2%,用于 Sharpe / Sortino 的超额收益计算。
三、真实运行结果
运行python code/stage3/metrics.py,得到如下核心图表与指标表。
3.1 净值曲线(Equity Curve)
3.2 回撤曲线(Drawdown Curve)
3.3 完整指标表(脚本真实打印)
| 指标 | 策略 Strategy | 基准 Benchmark |
|---|---|---|
| 累计收益 Cumulative Return | 0.6649 | 0.4163 |
| 年化收益 Annualized Return | 0.1852 | 0.1230 |
| 年化波动率 Annualized Volatility | 0.1670 | 0.1428 |
| 最大回撤 Max Drawdown | -0.1408 | -0.1663 |
| Sharpe 比率 | 0.9814 | 0.7442 |
| Sortino 比率 | 1.4793 | 1.1917 |
| Calmar 比率 | 1.3152 | 0.7399 |
超额累计收益 Excess Cumulative Return = 0.2486(策略三年累计跑赢基准约 24.86 个百分点)。
样本天数N=756,随机种子SEED=123。
四、每个指标的含义与用法解读
收益类
- 累计收益:回测期内总盈亏,最直观但不含时间维度。本策略三年累计+66.49%,基准+41.63%。
- 年化收益:把不同周期收益折算到"每年",方便跨策略比较。策略约18.52%/年,基准约12.30%/年。
- 超额收益:相对基准的增量,是证明"策略有 alpha"的关键证据。
风险类
- 年化波动率:收益标准差的年化,衡量"颠簸程度"。策略16.70%略高于基准14.28%,说明策略更激进。
- 最大回撤(MDD):从历史最高点到最低点的最大亏损。策略-14.08%,基准-16.63%——策略在更赚钱的同时回撤更小,这是优质策略的特征。
决策能力(风险调整后)类
- Sharpe 比率=(年化收益−无风险)/ 年化波动。衡量"每承担一单位总风险换来的超额回报"。策略0.98> 基准0.74,说明风险使用效率更高。经验阈值:>1 合格,>2 优秀,>3 卓越。
- Sortino 比率:与 Sharpe 类似,但只对下行波动(亏损)计罚,上行波动不计。因此对"赚得多、偶尔大涨"的策略更友好。策略1.48明显高于基准1.19,说明其下行风险被控制得更好。
- Calmar 比率= 年化收益 / |最大回撤|。直接把"收益"和"最痛的亏损"挂钩,是实盘使用者最关心的比率之一。策略1.32远高于基准0.74,意味着同样承受回撤,策略产出收益的能力约为基准的 1.8 倍。
一句话总结:本策略在收益、回撤、风险调整后收益三个维度全面跑赢基准,且 Sharpe≈0.98、Calmar≈1.32 已接近"优秀"区间,是一套经得起指标检验的策略原型。
五、小结与延伸
- 绩效评估不是"算完数字就结束",而是多指标交叉验证:单看累计收益会被高波动误导,必须配合 MDD、Sharpe、Sortino、Calmar 一起看。
- 指标对参数敏感:
TRADING_DAYS、RISK_FREE_ANNUAL、回测长度都会改变数值,比较策略时务必统一口径。 - 下一步:把这些指标封装成
evaluate(strategy_returns, benchmark_returns)函数,接入你的回测框架,作为策略准入的"硬门槛"。
下一篇:《技术指标全实现》(indicators.md)将带你用纯 Python 复现 SMA/EMA/RSI/KDJ/ATR/BOLL/OBV,并把它们画成真实图表。