定义自定义矩函数
在许多带约束的优化问题中,投资组合经理或分析师可能希望采用特定技术来估计矩,和/或进一步扩展 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$___