驱动因素 2:投资组合权重的选择
投资者可以通过优化权重选择来获得最高的风险调整后收益,该收益由投资组合的夏普比率衡量。
在仅投资于 2 个资产的特殊情形下,只需确定 1 个权重,因为第二个资产的权重等于 1 减去第一个资产的权重。
让我们以投资于美国股票与美国债券的组合为例来实操。我们将使用穷举法,尝试大量可能的权重,并保留能产生最高投资组合夏普比率的权重(假设无风险利率为 0)。
本练习是课程的一部分
R 中的投资组合分析入门
练习说明
- 使用
seq()创建名为grid的向量,从 0 开始,到 1 结束,步长为 0.01。 - 用与
grid相同长度初始化空向量vsharpe。常见做法是使用函数 rep() 创建包含 NA 的向量。您将在下一步构建的循环中将这些 NA 替换掉。 - 在 for 循环中,您将为
grid中每个可能的权重计算夏普比率。for 循环中的第一条命令选择grid的第 i 个元素并存入对象weight,该值会在每次迭代中变化。 - 您需要观察随着权重变化,投资组合收益如何变化。创建对象
preturns,其等于weight乘以returns_equities与(1-weight)乘以returns_bonds之和。 - 接着,用
preturns的年化夏普比率(SharpeRatio.annualized())替换vsharpe中的 NA。 - 完成绘图函数:将可能的权重(
grid)绘制在 x 轴,将对应的夏普比率绘制在 y 轴。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Create a grid
grid <- seq(from = ___, to = ___, by = ___)
# Initialize an empty vector for Sharpe ratios
vsharpe <- rep(NA, times = ___ )
# Create a for loop to calculate Sharpe ratios
for(i in 1:length(grid)) {
weight <- ___[i]
preturns <- ___ * ___ + (1 - ___) * ___
vsharpe[i] <- SharpeRatio.annualized(___)
}
# Plot weights and Sharpe ratio
plot(___, ___, xlab = "Weights", ylab= "Ann. Sharpe ratio")
abline(v = grid[vsharpe == max(vsharpe)], lty = 3)