【问题标题】:Computing expected return - variance plot计算预期收益 - 方差图
【发布时间】: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


    【解决方案1】:

    如果我正确理解您的问题,

    min.expected.return <- 0.001
    max.expected.return <- 0.2
    num.points <- 20
    mu.targets <- seq(min.expected.return, max.expected.return, length=num.points)
    sapply(mu.targets, function (mu.target) markowitz.variance(mu.target, mu, sigma))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      相关资源
      最近更新 更多