Q:

Solve(covMat) retorna que system is computationally singular: reciprocal condition number

Quiero obtener la cartera de variación mínima. Los rendimientos esperados mu son:
> mu
       .SXQR        .SXTR        .SXNR        .SXMR        .SXAR        .SX3R 
 0.100496686  0.068652744  0.065081570  0.013155820  0.086947540  0.103143934 
       .SX6R        .SXFR        .SXOR        .SXDR        .SX4R        .SXRR 
 0.054990629  0.088484620  0.085435533  0.068080455  0.098365460  0.023932074 
       .SXER        .SXKR        .SX7R        .SX8R        .SXIR        .SXPR 
 0.037525561 -0.000400454  0.024776148  0.007051037  0.042215791  0.116013074

y la matriz de covarianza covMat esta :
> covMat
           .SXQR      .SXTR      .SXNR      .SXMR      .SXAR      .SX3R      .SX6R
.SXQR 0.03345763 0.03498086 0.04185753 0.03245136 0.03497776 0.02324828 0.02081399
.SXTR 0.03498086 0.04974472 0.04619830 0.04159817 0.04420657 0.02401824 0.02689768
.SXNR 0.04185753 0.04619830 0.06097311 0.04537355 0.05011720 0.02686316 0.03057380
.SXMR 0.03245136 0.04159817 0.04537355 0.04287405 0.04017447 0.02191462 0.02405812
.SXAR 0.03497776 0.04420657 0.05011720 0.04017447 0.05465295 0.02184147 0.02625680
.SX3R 0.02324828 0.02401824 0.02686316 0.02191462 0.02184147 0.02318865 0.01733667
.SX6R 0.02081399 0.02689768 0.03057380 0.02405812 0.02625680 0.01733667 0.03490965
.SXFR 0.04086303 0.05423479 0.05599539 0.04781758 0.04785298 0.03177379 0.03971822
.SXOR 0.03468033 0.04174388 0.04790487 0.03778244 0.03958789 0.02265676 0.03305845
.SXDR 0.01823918 0.02550628 0.02203189 0.02453928 0.01603731 0.01815483 0.01477641
.SX4R 0.03342966 0.03293408 0.04631396 0.03373207 0.03772380 0.02582638 0.02640921
.SXRR 0.03033003 0.03421856 0.04020604 0.03334523 0.03561357 0.01863272 0.02276777
.SXER 0.02051229 0.01525291 0.02833009 0.01743750 0.01769105 0.01464734 0.01775119
.SXKR 0.02694061 0.03196615 0.03950701 0.03682066 0.03574271 0.01394396 0.02498871
.SX7R 0.03635913 0.04453817 0.04871591 0.03789661 0.03882093 0.02804067 0.03282608
.SX8R 0.03991513 0.04959444 0.05847244 0.04934120 0.04838590 0.02522826 0.02852557
.SXIR 0.03508348 0.04831080 0.04905516 0.04555107 0.04046836 0.02949463 0.03263901
.SXPR 0.04456718 0.03223030 0.06505796 0.03031465 0.04557004 0.02648925 0.03399364
           .SXFR      .SXOR       .SXDR      .SX4R      .SXRR      .SXER      .SXKR
.SXQR 0.04086303 0.03468033 0.018239181 0.03342966 0.03033003 0.02051229 0.02694061
.SXTR 0.05423479 0.04174388 0.025506282 0.03293408 0.03421856 0.01525291 0.03196615
.SXNR 0.05599539 0.04790487 0.022031890 0.04631396 0.04020604 0.02833009 0.03950701
.SXMR 0.04781758 0.03778244 0.024539282 0.03373207 0.03334523 0.01743750 0.03682066
.SXAR 0.04785298 0.03958789 0.016037311 0.03772380 0.03561357 0.01769105 0.03574271
.SX3R 0.03177379 0.02265676 0.018154833 0.02582638 0.01863272 0.01464734 0.01394396
.SX6R 0.03971822 0.03305845 0.014776414 0.02640921 0.02276777 0.01775119 0.02498871
.SXFR 0.07060256 0.05433736 0.029870028 0.04370332 0.04173824 0.02543286 0.03772980
.SXOR 0.05433736 0.05018950 0.019754192 0.03724791 0.03814745 0.02642396 0.03293653
.SXDR 0.02987003 0.01975419 0.024627383 0.01758262 0.01499347 0.01045468 0.01481692
.SX4R 0.04370332 0.03724791 0.017582623 0.04093423 0.03116615 0.02429916 0.02793648
.SXRR 0.04173824 0.03814745 0.014993470 0.03116615 0.03504357 0.01910385 0.03251937
.SXER 0.02543286 0.02642396 0.010454676 0.02429916 0.01910385 0.02722964 0.01322536
.SXKR 0.03772980 0.03293653 0.014816920 0.02793648 0.03251937 0.01322536 0.04505911
.SX7R 0.05938230 0.05169770 0.023760635 0.04122183 0.03709132 0.02779035 0.02632013
.SX8R 0.05506206 0.04556889 0.027748962 0.04155255 0.03723654 0.02359730 0.04231239
.SXIR 0.05991709 0.04424346 0.033142798 0.03888777 0.03233359 0.02232765 0.03104647
.SXPR 0.04889303 0.05858437 0.006954027 0.05553596 0.04425855 0.05085459 0.02653357
           .SX7R      .SX8R      .SXIR       .SXPR
