Portfolio Optimization
简介
投资组合的优化是量化投资中非常重要的一个环节。假设我们有\(N\)支资产,每个资产收集了\(T\)时间的数据,用 \(X \in \mathrm{R}^{N \times T}\) 表示整个风险收益样本。在量化投资中最核心的两个问题就是:
- 给定历史轨迹的条件下,预测未来时间的收益 \(\mathbb{E}[R_{t+1} |\mathcal{F}_{t}]\)。
- 给定历史轨迹的条件下,预测未来时间的各个资产之间的correlation,例如:\(\Sigma_{t+1} | \mathcal{F}_{t}\)。
如果能够很好得完成第一个任务,则就可以追求到人们梦寐以求的超额收益,于此我们也可以想象第一个问题的难度是如何地高,也超过了本篇Blog所想要讨论的范畴。
我们这边主要会将讨论的内容局限在第二个问题上,假设存在一个上帝已经帮助我们解决了第一个问题,即我们已经拥有了一个相对不错的对未来收益估计的算法,使用记号\(\hat{\mu}_{t+1}\) 代表我们对于 $ [R_{t+1} |_{t}]$ 的估计。那么在投资组合这一步,我们往往关注的是下面这个优化问题, \[ \max_{w} \hat{\mu}_{t+1}^T w, \\ f_i(\hat{\mu}_{t+1}, \hat{\Sigma}_{t+1}, w) \le 0, i = 1,2,\cdots, k \\ g_j(\hat{\mu}_{t+1}, \hat{\Sigma}_{t+1}, w) = 0, j = 1,2,\cdots, l \]
用通俗的语言描述,就是在风险可控并且符合法规(例如只允许做多)的条件下,去最大化预期收益。想要控制的风险和其他相关的约束都是用\(f, g\)两种形式描述。那么为了很好地解决这个问题,很明显我们有两个问题需要解决:
- 准确估计 \(\hat{\Sigma}_{t+1}\), 即上面的第二个任务
- 开发一个高效的优化算法,解决上面这个优化问题。
Correlation估计
在这个部分我们将会介绍一下,关于Correlation估计的一些基本的算法。针对这个问题的建模假设,也是被分成了两部分。第一,假设Correlation是静态的;第二,假设Correlation是动态。第一种情况下面,我们拥有一些比较良好的数学保障,但是和现实背离得稍微远一点。第二种情况,则是和现实更近,但是解决该问题的难度也会高上很多。
静态Correlation估计
对于静态的Correlation的估计,首先我们会想到一个最基本的方法,就是用样本的协方差矩阵估计全体的协方差矩阵。所谓的样本协方差矩阵,可以写成下面的形式: \[ S = \frac{1}{T}(XX^T - \frac{1}{T}X\mathbf{1}\mathbf{1}^TX) = \frac{1}{T}X(\mathbf{I} - \frac{1}{T}\mathbf{1}\mathbf{1}^T)X^T \] 从这个表达式,我们就可以看出来一个较为严重的问题, \(S\)的rank不会高于\(\mathbf{I} - \frac{1}{T}\mathbf{1}\mathbf{1}^T\), 即不会高于\(T\)。那么当你所采集到的数据时间窗口\(T\)和\(N\)在同一个量级,甚至更低的时候,该估计矩阵很有可能是singluar的,这会极大的影响到后续优化问题的求解。该问题在现实投资中还是比较明显的,尤其是当你的投资频率较低时,该问题会越发显著。那么主流的解决上面这个问题的方法也分成两大主流的流派,当然这两个流派也不完全独立,也是可以混合使用。
- Shrinkage方法
- Multi-factor估计方法
Shrinkage
Shrinkage的想法非常的简单,就是既然\(S\)本身作为\(\Sigma\)的估计在上述 \(N,T\) 比较接近的时候有一些问题,那么我们可以再额外另外一个估计 \(F\), 使用这两个估计的组合,例如\((1-\delta)S + \delta F\), 作为\(\Sigma\)的估计呢,这边 \(\delta\) 是一个描述shrinkage程度的参数。在具体讨论这个\(F\)之前,我们可以思考一下引入这个\(F\), 我们需要解决什么,即期望\(F\)能够拥有哪些性质。下面是我自己个人的一些想法:
首先,\(S\)矩阵对于\(\Sigma\)的估计无偏的,但是如果样本量不够的情况下面,其会具有很高的 variance,即统计学习里,常说的 bias-variance trade off。那么很显然,我们是希望引入的\(F\)对于 biasness 的容忍度可以高一点,但是希望其有更低的 variance。除此之外,我们期望\(F\)的引入可以缓解 singularity 的问题。
虽然\(F\)确实构造的自由度很高,你可以选择任何的方法去构造一个合适的估计算子,但是就个人理解来说,上面这段话应当做一个基本的参考准则。我想这也是Ledoit,Wolf 在他们最初的两个工作里选择 \(F\)的原则 1,2
- 认为任何两个股票之间的correlation都是独立的,采取全局平均的相关程度作为\(F\)
- 采用单因子模型去估计协方差矩阵
最优的 \(\delta\)
这边我们会介绍一下如何获取最优的 \(\delta\)。根据上面的介绍,我们知道找到最优的 \(\delta^*\) 等价于求解下面这个问题 \[ \min_{\delta} \mathbb{E}\|(1-\delta) S + \delta F - \Sigma\|_2^2 \] 该问题的解为 \[ \delta^* = \frac{\sum_{ij}\mathbb{Var}[s_{ij}]- \mathbb{Cov}[f_{ij}, s_{ij}]}{\sum_{ij}\mathbb{Var}[s_{ij}-f_{ij}] + (\phi_{ij}-\sigma_{ij})^2} \] 其中 \(\Phi\) 为构造出来的估计算子 \(F\)的真实值。具体可以参考附录1
很显然这个式子有两个问题:
- 依赖\(F, S\)的真实统计,方差和协方差
- 依赖真实未知的 \(\Sigma, (\sigma_{ij})\)
对于第一个问题,我们考虑在\(T\)比较大的时候,真实统计和样本估计之间的误差是什么样子的。如果误差较小,那么我们则可以对于 \(\delta^*\) 构造一个渐进有效的表达式。 首先对于第一个问题来说,中心极限定理的直觉告诉我们,无论是\(\mathbb{Var}[s_{ij}],\mathbb{Cov}[f_{ij}, s_{ij}], \mathbb{Var}[s_{ij}-f_{ij}]\) 其中哪一个,他跟随\(T\)的scaling应该都是在 \(\frac{1}{T}\) 这量级上,也是就说 \(\delta^* \propto \frac{\alpha}{T}\), 那么一个最合理,也是最符合直觉的猜测,就是我们可以认为: \[ \delta^* = \frac{1}{T}\frac{\pi - \rho}{\gamma} + o(\frac{1}{T^2}) \] 这边, \[ \pi = \lim_{T \to \infty} \sum_{ij} \mathbb{Var}[\sqrt{T}s_{ij}],\\ \rho = \lim_{T \to \infty} \sum_{ij} \mathbb{Cov}[\sqrt{T}f_{ij}, \sqrt{T}s_{ij}],\\ \gamma = \sum_{ij}(\phi_{ij} - \sigma_{ij})^2 \] 严格的数学分析可以参考附录1。
这边我们对 \(\delta^*\) 做一些简要的说明,因为 \(\delta^* \sim \frac{1}{T}\), 那么我们可以知道 \(T \to \infty\) 的时候,\(\delta^* \to 0\), 整个估计收敛到 \(S\), 这也是和我们统计学上所学到的知识是吻合的。当我们拥有足够多的样本是,使用样本协方差矩阵作为真实协方差矩阵的估计是一个有效的估计。