Puede consultar el libro "Introducción al riesgo financiero" en
https://1drv.ms/b/s!Aj-hHTVbsx01h4JmNiA9O57JQuANWg?e=l4IFbm
>C=read.csv("C:/Users/User/Documents/ORLANDO/USTA171/RIESGO/datosacc2.csv",header=TRUE,dec=".",sep=";")
> attach(C)
The following objects are masked from A:
cargos,
davivienda, éxito, ic20, isa, nutresa
> n=nrow(C)
> #Portafolio de mínimo riesgo(Lagrange)
> ###################################
> z=qnorm(.01)
>
s=c(100000000,100000000,100000000,100000000,100000000)
> w=s/sum(s)
> rend.medio=0
> varianza=0
> desv.std=0
> VaR.indiv=0
> covar=cov(C[1:5])
> covar
cargos isa davivienda nutresa éxito
cargos
2.923125e-04 1.040143e-04 1.030154e-04 7.426151e-05 1.135951e-04
isa 1.040143e-04 2.834763e-04 8.519429e-05
8.814294e-05 1.380720e-04
davivienda 1.030154e-04 8.519429e-05 2.322348e-04
7.598694e-05 1.320829e-04
nutresa
7.426151e-05 8.814294e-05 7.598694e-05 1.487497e-04 9.430535e-05
éxito
1.135951e-04 1.380720e-04 1.320829e-04 9.430535e-05 4.633249e-04
> Z0=cbind(rbind(2*covar,c(1,1,1,1,1)),c(1,1,1,1,1,0))
> Q0=c(0,0,0,0,0,1)
> Z0.inv=solve(Z0)
> W.aux=Z0.inv%*%Q0
> W.min=W.aux[1:5,]; W.min
cargos isa davivienda nutresa
éxito
0.13847363 0.12521250 0.21259969 0.51216925 0.01154493
> # Las anteriores son las wi's del portafolio de
mínimo riesgo
> rend.medio=sapply(C[1:5],mean)
> rend.Pmin=W.min%*%rend.medio
> varia.Pmin=t(W.min)%*%covar%*%W.min
> VaR.Pmin=z*sum(s)*sqrt(varia.Pmin)
> G=rbind(rend.Pmin,varia.Pmin,VaR.Pmin)
> colnames(G)=c("Portafolio Mínimo")
>
rownames(G)=c("Rendimiento.Pmin","Varianza.Pmin","VaR.Pmin");
G
Portafolio Mínimo
Rendimiento.Pmin
-7.992820e-06
Varianza.Pmin
1.147484e-04
VaR.Pmin
-1.246000e+07
> ### Portafolios con rend. exógenos ###
> rend.exo=seq(rend.Pmin,0.00004,0.000005)
>
Z2=cbind(rbind(2*covar,c(rend.medio),c(1,1,1,1,1)),c(rend.medio,0,0),c(1,1,1,1,1,0,0))
> Z2.inv=solve(Z2)
> varia.exo=0
> VaR.P<-0
> W=matrix(0,length(rend.exo),5)
> for(i in 1:length(rend.exo))
+ {
+
Q2=c(0,0,0,0,0,rend.exo[i],1)
+
W2.aux=Z2.inv%*%Q2
+
W[i,]=W2.aux[1:5,]
+
varia.exo[i]=t(W[i,])%*%covar%*%W[i,]
+
VaR.P[i]=z*sum(s)*sqrt(t)*sqrt(varia.exo[i])
+ }
>
plot(c(varia.Pmin,varia.exo),c(rend.Pmin,rend.exo),pch=16,type="o",xlab="Varianza",ylab="Rendimiento",main="Frontera
Eficiente")
>
mark=cbind(c(rend.Pmin,rend.exo),c(varia.Pmin,varia.exo))
>
colnames(mark)=c("Rendimiento","Varianza"); mark
Rendimiento Varianza
[1,] -7.992820e-06
0.0001147484
[2,] -7.992820e-06
0.0001147484
[3,] -2.992820e-06
0.0001147511
[4,] 2.007180e-06 0.0001147590
[5,] 7.007180e-06 0.0001147723
[6,] 1.200718e-05 0.0001147909
[7,] 1.700718e-05 0.0001148148
[8,] 2.200718e-05 0.0001148440
[9,] 2.700718e-05 0.0001148785
[10,] 3.200718e-05
0.0001149183
[11,] 3.700718e-05
0.0001149634
> W
[,1] [,2] [,3]
[,4] [,5]
[1,] 0.1384736
0.1252125 0.2125997 0.5121692
1.154493e-02
[2,] 0.1393046
0.1267696 0.2142988 0.5103916
9.235398e-03
[3,] 0.1401356
0.1283266 0.2159980 0.5086139
6.925863e-03
[4,] 0.1409666
0.1298837 0.2176971 0.5068362
4.616327e-03
[5,] 0.1417976
0.1314408 0.2193963 0.5050586
2.306791e-03
[6,] 0.1426286
0.1329979 0.2210954 0.5032809 -2.744304e-06
[7,] 0.1434596
0.1345549 0.2227945 0.5015032 -2.312280e-03
[8,] 0.1442905
0.1361120 0.2244937 0.4997256 -4.621816e-03
[9,] 0.1451215
0.1376691 0.2261928 0.4979479 -6.931351e-03
[10,] 0.1459525 0.1392262 0.2278920 0.4961702
-9.240887e-03
> VaR.P
[1] -12459999
-12460143 -12460576 -12461296 -12462305 -12463601 -12465186
[8] -12467058
-12469218 -12471666
> #Portafolio con no negatividad
> library(quadprog)
> library(Rglpk)
> Medias=sapply(C[1:5],mean)
> Medias
cargos isa davivienda nutresa éxito
0.0003415332 0.0003631495
0.0003173994 -0.0002984070 -0.0013340188
> Desviaciones=sapply(C[1:5],sd)
> Desviaciones
cargos isa davivienda nutresa
éxito
0.01709715 0.01683675 0.01523925 0.01219630 0.02152498
> Covarianzas=cov(C[1:5])
> Covarianzas
cargos isa davivienda nutresa
éxito
cargos
2.923125e-04 1.040143e-04 1.030154e-04 7.426151e-05 1.135951e-04
isa
1.040143e-04 2.834763e-04 8.519429e-05 8.814294e-05 1.380720e-04
davivienda 1.030154e-04 8.519429e-05 2.322348e-04
7.598694e-05 1.320829e-04
nutresa 7.426151e-05
8.814294e-05 7.598694e-05 1.487497e-04 9.430535e-05
éxito
1.135951e-04 1.380720e-04 1.320829e-04 9.430535e-05 4.633249e-04
> Correlaciones=cor(C[1:5])
> Correlaciones
cargos isa davivienda nutresa
éxito
cargos 1.0000000
0.3613357 0.3953801 0.3561329 0.3086692
isa
0.3613357 1.0000000 0.3320385
0.4292410 0.3809821
davivienda 0.3953801 0.3320385 1.0000000 0.4088343 0.4026615
nutresa
0.3561329 0.4292410 0.4088343
1.0000000 0.3592241
éxito
0.3086692 0.3809821 0.4026615
0.3592241 1.0000000
> cova=c(2*Covarianzas)
> cova
[1] 0.0005846250
0.0002080285 0.0002060308 0.0001485230 0.0002271903
[6] 0.0002080285
0.0005669525 0.0001703886 0.0001762859 0.0002761440
[11] 0.0002060308 0.0001703886 0.0004644696 0.0001519739
0.0002641658
[16] 0.0001485230 0.0001762859 0.0001519739 0.0002974994
0.0001886107
[21] 0.0002271903 0.0002761440 0.0002641658 0.0001886107
0.0009266498
> cov2=matrix((cova),nrow=5)
> cov2
[,1] [,2] [,3] [,4] [,5]
[1,] 0.0005846250 0.0002080285 0.0002060308 0.0001485230
0.0002271903
[2,] 0.0002080285 0.0005669525 0.0001703886 0.0001762859
0.0002761440
[3,] 0.0002060308 0.0001703886 0.0004644696 0.0001519739
0.0002641658
[4,] 0.0001485230 0.0001762859 0.0001519739 0.0002974994
0.0001886107
[5,] 0.0002271903 0.0002761440 0.0002641658 0.0001886107
0.0009266498
> a=matrix(1,ncol=5)
> a
[,1] [,2] [,3]
[,4] [,5]
[1,] 1 1
1 1 1
> a1=rbind(cov2,a)
> a1
[,1] [,2] [,3] [,4] [,5]
[1,] 0.0005846250 0.0002080285 0.0002060308 0.0001485230
0.0002271903
[2,] 0.0002080285 0.0005669525 0.0001703886 0.0001762859
0.0002761440
[3,] 0.0002060308 0.0001703886 0.0004644696 0.0001519739
0.0002641658
[4,] 0.0001485230 0.0001762859 0.0001519739 0.0002974994
0.0001886107
[5,] 0.0002271903 0.0002761440 0.0002641658 0.0001886107
0.0009266498
[6,] 1.0000000000 1.0000000000 1.0000000000 1.0000000000
1.0000000000
> b=c(1,1,1,1,1,0)
> b1=matrix(b,ncol=1)
> Zeta=cbind(a1,b1)
> Zeta
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0.0005846250 0.0002080285 0.0002060308 0.0001485230
0.0002271903 1
[2,] 0.0002080285 0.0005669525 0.0001703886 0.0001762859
0.0002761440 1
[3,] 0.0002060308 0.0001703886 0.0004644696 0.0001519739
0.0002641658 1
[4,] 0.0001485230 0.0001762859 0.0001519739 0.0002974994
0.0001886107 1
[5,] 0.0002271903 0.0002761440 0.0002641658 0.0001886107
0.0009266498 1
[6,] 1.0000000000 1.0000000000 1.0000000000 1.0000000000
1.0000000000 0
> Zetacero=solve(Zeta)
> Zetacero
[,1] [,2] [,3] [,4] [,5]
[1,] 2169.9098298
-499.0242467 -729.0365711 -774.6164492 -167.23256282
[2,] -499.0242467
2375.5575370 -313.1612206
-1170.1139103 -393.25815932
[3,] -729.0365711
-313.1612206 2845.2581328
-1298.9739432 -504.08639784
[4,] -774.6164492 -1170.1139103 -1298.9739432 3625.4141490 -381.70984638
[5,] -167.2325628
-393.2581593 -504.0863978 -381.7098464 1446.28696635
[6,]
0.1384736 0.1252125 0.2125997 0.5121692 0.01154493
[,6]
[1,] 0.1384736308
[2,] 0.1252124995
[3,] 0.2125996887
[4,] 0.5121692470
[5,] 0.0115449339
[6,] -0.0002294968
> Q=c(0,0,0,0,0,1)
> Q0=matrix(Q)
> W0=Zetacero%*%Q0
> W0
[,1]
[1,] 0.1384736308
[2,] 0.1252124995
[3,] 0.2125996887
[4,] 0.5121692470
[5,] 0.0115449339
[6,] -0.0002294968
> W0p=W0[-6]
> W0p
[1] 0.13847363 0.12521250 0.21259969 0.51216925
0.01154493
> W0p1=t(W0p)
> W0p1
[,1] [,2]
[,3] [,4] [,5]
[1,] 0.1384736 0.1252125 0.2125997 0.5121692 0.01154493
> REMIN=W0p1%*%Medias
> REMIN
[,1]
[1,] -7.99282e-06
> VARMIN=W0p1%*%Covarianzas%*%W0p
> VARMIN
[,1]
[1,] 0.0001147484
> mu=matrix(Medias)
> sigma=matrix(Covarianzas,nrow=5)
> N=length(mu)
> one=rep(1,N)
> x=c(one,mu)
> Alo=matrix(x,ncol=2)
> Alo
[,1] [,2]
[1,] 1 0.0003415332
[2,] 1 0.0003631495
[3,] 1 0.0003173994
[4,] 1
-0.0002984070
[5,] 1
-0.0013340188
> maxi=REMIN+9*0.00003
> maxi
[,1]
[1,] 0.0002620072
> ngrid<-25
> muP<-seq(REMIN,maxi,length.out=ngrid)
> sigmaP<-muP
> sigmaP2<-muP
> wP<-matrix(0,N,ngrid)
> wP2<-wP
> IMatrix<-matrix(0,5,5)
> diag(IMatrix)<-1
> A<-cbind(Alo,IMatrix)
> for(i in 1:ngrid)
+ {
+ f<-rep(0,N)
+
b0<-c(1,muP[i])
+ b<-
c(b0,rep(-0.0000001,N))
+
+
sol<-solve.QP(sigma,f,A,b,meq=0)
+
wP2[,i]=sol$solution
+
sigmaP2[i]=wP2[,i]%*%sigma%*%wP2[,i]
+ }
> wP2
[,1] [,2] [,3] [,4]
[,5] [,6]
[1,] 0.13847363 0.140343354 0.142213077 0.1458630
0.1500200 0.1541770
[2,] 0.12521250 0.128715916 0.132219333 0.1383263
0.1451750 0.1520237
[3,] 0.21259969 0.216422758 0.220245828 0.2262234
0.2328147 0.2394061
[4,] 0.51216925 0.508169493 0.504169739 0.4895874
0.4719904 0.4543934
[5,] 0.01154493 0.006348479 0.001152024 -0.0000001
-0.0000001 -0.0000001
[,7] [,8] [,9]
[,10] [,11] [,12]
[1,]
0.1583340 0.1624910 0.1666480
0.1708050 0.1749620 0.1791190
[2,]
0.1588723 0.1657210 0.1725697
0.1794183 0.1862670 0.1931157
[3,]
0.2459974 0.2525887 0.2591801
0.2657714 0.2723627 0.2789541
[4,]
0.4367964 0.4191994 0.4016024
0.3840054 0.3664084 0.3488114
[5,] -0.0000001 -0.0000001 -0.0000001 -0.0000001
-0.0000001 -0.0000001
[,13] [,14] [,15]
[,16] [,17] [,18]
[1,]
0.1832760 0.1874330 0.1915900
0.1957470 0.1999040 0.2040610
[2,]
0.1999644 0.2068130 0.2136617
0.2205104 0.2273590 0.2342077
[3,]
0.2855454 0.2921367 0.2987281
0.3053194 0.3119107 0.3185021
[4,]
0.3312144 0.3136174 0.2960204
0.2784233 0.2608263 0.2432293
[5,] -0.0000001 -0.0000001 -0.0000001 -0.0000001
-0.0000001 -0.0000001
[,19] [,20] [,21]
[,22] [,23] [,24]
[1,]
0.2082180 0.2123750 0.2165320
0.2206890 0.2248460 0.2290030
[2,]
0.2410564 0.2479051 0.2547537
0.2616024 0.2684511 0.2752998
[3,]
0.3250934 0.3316847 0.3382761
0.3448674 0.3514587 0.3580501
[4,] 0.2256323 0.2080353
0.1904383 0.1728413 0.1552443
0.1376473
[5,] -0.0000001 -0.0000001 -0.0000001 -0.0000001
-0.0000001 -0.0000001
[,25]
[1,] 0.2331600
[2,] 0.2821484
[3,] 0.3646414
[4,] 0.1200503
[5,] -0.0000001
> sigmaP2
[1] 0.0001147484
0.0001147619 0.0001148022 0.0001148879 0.0001150601
[6] 0.0001153204
0.0001156687 0.0001161051 0.0001166295 0.0001172420
[11] 0.0001179425 0.0001187310 0.0001196076 0.0001205722
0.0001216249
[16] 0.0001227656 0.0001239943 0.0001253111 0.0001267159
0.0001282088
[21] 0.0001297897 0.0001314587 0.0001332157 0.0001350607
0.0001369938
> f<-0.01
> for(i in 1:ngrid)
+ {
+
if(sigmaP[i]==min(sigmaP)) imin<-i
+
if(sigmaP2[i]==min(sigmaP2)) imin2<-i
+ }
>
plot(sigmaP2[imin2:ngrid],muP[imin2:ngrid],pch=16,type="o",lty=1,
+
main="",xlab="Varianza",ylab="Rendimiento",
+
ylim=c(REMIN,maxi))
> cbind(sigmaP2,muP)
sigmaP2 muP
[1,] 0.0001147484
-7.992820e-06
[2,]
0.0001147619 3.257180e-06
[3,]
0.0001148022 1.450718e-05
[4,]
0.0001148879 2.575718e-05
[5,]
0.0001150601 3.700718e-05
[6,]
0.0001153204 4.825718e-05
[7,]
0.0001156687 5.950718e-05
[8,]
0.0001161051 7.075718e-05
[9,]
0.0001166295 8.200718e-05
[10,] 0.0001172420
9.325718e-05
[11,] 0.0001179425
1.045072e-04
[12,] 0.0001187310
1.157572e-04
[13,] 0.0001196076
1.270072e-04
[14,] 0.0001205722
1.382572e-04
[15,] 0.0001216249
1.495072e-04
[16,] 0.0001227656
1.607572e-04
[17,] 0.0001239943
1.720072e-04
[18,] 0.0001253111
1.832572e-04
[19,] 0.0001267159
1.945072e-04
[20,] 0.0001282088
2.057572e-04
[21,] 0.0001297897
2.170072e-04
[22,] 0.0001314587
2.282572e-04
[23,] 0.0001332157
2.395072e-04
[24,] 0.0001350607
2.507572e-04
[25,] 0.0001369938
2.620072e-04
> #########


No hay comentarios.:
Publicar un comentario