R最小方差投资组合:求解不可逆矩阵
我想用R解决一个关于最小方差投资组合的优化问题,如本网站所述: 问题是:我要使用的矩阵的列(=资产)比行(=观察值)多,这就是为什么它不是正定的和不可逆的 您可以通过在网站上为变量取相反的值来重新创建此问题,结果如下:R最小方差投资组合:求解不可逆矩阵,r,optimization,mathematical-optimization,portfolio,quadprog,R,Optimization,Mathematical Optimization,Portfolio,Quadprog,我想用R解决一个关于最小方差投资组合的优化问题,如本网站所述: 问题是:我要使用的矩阵的列(=资产)比行(=观察值)多,这就是为什么它不是正定的和不可逆的 您可以通过在网站上为变量取相反的值来重新创建此问题,结果如下: nO <- 10L ## number of observations nA <- 100L ## number of assets 有人知道用mData解决优化问题的其他函数吗?或者知道使mData可逆而不丢失信息的方法吗 期望的结果是最小方差投资组合中每个资
nO <- 10L ## number of observations
nA <- 100L ## number of assets
有人知道用mData解决优化问题的其他函数吗?或者知道使mData可逆而不丢失信息的方法吗
期望的结果是最小方差投资组合中每个资产的权重。您可以尝试:
library(Matrix)
Q = nearPD(cov(mData))$mat
然后使用Q
而不是cov(mData)
还有一种基于调整收益率的均值-方差模型,可直接处理您的案例。看见不幸的是,使用QuadProg()实现这一点并不容易。我在您提供的链接中查看了替代公式。假设我有一个返回矩阵
R
,大小为T
乘以n
(观察次数乘以资产数量)。然后,您的模型IIUC将(Rx)'IRx=x'R'Rx
最小化。但是,如果R
没有满列秩,那么R'R
也没有满列秩。QuadProg的主要问题是它需要(1)严格正定矩阵(不是半正定矩阵)和(2)所有变量都必须是二次的。大多数QP解算器不是这样的。QuadProg的一个简单解决方法是为线性变量的Q添加一个小的对角线值。同样,更好的QP解算器也可以广泛使用,而不需要这样做。
matrix D in quadratic function is not positive definite!
library(Matrix)
Q = nearPD(cov(mData))$mat