Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R最小方差投资组合:求解不可逆矩阵_R_Optimization_Mathematical Optimization_Portfolio_Quadprog - Fatal编程技术网

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可逆而不丢失信息的方法吗 期望的结果是最小方差投资组合中每个资

我想用R解决一个关于最小方差投资组合的优化问题,如本网站所述:

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

您可以通过在网站上为变量取相反的值来重新创建此问题,结果如下:

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