Portfolio Optimization with CVaR
我们已经在上一篇文章中介绍了 Markowitz 经典的用 variance 作为风险测度的不足:
- 使用 variance 同时惩罚了下跌和上涨,但是我们实际只需要惩罚下跌的情况
- 对参数( 预期收益
以及 risk matrix ) 非常敏感
因此,JP Morgan 提出了 VaR (Value at Risk),定义为 maximum loss with a specified confidence level,在指定概率
(
这个衡量标准并未考虑当损失大于
理论上,CVaR 是一个更理想的风险衡量标准。
1 Minimize CVaR Approach
我们以最小化 CVaR 为例讲解如何求这个优化问题:
其中:
当然,我们也可以简单将其扩展为其他形式,例如将目标函数改成:
这样可以通过调节参数
1.1 Auxiliary Function
首先我们引入辅助函数:
这是一个 连续可导的凸函数,其中
对
即:
那么显然有在辅助函数取极值时,
这个辅助函数的妙处在于:
- 它是一个连续可导的凸函数,求解方便。
- 在它取得极值时, VaR 和 CVaR 也自然得出:
因此,原本的 minimize CVaR 的问题转化为 minimize 这个辅助函数的问题。
1.2 Optimize The Auxiliary Function
由于这个“期望”的存在,优化该辅助函数是一个随机优化问题。我们可以通过采样获取其期望的估计。值得注意的是,这里的采样是对于历史回报率的采样。
假设我们对回报率
引入辅助变量:
优化问题转化为:
这是一个典型的线性优化问题,可以通过工具包求解。肉眼可以看出,这个优化问题的 约束条件与采样个数成正比。因此,计算量可能是一个不可忽略的隐患,在实际生产中值得注意。
1.3 Application Example
Mosek 是一款专业的商用优化求解器。它提供了一个 CVaR 优化的例子。
该例子中值得注意的部分是:
- 我们首先用历史数据拟合出多个股票的回报率均值和协方差矩阵,再用这个两个值随机生成 T 个样本,而非直接使用历史数据作为样本。
- 在实际交易中,我们一般有一个预测的回报率 r,它并不作为样本的一部分。