.SXQR 0.03635913 0.03991513 0.03508348 0.044567182
.SXTR 0.04453817 0.04959444 0.04831080 0.032230303
.SXNR 0.04871591 0.05847244 0.04905516 0.065057961
.SXMR 0.03789661 0.04934120 0.04555107 0.030314650
.SXAR 0.03882093 0.04838590 0.04046836 0.045570043
.SX3R 0.02804067 0.02522826 0.02949463 0.026489254
.SX6R 0.03282608 0.02852557 0.03263901 0.033993645
.SXFR 0.05938230 0.05506206 0.05991709 0.048893031
.SXOR 0.05169770 0.04556889 0.04424346 0.058584372
.SXDR 0.02376063 0.02774896 0.03314280 0.006954027
.SX4R 0.04122183 0.04155255 0.03888777 0.055535956
.SXRR 0.03709132 0.03723654 0.03233359 0.044258552
.SXER 0.02779035 0.02359730 0.02232765 0.050854589
.SXKR 0.02632013 0.04231239 0.03104647 0.026533566
.SX7R 0.06443470 0.04622553 0.04997693 0.062958984
.SX8R 0.04622553 0.06557348 0.05449832 0.047301440
.SXIR 0.04997693 0.05449832 0.06063113 0.032824422
.SXPR 0.06295898 0.04730144 0.03282442 0.143337184

He visto que hay este articulo que da la ecuación y el código: 

Entonces utilizo el código siguiente. 
assetSymbols <- colnames(yearly_return)

mu <- colMeans(yearly_return,na.rm = TRUE) # expected returns
covMat <- cov(yearly_return) # covariance matrix
corMat <- cor(yearly_return) # correlation matrix

## Minimum Variance Portfolio function ####
getMinVariancePortfolio <- function(mu,covMat,assetSymbols) {
  U <- rep(1, length(mu)) # vector of 1
  O <- solve(covMat)     # inverse of covariance matrix
  w <- O%*%U /as.numeric(t(U)%*%O%*% U)
  Risk <- sqrt(t(w) %*% covMat %*% w)
  ExpReturn <- t(w) %*% mu
  Weights <- `names<-`(round(w, 5), assetSymbols)
  list(Weights = t(Weights),
       ExpReturn = round(as.numeric(ExpReturn), 5),
       Risk = round(as.numeric(Risk), 5))
}

Pero calculando el inverso de la matriz obtengo:
 Error in solve.default(covMat) : 
  system is computationally singular: reciprocal condition number = 1.06734e-19 

A:

Consideraciones
Como la implementación de la función getMinVariancePortfolio proviene de aplicar el multiplicador de lagrange al siguiente enunciado de programación lineal producto del Modelo de Markowitz:

Luego de verificar su correcta resolución, aplicando las derivadas parciales respectivas:

Y siendo:

w: el peso de las acciones, Σ-1: matriz inversa de covarianza y u: un arreglo unitario cuya longitud es igual al número de acciones.

Sólo puedo decir que la matriz inversa de Σ no sólo tiene que ser "cuadrada" (que se cumple porque es una matriz de covarianza) sino que su determinante debe ser diferente de cero (0). Por ejemplo una matriz 2x2, Donde |A| es la determinante:

