【发布时间】:2020-10-15 23:41:07
【问题描述】:
我有我的输入参数 mu(平均向量 μ)、Q(协方差矩阵 Q)和 tau(风险容忍度 τ),我需要返回使以下效用函数 U 最大化的向量 h(资产权重) :
U(h)= −1/2h^T*Q*h + τ*h^T*μ
受约束:
0 ≤ h ≤ 0.1 for all h
and sum of all h is equal to 1: h^T*e = 1
TAU 包含从 0 到 0.5 的数字,步长为 0.001。我如何为这个问题定义参数:Dmat、dvec、Amat 和 bvec?我知道财务概念,但不知道如何正确编程。
谢谢
这不起作用,因为我仍然有表示卖空的负权重:(
frontieropti <- c(NULL)
i <- 1
for (i in 1:nrow(TAU)){
solQP <- solve.QP(Dmat,TAU[i]*mu, Amat, bvec, meq = 1, factorized = F)
sol <- c(i,solQP$value)
frontieropti <- rbind(frontieropti,sol)
i <- i +1
}
solQP <- solve.QP(Dmat, TAU[1]*mu, Amat, bvec, meq = 1, factorized = F)
solQP
【问题讨论】:
-
这些幻灯片enricoschumann.net/files/slides_rimini_2016_qp.pdf 展示了如何使用包
quadprog进行均值方差优化。参考代码在enricoschumann.net/files/mv.R -
我很欣赏这些材料,但我已经有了幻灯片和类似的代码。我只是在寻找一些代码来解决我的问题,以便我可以继续处理我需要完成的其他部分。就像我的变量的非常明确的定义一样。等于或小于 10% 是让我绊倒的原因,以及如何在 Amat 中正确定义它。
-
你是故意跳过所有
i吗? -
@Jan 你能解释一下吗?
i正在查看TAU,它要么是一个从零到 0.5 的数字数组,增量为 0.001,或者,正如我所写的,具有相同数字的矩阵的不同行。我只是在TAU矩阵中逐行进行,但我是否无意中跳过了所有事件??? -
for循环负责增量本身。声明i <- i+1是额外的,不需要。但是,我只是尝试了一下,R 完全忽略了额外的i+1statement。所以, 它没有任何害处, 我的怀疑是错误的。所以,你说得对。
标签: r optimization finance portfolio quadratic