【发布时间】:2018-09-28 00:43:31
【问题描述】:
我正在尝试绘制一个图,其中对于 y 轴上预期回报的不同值,给出了投资组合实现的相应方差。
为了构建图,我需要对不同的预期回报值应用 Markowitz 方差。为此,我必须编写一个以输入为输入的函数:
- 最低预期回报
- 最大预期回报
- 介于最小值和最大值之间的点的数量(应为 20)。
该函数应返回一个向量,其中包含预期收益对应值的投资组合方差。
投资组合回报的最小值应为 0.001,最大值应为 0.2,中间有 20 个点。 我已经从我的数据集中计算了 sigma 和预期回报。我想我必须编写某种循环函数,但我被困在这里。
我计算的马科维茨方差:
markowitz.variance <- function(mu.target, mu, sigma) {
n <- nrow(sigma)
ones <- rep(1,n)
sigma.inv <- solve(sigma)
A <- t(ones)%*%sigma.inv%*%ones
B <- t(ones)%*%sigma.inv%*%mu
C <- t(mu)%*%sigma.inv%*%mu
delta <- A%*%C-B%*%B
variance <- (A*mu.target^2 - 2*B*mu.target + C) / delta
return(variance)
}
协方差矩阵和预期回报:
sigma <- cov(constituents.return[,-1])
mu <- apply(constituents.return[,-1],2, mean)
我知道我必须以某种方式创建一个循环,其中预期收益循环 20 次,增量为 0.01,从 0.001 到 0.2 以达到点并将方差作为收益,但我无法很明白如何将return输入到循环中。
【问题讨论】:
标签: r return covariance finance