施加权重约束
投资者经常会受到投资组合权重最大值的限制。这类约束其实可能带来好处。最大权重约束的优势在于,组合不会过度集中于某些资产。但也有劣势:相同的目标收益可能不再可达,或者只能以更高的波动率为代价。
回忆上一道练习,函数 portfolio.optim() 允许您通过 reshigh 参数设置权重约束。reshigh 需要为每个资产提供一个最大权重的向量。
本练习中,您将创建 3 个施加不同最大权重约束的组合。为完成本练习,了解 portfolio.optim() 的输出很重要。该函数返回一个包含 4 个部分的列表:(i)$pw:投资组合权重;(ii)$px:投资组合的总体收益;(iii)$pm:投资组合的期望收益;(iv)$ps:投资组合收益的标准差。
本练习是课程的一部分
R 中的投资组合分析入门
练习说明
- 使用
rep()函数为returns中每个资产(列)创建 3 个最大权重向量。第一个向量的最大权重为 100%,第二个为 10%,第三个为 5%。分别命名为max_weights1、max_weights2、max_weights3。 - 创建一个最大权重为 100% 的最优组合,命名为
opt1。 - 创建一个最大权重为 10% 的最优组合,命名为
opt2。 - 创建一个最大权重为 5% 的最优组合,命名为
opt3。 - 分别计算每个组合中权重大于 1% 的资产数量。访问权重时,在组合名称后使用
$pw。 - 打印您创建的 3 个组合的波动率(标准差
$ps)。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Create vectors of maximum weights
max_weights1 <- rep(1, ncol(returns))
max_weights2 <- ___
max_weights3 <- ___
# Create an optimum portfolio with max weights of 100%
opt1 <- portfolio.optim(___, reshigh = ___)
# Create an optimum portfolio with max weights of 10%
# Create an optimum portfolio with max weights of 5%
# Calculate how many assets have a weight that is greater than 1% for each portfolio
sum(opt1$pw > .01)
sum(___$pw > .01)
sum(___$pw > .01)
# Print portfolio volatilites
opt1$ps
___$__
___$__