量化模型与投资组合评估指标

量化交易依赖回测迭代投资策略,优化样本外组合绩效。本文用公式结合代码,介绍了几种精选的投资组合收益-风险的度量指标,同时讨论收益预测模型、风险预测模型评估方法。

投资组合绩效

夏普比及其变体

在杠杆率可调的假设下,投资组合的收益率/波动率并无太大意义,同时评估风险/收益的夏普比率才是评价策略好坏的最经典指标。

$$ SR=\frac{E\left[R-R_{b}\right]}{\sqrt{\operatorname{var}\left[R-R_{b}\right]}}, $$

其中 \(R\)为资产收益,\(R_b\)代表无风险回报。为了比较不同交易频率的策略性能,一般需要计算夏普比的年化形式。在每日超额收益\(r_t\) 独立同分布且 \(r_t \sim \mathcal{N}(\mu, \sigma^2)\) 的假设下,年化夏普比的计算公式为

$$SR^a = \frac{\mu}{\sigma}\sqrt{q},$$

其中 \(q\) 为每年观察周期数,例如每年243个交易日。

由于多头策略与市场整体表现有着高度相关性,用市场表现 \(R_m\) 替换无风险利率可以更好地评估策略获取超额收益的能力,称为信息比率

$$ IR=\frac{E\left[R-R_{m}\right]}{\sqrt{\operatorname{var}\left[R-R_{m}\right]}}, $$

进一步地,波动率可以划分为上行波动与下行波动,投资者真正关注的是下行波动,如果只考虑下行波动,就有了Sortino比率,

$$ Sortino=\frac{E\left[R-R_{b}\right]}{\sqrt{\operatorname{var}\left[R_d-R_{b}\right]}} $$

其中 \(R_d<0\)。

以上指标是建立在每期收益率独立的假设下的,如果考虑收益率有自相关性,年化波动率会比独立假设下更高,此时

$$ SR'=\frac{E\left[R-R_{b}\right]}{\gamma \sqrt{\operatorname{var}\left[R-R_{b}\right]}} $$

也可以不计算自相关性,把历史回撤序列作为风险带入,计算ulcer_performance_index

1
2
3
4
5
6
7
8
9
10
11
12
def ulcer_index(returns):
"""Calculates the ulcer index score (downside risk measurment)"""
dd = to_drawdown_series(returns)
return _np.sqrt(_np.divide((dd**2).sum(), returns.shape[0] - 1))


def ulcer_performance_index(returns, rf=0):
"""
Calculates the ulcer index score
(downside risk measurment)
"""
return (comp(returns) - rf) / ulcer_index(returns)

除此之外,概率夏普比PSR以概率形式衡量策略有效程度,详见往期文章 概率夏普比PSR

其他风险收益指标

Gain to Pain Ratio 简单明了,用总收益/总下跌幅度,一般认为月度GPR>2.0是一个优秀策略。

Calmar比率 卡玛比率用年化收益率比上最大回撤得到。但如果回测期较长,使用该指标会注重优化其中某一段区间。

CPC指数 从交易角度综合了盈亏比、胜率和盈利因子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def profit_factor(returns, prepare_returns=True):
"""Measures the profit ratio (wins/loss)"""
if prepare_returns:
returns = _utils._prepare_returns(returns)
return abs(returns[returns >= 0].sum() / returns[returns < 0].sum())


def cpc_index(returns, prepare_returns=True):
"""
Measures the cpc ratio
(profit factor * win % * win loss ratio)
"""
if prepare_returns:
returns = _utils._prepare_returns(returns)
return profit_factor(returns) * win_rate(returns) * win_loss_ratio(returns)

模型评估

量化模型评估指标可以分类如下

  • 基于误差的指标:评估算法在测量实际回报 \(y_t\) 与算法预测值 \(\hat y_t\) 之间预测误差时的性能。这些指标包括均方误差(MSE)、平均绝对误差(MAE)及其变体。Botchkarev(2018)提出了对机器学习回归中基于误差的指标属性的分类和分析。

  • 基于准确率的指标:衡量算法分配给预测回报的类别的准确性,与事后计算的实际回报类别相比。这种分类可以是二元的,有两个类别(正预期回报 vs 负预期回报,或投资 vs 无投资),也可以更复杂。Hossin & Sulaiman(2015)提出了一篇关于数据分类评估指标的综述。这些指标基于混淆矩阵、相关系数等,包括 R、R2、准确率、F1、精确度或召回率、马修斯相关系数(MCC)等。

  • 基于投资组合的指标:衡量由算法提出的买入-持有-卖出信号形成的投资策略的结果。这些指标可以细分为:

    • 基于结果的指标:测量年化收益率或承担的风险(波动率、最大回撤等),但不对彼此进行调整。
    • 基于风险调整回报的指标:以下简称为风险/回报基准指标,同时考虑投资策略的回报和风险,并衡量算法在风险约束下生成回报的效率以及优化风险/回报配置的能力。这类指标主要通过评估风险的方式而有所不同。该类指标包括夏普比率、Sortino比率或卡玛比率等。

具体而言,风险模型的评估比较简单,由于真实协方差矩阵是不可知的,因此主要使用风险模型构建纯多头/多空的最小化方差组合,考察其波动率。对于因子风险模型,可以计算每个截面上股票收益率对风险因子的拟合优度 \(R^2\)。此外,在风险绝对值预估方面,可以计算 偏误统计量 \(B\)

收益率模型的输出形式比风险模型更加简单,每个标的每一期对应一个预测值,与因子值形式一致,但对收益率模型的评估则要困难得多。在组合构建阶段,仅有头部资产对收益率影响较大,因此 \(R^2\)、\(MSE\) 等传统的基于整体误差的模型指标与最终组合表现没有必然联系,只能构建头部组合进行间接评估。在实践中,甚至要考虑收益率模型与风险模型的交互作用。

量化模型与投资组合评估指标

https://heth.ink/QuantStat/

作者

YK

发布于

2024-04-12

更新于

2024-04-12

许可协议