この Web サイトで簡単に説明されているように、R を使用して最小分散ポートフォリオに関する最適化問題を解決したいと考えています: http://enricoschumann.net/R/minvar.htm
問題は、使用したい行列が行 (=観察) よりも多くの列 (= 資産)を持っていることです。これが正定値ではなく、可逆でない理由です。
この問題は、Web サイトとは逆の値の変数を使用することで再現できます。これにより、次の結果が得られます。
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 を可逆にする方法を知っている人はいますか?
望ましい結果は、最小分散ポートフォリオの各資産の重みです。