风险平价、与基于PCA的风险平价改进投资方式(附回测效果)

本文探讨了马克维茨的均值方差理论在投资组合优化中的应用,包括风险平价模型、变权重风险评价模型及基于PCA的风险评价模型。通过实证分析,展示了不同模型在收益与风险之间的权衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、组合投资的方式

先大大致了解一下有多种资产是常用的投资方式:
在这里插入图片描述
其中马克维茨的均值方差理论是很多投资方式的基础,其目标是:在约束最大风险下,投资组合的收益最大化;或约束最小收益下,投资组合风险最小。而这是等价的。
在这里插入图片描述
对于不同风险下求解的最大收益组合,或不同收益下求解出的最小风险组合,在风险收益曲线上构成有效前沿
在这里插入图片描述
有效前沿上面的点是不可能的组合,在有效前沿下面的点不是最优组合。

二、风险评价模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有了风险评价模型,我们对风险评价模型进行投资回测。我们回测的区间段为2009年4月1日到2018年4月1日。假设我们可以投资的资产为:中证全债、沪深300、标普500、沪金指数、和中证全债。
我们回测的效果和对比如下:
在这里插入图片描述
可以看到,风险平价模型的收益仅次于标普500,但风险却比标普500低了非常多。实际上,风险平价的波动率仅次于债券。并且风险平价的最大回撤非常好。显然风险平价的投资很好的权衡了收益与风险

三、变权重的风险评价模型

当然,投资者对于不同的资产的承受能力是不一样的,投资者基本不能承受债券的亏损,但相对对股票一类资产的风险承受能力较高。因此我们可以不必限制所有资产的风险贡献率一直,我们可以对不同的资产设置不同的风险贡献率,在对问题进行求解。

我们提出如下投资方式
在这里插入图片描述
(下行标准差,就是只有亏损才算波动,盈利时不计入标准差计算)

同样的,我们使用2009年4月1日到2018年4月1日的中证全债、沪深300、标普500、沪金指数、和中证全债进行组合投资,设置每种资产的风险贡献率为0.1、0.3、0.3、0.3。进行回测的效果如下:
在这里插入图片描述
可见,我们对高风险资产的风险能力承受力度加大时,投资组合的波动率确实有所增加,带来的是相对高的收益。

四、基于PCA风险评价模型

现在有一种理论是是,正常提产生风险的,并不是表面的资产,而是每种资产背后隐藏的因子(比如经济增长,通胀,利率,汇率等,也可能是FAMA-French五因子:市值因素、账面市值比因素,盈利水平风险,投资水平风险,其他)。其中为了方便研究,我们最好使得每个因子正交。

有没有什么方法让能够提取因子,同时让因子尽可能不相关呢?对!PCA!

PCA是一种数据降维最常用的技术、关于PCA就不再介绍了,大概就是求出有n特征的特征矩阵的协方差矩阵的特征值和特征向量,取前k个最大特征值对应的特征向量矩阵P(n*k,其中k<n)。用原始的特征矩阵*特征向量矩阵P,得到的就是降维后的数据。

我们是用PCA得到所投资资产背后的四个隐藏因子和隐藏因子的构成:
在这里插入图片描述
之后我们对隐藏因子进行风险平价应用,回测效果如下:
在这里插入图片描述
可以看出,对因子进行风险平价比普通的风险平价获得了更好的收益。但是风险也相对高了一些,同时换手率也比较高。

加下来,我们设置对不同的隐藏因子的风险承受能力不同,具体流程如下:
在这里插入图片描述
使用上面流程,我们得到的回测结果如下:
在这里插入图片描述
可以看出。相对于刚刚的所有因子的风险贡献率相等,此种方式获得了更好的收益,同时风险测度也更小。但缺点就是换手率仍然比较高。

### 成分分析(PCA)在风险平价投资组合中的实现应用 成分分析(Principal Component Analysis, PCA)是一种常用的线性技术,能够提取数据的要特征并度复杂性。在金融领域,PCA被广泛应用于风险建模和资产配置中,特别是在风险平价策略的设计过程中。 #### 数据驱动的风险分解 通过PCA可以将原始资产报的数据集转换为成分空间,其中每个成分代表一种隐藏因子[^3]。这些隐藏因子彼此正交且按方差贡献大小排序,从而使得前几个成分能够解释大部分的总波动性。这种方法不仅简化了复杂的多关系结构,还揭示了潜在的风险来源。 #### 构造无关联的投资组合 利用上述获得的成分作为新的基础变量集合,可以通过它们重新构建一组理论上完全无关联的投资子组合[^1]。由于各子组合之间不存在相关性干扰,这一步骤极大地促进了后续分配资源到各个方向上的精确控制能力提升。 #### 应用风险平权原则于新框架之上 接着,在已经分离出来的那些相互独立的方向上实施所谓的“风险平等化”处理方式——即确保每单位投入所产生的不确定性水平相等。具体而言就是调整不同类别下的权重比例直至满足既定条件为止[^2]。 以下是采用Python语言编写的一个简单示例程序片段用于演示这一流程: ```python import numpy as np from sklearn.decomposition import PCA def pca_based_risk_parity(returns): """ Perform Risk Parity Allocation based on Principal Components. Parameters: returns (numpy.ndarray): Asset returns matrix Returns: dict: Weights and other details of the risk parity allocation process """ # Step 1: Apply PCA to extract principal components pca = PCA() transformed_returns = pca.fit_transform(returns) # Step 2: Compute variance explained by each component variances = pca.explained_variance_ # Step 3: Calculate weights inversely proportional to sqrt(variance) inv_sqrt_vars = 1 / np.sqrt(variances) total_inv_sqrt_var = sum(inv_sqrt_vars) weights = inv_sqrt_vars / total_inv_sqrt_var result = { 'weights': weights, 'explained_variance_ratio': pca.explained_variance_ratio_, 'components': pca.components_ } return result ``` 此代码展示了如何运用`sklearn`库里的PCA模块来进行变换,并计算相应的权重分布情况以便达成理想状态下的平衡效果。 #### 总结说明 综上所述,借助成分分析方法可以帮助我们更好地理解金融市场内部运作机制的同时也为制定更加科学合理的决策提供了强有力的支持工具之一;而在实际操作层面,则需综合考虑诸如交易成本等因素的影响以优化整体表现性能[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值