开始使用免费开始使用

定义自定义矩函数

在许多带约束的优化问题中,投资组合经理或分析师可能希望采用特定技术来估计矩,和/或进一步扩展 set.portfolio.moments() 的思路。用户自定义的矩函数可以包含任意命名的参数。然而,名为 R(资产收益)和 portfolio(投资组合对象)的参数会被自动检测并高效处理。因此,强烈建议将资产收益对象命名为 R,将投资组合对象命名为 portfolio

自定义矩函数应返回一个具名列表,其中元素代表各阶矩:

  • $mu:一阶矩(期望收益向量)
  • $sigma:二阶矩(方差-协方差矩阵)
  • $m3:三阶矩(共同偏度矩阵)
  • $m4:四阶矩(共同峰度矩阵)

在本练习中,您将编写一个自定义矩函数,使用稳健方法估计方差-协方差矩阵。我们将使用 MASS 包中的 cov.rob() 函数。函数签名应包含名为 R(资产收益)与 portfolio(规范对象)的参数。函数应返回一个具名列表。由于您只估计二阶矩,只需返回一个包含单个且命名恰当元素的列表。您可以将这些规则应用到其他模型的自定义矩函数中,例如因子模型、GARCH 模型,或任何在理论上应优于样本估计的模型。

本练习是课程的一部分

R 中级投资组合分析

查看课程

练习说明

  • 定义名为 moments_robust 的函数,使用 "mcd" 方法估计资产收益的方差-协方差矩阵。
  • 估计您刚定义的投资组合矩,并将结果赋值给变量 moments。这样做是为了检查您的自定义矩函数是否按预期工作。
  • 使用 cov.rob() 直接计算方差-协方差矩阵,并检查其是否等于 moments$sigma

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Define custom moment function
moments_robust <- function(R, portfolio){
  out <- list()
  out$___ <- cov.rob(R, method = ___)$cov
  out
}

# Estimate the portfolio moments using the function you just defined 
moments <- moments_robust(R = ___, portfolio = ___)

# Check the moment estimate
cov.rob(___, method = ___)$cov == moments$___
编辑并运行代码