开始使用免费开始使用

驱动因素 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)
编辑并运行代码