En este caso  (try(solve(covMat))) si se aplica det(covMat), debe ser un valor muy pequeño, casi muy cercano a cero (0).
Cómo se está usando multiplicadores de lagrange para resolver un sistema de ecuaciones, lo anterior implicaría que existen infinitas soluciones o dicho de otro modo, diferentes pesos (w) de rendimiento para las 18 acciones.
|covMat| = 0 : Infinitos pesos (w) luego de resolver las ecuaciones de lagrange

Lo cual tiene sentido porque 1/0 es infinito.
Para resolver lo anterior, se revisó la documentación de Wolfram Aplha sobre matrices inversas (inglés) ahí se explica que existen diversos métodos para su tratamiento.
En tal sentido, al revisar la documentación de la función solve en LAPACK — Linear Algebra PACKage, siento decir que no he sido capaz de encontrar con qué método dicha función determina la inversa de una matriz (cuadrada).

No obstante, como el procedimiento mostrado tanto en la pregunta como en el articulo (francés, sólo leí las ecuaciones :)) es correcto y la restricción sólo está en el método ha emplearse para determinar la inversa de una matriz NxN, sólo queda buscar otros métodos.

Sobre lo anterior, por lo general en algebra lineal se emplea la Pseudoinversa de Moore-Penrose para la resolución de ecuaciones lineales, que en este caso aplica, porque se ha usado los multiplicadores de lagrange a un problema de minimización de programación lineal. 
Alternativa
A fin de no reinventar la rueda, el paquete pragma emplea la Pseudoinversa de Moore-Penrose para hallar matrices inversas.
Sólo hay que instalar dicho paquete y comprobar si efectivamente trabaja bien en contraste con la función solve
Tomándose el ejemplo que viene en solve sobre matriz de hilbert
install.packages(pracma)
library(pracma)

hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }
h8 <- hilbert(8); h8
          [,1]      [,2]      [,3]       [,4]       [,5]       [,6]       [,7]       [,8]
[1,] 1.0000000 0.5000000 0.3333333 0.25000000 0.20000000 0.16666667 0.14285714 0.12500000
[2,] 0.5000000 0.3333333 0.2500000 0.20000000 0.16666667 0.14285714 0.12500000 0.11111111
[3,] 0.3333333 0.2500000 0.2000000 0.16666667 0.14285714 0.12500000 0.11111111 0.10000000
[4,] 0.2500000 0.2000000 0.1666667 0.14285714 0.12500000 0.11111111 0.10000000 0.09090909
[5,] 0.2000000 0.1666667 0.1428571 0.12500000 0.11111111 0.10000000 0.09090909 0.08333333
[6,] 0.1666667 0.1428571 0.1250000 0.11111111 0.10000000 0.09090909 0.08333333 0.07692308
[7,] 0.1428571 0.1250000 0.1111111 0.10000000 0.09090909 0.08333333 0.07692308 0.07142857
[8,] 0.1250000 0.1111111 0.1000000 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667

solve(h8) # funcion solve
        [,1]      [,2]       [,3]       [,4]        [,5]        [,6]        [,7]       [,8]
[1,]      64     -2016      20160     -92400      221760     -288288      192192     -51480
[2,]   -2016     84672    -952560    4656960   -11642400    15567552   -10594584    2882880
[3,]   20160   -952560   11430720  -58212000   149688000  -204324119   141261119  -38918880
[4,]  -92400   4656960  -58212000  304919999  -800414996  1109908794  -776936155  216215998
[5,]  221760 -11642400  149688000 -800414996  2134439987 -2996753738  2118916783 -594593995
[6,] -288288  15567552 -204324119 1109908793 -2996753738  4249941661 -3030050996  856215352
[7,]  192192 -10594584  141261119 -776936154  2118916782 -3030050996  2175421226 -618377753
[8,]  -51480   2882880  -38918880  216215998  -594593995   856215351  -618377753  176679358

pinv(h8) # función del paquete Pragma
        [,1]      [,2]       [,3]       [,4]        [,5]        [,6]        [,7]       [,8]
