【问题标题】:R minimum variance portfolio: solve non invertible matrixR最小方差投资组合:求解不可逆矩阵
【发布时间】:2021-01-11 23:52:02
【问题描述】:

我想解决一个关于最小方差投资组合优化问题,如本网站简要描述的那样:http://enricoschumann.net/R/minvar.htm

问题是:我要使用的矩阵列(=资产)多于行(=观察值),这就是为什么它不是正定和不可逆的。

您可以通过使用与网站上相反的变量值来重现此问题,结果如下:

nO <- 10L  ## number of observations
nA <- 100L  ## number of assets
mData <- array(rnorm(nO * nA, sd = 0.05), 
               dim = c(nO, nA)) #Creating sample stock observations

library("quadprog")
aMat <- array(1, dim = c(1,nA))
bVec <- 1
zeros <- array(0, dim = c(nA,1))

solQP <- solve.QP(cov(mData), zeros, t(aMat), bVec, meq = 1) #Minimize optimization
solQP$solution

这会导致以下错误

 matrix D in quadratic function is not positive definite! 

有没有人知道使用 mData 解决优化问题的其他函数方法使 mData 可逆而不丢失信息?

期望的结果是最小方差投资组合中每种资产的权重。

【问题讨论】:

    标签: r optimization mathematical-optimization portfolio quadprog


    【解决方案1】:

    你可以试试:

    library(Matrix)
    Q = nearPD(cov(mData))$mat
    

    然后使用Q 而不是cov(mData)

    还有一个基于调整后收益的替代均值方差模型可以直接处理您的案例。见link。不幸的是,使用 QuadProg (link) 实现这一点并不容易。

    【讨论】:

    • 我查看了您提供的链接中的替代配方。假设我有一个返回矩阵R,大小为T 乘以n(观察次数乘以资产数量)。然后你的模型,IIUC,最小化(Rx)'IRx = x'R'Rx。但是,如果 R 没有完整的列排名,R'R 也没有。
    • QuadProg 的主要问题是它需要 (1) 严格的正定矩阵(不是半正定)和 (2) 所有变量都必须是二次的。大多数 QP 求解器不是这样的。 QuadProg 的一个简单解决方法是为线性变量在 Q 中添加一个小的对角线值。同样,不需要这个的更好的 QP 求解器可以广泛使用。
    猜你喜欢
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 2016-03-12
    • 2011-11-16
    • 2017-11-24
    • 1970-01-01
    相关资源
    最近更新 更多