最大化方程包括向量和矩阵

时间:2015-10-29 12:57:28

标签: r

我无法弄清楚如何解决融资中的最大化问题。

我想最多:(t(x)% * %(r)-rf)/(t(x)% * %A% * %x) 其中x是3x1向量,A是3x3,rf是值(0.02),r也是3x1。 从这个等式中我想知道最大化这个的x的价值。

奖励:如果您可以插入约束,其中x中的所有单个值都介于0和1之间,并且总和为1会更加令人敬畏

sigma1=0.1
sigma2=0.2
sigma3=0.15
korrelationen12=0.25
korrelation23=0.20
korrelation13=0.1
cov12=korrelationen12*sigma1*sigma2
cov13=korrelation13*sigma1*sigma3
cov23=korrelation23*sigma2*sigma3
afkast1=0.04
afkast2=0.12
afkast3=0.08
r=c(afkast1,afkast2,afkast3)
rf=0.02
data=c(sigma1^2,cov12,cov13,cov12,sigma2^2,cov23,cov13,cov23,sigma3^2)
A=matrix(data=data,3,3)
et=c(1,1,1)

max((t(x)% * %(r)-rf)/(t(x)% * %A% * %x),x)????

在此示例中,结果必须与使用时的结果相同:

tangent=(solve(A)%*%(r-(rf)*et))/as.numeric((t(et)%*%solve(A)%*%(r-rf*et)))
tangent
         [,1]
[1,] 0.1320973
[2,] 0.4391657
[3,] 0.4287370

1 个答案:

答案 0 :(得分:0)

尝试optim

proj <- function(x) x / sum(x) # projection satisfies sum(x) == 1
obj <- function(x) {
 x <- proj(x)
 (t(x)%*%(r)-rf)/(t(x)%*%A%*%x)
}
fit <- optim(proj(1:3), obj, lower = c(0, 0, 0), upper = c(1, 1, 1),
  method = "L-BFGS-B", control = list(fnscale = -1))

proj(fit$par) # parameter values at maximum
## [1] 0.4483085 0.2171453 0.3345461

fit$value # maximum value of objective
## [1] 5.827519

关于问题结尾处所声称的解决方案,它是提出的最大化问题的解决方案,因为其目标值小于上述解决方案中显示的,因此,不是最大化的价值:

tangent=(solve(A)%*%(r-(rf)*et))/as.numeric((t(et)%*%solve(A)%*%(r-rf*et)))
obj(tangent)
##          [,1]
## [1,] 4.807799

建议您调查此不一致情况 - 提出的问题是正确的,tangent不是解决方案,或tangent是解决方案,问题中存在错误。