[1,]      64     -2016      20160     -92400      221760     -288288      192192     -51480
[2,]   -2016     84672    -952560    4656960   -11642400    15567552   -10594584    2882880
[3,]   20160   -952560   11430720  -58211999   149687996  -204324114   141261116  -38918879
[4,]  -92400   4656960  -58211999  304919992  -800414977  1109908766  -776936135  216215993
[5,]  221760 -11642400  149687996 -800414977  2134439936 -2996753666  2118916732 -594593980
[6,] -288288  15567552 -204324114 1109908767 -2996753668  4249941561 -3030050925  856215332
[7,]  192192 -10594584  141261116 -776936136  2118916733 -3030050926  2175421177 -618377739
[8,]  -51480   2882880  -38918879  216215993  -594593981   856215332  -618377740  176679354

Cómo son métodos diferentes de aproximación, los resultados presentarán pequeñas variaciones, pero esto no invalida su uso para este caso concreto.
Solución
Una vez instalado y llamado el paquete pragma
install.packages(pracma)
library(pracma)

Sólo hay que reemplazar solve por pinv en la función getMinVariancePortfolio
## Minimum Variance Portfolio function ####
getMinVariancePortfolio <- function(mu,covMat,assetSymbols) {
    U <- rep(1, length(mu) # vector of 1
    O <- pinv(covMat)      # inverse of covariance matrix: Pragma Function pinv
    w <- O%*%U /as.numeric(t(U)%*%O%*% U)
    Risk <- sqrt(t(w) %*% covMat %*% w)
    ExpReturn <- t(w) %*% mu
    Weights <- `names<-`(round(w, 5), assetSymbols)
    list(Weights = t(Weights),
         ExpReturn = round(as.numeric(ExpReturn), 5),
         Risk = round(as.numeric(Risk), 5))
}

Al probar lo anterior con la estructura de datos facilitada en Calcular la matriz de covarianza se obtiene lo siguiente:
assetSymbols <- colnames(yearly_return)
mu <- colMeans(yearly_return,na.rm = TRUE) # expected returns
covMat <- cov(yearly_return) # covariance matrix

getMinVariancePortfolio(mu,covMat,assetSymbols)

$Weights
         [,1]    [,2]     [,3]    [,4]    [,5]    [,6]    [,7]    [,8]    [,9]   [,10]   [,11]   [,12]
[1,] -0.12839 0.01941 -0.27081 0.09285 0.13149 0.12208 0.24466 0.16166 0.25637 0.06266 0.01619 0.34199
       [,13]    [,14]   [,15]    [,16]  [,17]   [,18]
[1,] 0.13703 -0.05763 0.00859 -0.37557 0.0433 0.19411

$ExpReturn
[1] 0.12518

$Risk

[1] 0.15789

Finalmente, vale la pena acotar que la determinante para la matriz de covarianza (covMat) aún siendo muy pequeña:
det(covMat)
[1] -3.634388e-231

No impidió que se le encontrara su inversa con el método de la Pseudoinversa de Moore-Penrose.

Nota: Sólo aclarar qué no toda matriz cuadra tiene inversa:
   det(matrix(1:9,nrow=3))== 0 # TRUE
   por eso se hizo necesario emplear la matriz de hilbert para comprobar las inversas entre solve y pinv.

Ampliación respuesta
En wikipedia Moore–Penrose inverse - Inglés en la sección Software libraries se menciona que paquetes emplean esta técnica:

NumPy y SciPy de Python
LAPACK (aunque este tiene un desarrollo diferente del SVD-Singular value decomposition)
Octave también lo emplea a través de una función pinv 
Y por supuesto R a través del paquete pragma::pinv y MASS::ginv este último lo he probado y también arroja los resultado expuestos.

Sólo hacer lo siguiente:
install.packages(MASS)
library(MASS)

# ----------------------------------------------------------------------
# dentro de la funcion "getMinVariancePortfolio"
# ----------------------------------------------------------------------
 O <- ginv(covMat)     # inverse of covariance matrix: Funcion de Mass
# ----------------------------------------------------------------------

# Se llama la función
getMinVariancePortfolio(mu,covMat,assetSymbols)

$Weights
         [,1]    [,2]     [,3]    [,4]    [,5]    [,6]    [,7]    [,8]    [,9]   [,10]   [,11]   [,12]
[1,] -0.12839 0.01941 -0.27081 0.09285 0.13149 0.12208 0.24466 0.16166 0.25637 0.06266 0.01619 0.34199
       [,13]    [,14]   [,15]    [,16]  [,17]   [,18]
[1,] 0.13703 -0.05763 0.00859 -0.37557 0.0433 0.19411

$ExpReturn
[1] 0.12518

$Risk
[1] 0.15789

