0% encontró este documento útil (0 votos)
6 vistas15 páginas

Análisis de Portafolios y CAPM en R

libro de finanzas

Cargado por

David Garcia
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas15 páginas

Análisis de Portafolios y CAPM en R

libro de finanzas

Cargado por

David Garcia
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Actividad 5

Paredes Garcia Jose David

2024-06-09

1. Información estadística relativa al retorno de tres activos se presenta en la


siguiente tabla,
Ri µi σi ρi,j
R1 0.20 0.25 ρ1,2 = 0.3
R2 0.13 0.28 ρ1,3 = 0.15
R3 0.17 0.20 ρ2,3 = 0.00

1.1 Obtener frontera de carteras que minimizan el riesgo y graficar.


Partiendo del portafolio del minimo riesgo, en donde la ecuacion a minimizar es:

min σp2 = wT Σw

Sujeto a
wT 1 = 1
wT µ = µ¯p
Realizando el procedimiento, obtenemos que la frontera de portafolio con minima varianza, esta dado por la
ecuacion parabolica:
1 1
σp2 = (C − B µ¯p ) + (Aµ¯p − B)µ¯p
△ △
Aµ¯p 2 − 2B µ¯p + C
σp2 =

En donde:
A = 1T Σ−1 1
B = 1T Σ−1 µ
C = µT Σ−1 µ
En donde:  
1
1 = 1
1
 
0.20
µ = 0.13
0.17
 
X 0.0625 0.026 0.034
=  0.026 0.0784 0.0221
0.034 0.0221 0.04

1
Haciendo uso de R  
−1
X 30.475 −3.3219 −24.068
= −3.3219 15.470 −5.723 
−24.06 −5.723 48.620
A = 1T Σ−1 1 = 28.3377
B = 1T Σ−1 µ = 4.6529
C = µT Σ−1 µ = 0.8232
Recordamos la ecuacion
Aµ¯p 2 − 2B µ¯p + C
σp2 =

△= AC − B 2 = 1.6781
1.6781σp2 = 28.3377µ¯p 2 − 9.3058µ¯p + 0.8232
1.6781σp2 − 28.3377µ¯p 2 + 9.3058µ¯p − 0.8232 = 0

{r, results = ‘hide’} #portafolio de markowitz i <- matrix(c(1,1,1),3);i mu <- matrix(c(0.20,0.13,0.17),3);


mu S <- matrix(c(0.0625,0.026,0.034,0.026,0.0784,0.0221,0.034,0.0221,0.04),3); S #resultados matrices Si <-
solve(S) %% i; Si Su <- solve(S) %% mu; Su
#portafolio de markowitz
i <- matrix(c(1,1,1),3);i

## [,1]
## [1,] 1
## [2,] 1
## [3,] 1
mu <- matrix(c(0.20,0.13,0.17),3); mu

## [,1]
## [1,] 0.20
## [2,] 0.13
## [3,] 0.17
S <- matrix(c(0.0625,0.026,0.034,0.026,0.0784,0.0221,0.034,0.0221,0.04),3); S

## [,1] [,2] [,3]


## [1,] 0.0625 0.0260 0.0340
## [2,] 0.0260 0.0784 0.0221
## [3,] 0.0340 0.0221 0.0400
#resultados matrices
Si <- solve(S) %*% i; Si

## [,1]
## [1,] 3.084714
## [2,] 6.424617
## [3,] 18.828392
Su <- solve(S) %*% mu; Su

## [,1]
## [1,] 1.571536
## [2,] 0.373719
## [3,] 2.707714

2
A <- c(t(i) %*% solve(S) %*% i); A

## [1] 28.33772
B <- c(t(i) %*% solve(S) %*% mu); B

## [1] 4.65297
C <- c(t(mu) %*% solve(S) %*% mu); C

## [1] 0.8232022
D <- A*C-Bˆ2; D

## [1] 1.677548
#Frontera eficiente
fun <- function (s.p, mu.p){
D *s.pˆ2 -A*mu.pˆ2+2*B*mu.p-C
}

s.p<-seq(0,2,length=100)
mu.p<-seq(0,1,length=100)
z <- outer(s.p, mu.p, fun)

contour(x=s.p, y=mu.p, z=z,levels=0, drawlabels=F,


lwd=3, xlab=expression(sigma[p]),
ylab= expression(mu[p]),col="blue")
grid()
text(1,0.9,"Frontera",cex=1, col="black")

3
1.0

Frontera
0.8
0.6
µp

0.4
0.2
0.0

0.0 0.5 1.0 1.5 2.0

σp

1.2 Dado µ¯p = 0.18 determinar el portafolio óptimo y su riesgo, exhibir resultado en gráfica.
Haciendo uso de R, tenemos:
#portafolio de markowitz
i <- matrix(c(1,1,1),3);i

## [,1]
## [1,] 1
## [2,] 1
## [3,] 1
mu <- matrix(c(0.20,0.13,0.17),3); mu

## [,1]
## [1,] 0.20
## [2,] 0.13
## [3,] 0.17
S <- matrix(c(0.0625,0.026,0.034,0.026,0.0784,0.0221,0.034,0.0221,0.04),3); S

## [,1] [,2] [,3]


## [1,] 0.0625 0.0260 0.0340
## [2,] 0.0260 0.0784 0.0221
## [3,] 0.0340 0.0221 0.0400
#resultados matrices
Si <- solve(S) %*% i; Si

4
## [,1]
## [1,] 3.084714
## [2,] 6.424617
## [3,] 18.828392
Su <- solve(S) %*% mu; Su

## [,1]
## [1,] 1.571536
## [2,] 0.373719
## [3,] 2.707714
A <- c(t(i) %*% solve(S) %*% i); A

## [1] 28.33772
B <- c(t(i) %*% solve(S) %*% mu); B

## [1] 4.65297
C <- c(t(mu) %*% solve(S) %*% mu); C

## [1] 0.8232022
D <- A*C-Bˆ2; D

## [1] 1.677548
#Frontera eficiente
fun <- function (s.p, mu.p){
D *s.pˆ2 -A*mu.pˆ2+2*B*mu.p-C
}

s.p<-seq(0,0.8,length=100)
mu.p<-seq(0,0.4,length=100)
z <- outer(s.p, mu.p, fun)

contour(x=s.p, y=mu.p, z=z,levels=0, drawlabels=F,


lwd=3, xlab=expression(sigma[p]),
ylab= expression(mu[p]),col="red")
grid()
points(sqrt(S[1,1]), mu[1,1], pch=20, cex=1.5)
text(0.25,0.22,"w=(1,0,0)", cex=0.5)
points(sqrt(S[2,2]), mu[2,1], pch=20, cex=1.5)
text(0.28,0.1,"w=(0,1,0)", cex=0.5)
points(sqrt(S[3,3]), mu[3,1], pch=20, cex=1.5)
text(0.2,0.15,"w=(0,0,1)", cex=0.5)

#Portafolio eficiente con retorno esperado de 18%

W <- ( (C-0.18*B)/D)*Si+((0.18*A-B)/D)*Su;W

## [,1]
## [1,] 0.39316591
## [2,] 0.04487443
## [3,] 0.56195965
a <- sqrt((0.18ˆ2*A-0.36*B+C)/D)
sqrt(t(W) %*% S %*% W)

5
## [,1]
## [1,] 0.1987643
points(a,0.18,pch=20, cex=1.5, col="blue")
text(0.18,0.2,"w(0.393,0.044,0.561)", cex=0.7, col="blue")
text(0.4,0.37,"Portafolio 18%",cex=1, col="black")
0.4

Portafolio 18%
0.3

w=(1,0,0)
0.2
µp

w(0.393,0.044,0.561)

w=(0,0,1)
0.1

w=(0,1,0)
0.0

0.0 0.2 0.4 0.6 0.8

σp

El riesgo estad determinado por la siguiente funcion


R <- sqrt(t(W) %*% S %*% W); R

## [,1]
## [1,] 0.1987643

1.3 Determinar portafolio de mínima varianza global y graficar resultado.

contour(x=s.p, y=mu.p, z=z,levels=0, drawlabels=F,


lwd=3, xlab=expression(sigma[p]),
ylab= expression(mu[p]),col="blue")
grid()

#portafolio de minima varianza


w.g <- Si / A; w.g

## [,1]
## [1,] 0.1088554
## [2,] 0.2267161
## [3,] 0.6644285

6
s.g <- 1/sqrt(A)
mu.g <- t(w.g) %*% mu
points(s.g, c(mu.g), pch=20,cex=1.5, col="brown")
text(0.2,0.18," min global",cex=0.7, col="black")
text(0.4,0.37,"Portafolio de minima varianza",cex=1, col="black")
0.4

Portafolio de minima varianza


0.3
0.2
µp

min global
0.1
0.0

0.0 0.2 0.4 0.6 0.8

σp

1.4 Sea Rf = 0.05, calcular ratio de Sharpe y línea de asignación de capital.


Dada la definicion del retorno esperado de un portafolio con un activo riesgoso y uno libre de riesgo, tenemos:
µp = wµ1 + (1 − w)Rf y dado l activo riesgoso, tenemos σp = wσ1 , tenemos:
µ1 − Rf
µp − Rf = σp ( )
σ1
µ −R
Esta ecuacion es definida como linea de asignacion de capital definida en el plano (µp , σp ) y la fraccion ( 1σ1 f )
como rratio shape. para el primer activo riesgoso, tenemos los siguientes valores: µ1 = 0.2 y σ1 = 0.25,
tenemos la ecuacion como:
3
µp − 0.05 = σp
5
library(ggplot2)
df <- [Link](sigma=c(0, 0.125, 0.5),
mu=c(0.05, 0.125, 0.35))
head(df)

## sigma mu
## 1 0.000 0.050
## 2 0.125 0.125

7
## 3 0.500 0.350
ggplot(data=df, aes(x=sigma, y=mu, group=1)) +
geom_line()+
geom_point()

0.3
mu

0.2

0.1

0.0 0.1 0.2 0.3 0.4 0.5


sigma

1.5 Representar en gráfica carteras no diversificadas y punto cuado pondera


por igual los activos.
contour(x=s.p, y=mu.p, z=z,levels=0, drawlabels=F,
lwd=3, xlab=expression(sigma[p]),
ylab= expression(mu[p]),col="pink")
grid()

points(0,0.05, pch=20,cex=1.5, col="red")


points(0.125,0.125, pch=20,cex=1.5, col="red")
points(0.5,0.35, pch=20,cex=1.5, col="red")
points(s.g, c(mu.g), pch=20,cex=1.5, col="yellow")

8
0.4
0.3
0.2
µp

0.1
0.0

0.0 0.2 0.4 0.6 0.8

σp

2. Hay n activos cuyos retornos no están correlacionados, ρi,j = 0 para todo i̸=j.
Además, todos ofrecen la misma tasa de retorno esperada µi = µ pero tienen distinto riesgo, σi ̸= σj . Determi-
nar el valor w∗ y el riesgo del portafolio. La cartera del inversioniasta
P esta dada por; p = wf af , w1 , a1 , ..., wn an
y la riqueza esta distribuida de la siguiente manera:w f + w i = 1 con un retorno esperadp de portafolio,
µp = wf Rf + wi µi y una varianza de σp2 = var(wf Rf + wi µi ) = W T ΣW Dado que no hay correlacion,
P P
tenemos qie cov(Rf , Ri ) = 0 entonces el problema se reduce a:

minσp2 = W T ΣW

[Link] + W T 1 = 1
[Link] Rf + W T µ = µ¯p
Agrupando terminos, tenemos: X
µp − Rf = (µi − Rf )wi

µp − Rf = (µi − Rf 1)T w
minσp2 = W T ΣW
S.aµp − Rf = (µi − Rf 1)T w
El lagrangiano asociado queda:
1 T
L= W σW − λ[(µ − Rf 1)T W − (µp − Rf )]
2
con condicion:
w = λΣ−1 (µ − Rf 1)

9
De tal forma que
µp − Rf
λ=
E
Con una varianza de:
(µp − Rf )2
σp2 =
E
Despejando a √
µp = Rf ± Eσp
De
W T 1 = λ(µ − Rf 1)T Σ−1 1 = 1
Despejando y sustituyendo tenemos:
Σ−1 (µ − Rf 1)
We =
(µ − Rf 1)T Σ−1 1
Retomando un poco
µi − Rf = βi (µp − Rf )
En donde
cov(Ri , Rf )
βi =
σp2
cov(Ri , Rp ) = cov(Ri , w1 R1 + .... + wn Rn )
cov(Ri , Rp ) = wi σi2 + w1 wi σ1i + .. + wn σ1i
Calculando de derivada parcial, respecto al riesgo.
√ µp − Rf
E=
σp

Teniendo como linea de seguridad:


µi = Rf + βi (µp − Rf )
Dado que no existe correlacion β = 0

µi = Rf
Poniendo como referencia la siguiente ecuacion como linea de seguridad

(Ri − Rf ) = αi + βi (Rp − Rf ) + Ei

Dado que β = 0, tenemos que: Rp − Rf = 0, entonces: Rp = Rf Para W

Σ−1 (µ − Rf 1)
We = =0
(µ − Rf 1)T Σ−1 1

3. Considerar los siguientes escenarios y valores del retorno de un activo riesgoso


Ri y de mercado Rp
Estado Probabilidad Ri Rp
w1 0.1 0.05 0.10
w2 0.3 0.0 0.14
w3 0.4 0.02 0.12
w4 0.2 0.04 0.16
\ Calcular α y β del CAPM.\

10
El modelo Capm satisface la siguiente igualdad

µi − Rf = βi (µp − Rf )

Recordando tambien que la linea de seguridad se puede expresar en funcion de la rentabilidad individual y de
mercado,mediante el siguiente modelo:

(Ri − Rf ) = λi + βi (Rp − Rf ) + εi

Donde la variable ε mide la diferencia entre (Ri − Rf ) con un valor esperado de E(Ri − Rf ) = αi + βi (Rp − Rf )
calculando el retorno esperado del mercado y su varianza, tenemos:
#Datos dados
W <- matrix(c(0.1,0.3,0.4,0.2),1); W

## [,1] [,2] [,3] [,4]


## [1,] 0.1 0.3 0.4 0.2
R_i<- matrix(c(-0.05,0,0.02,0.04),4);R_i

## [,1]
## [1,] -0.05
## [2,] 0.00
## [3,] 0.02
## [4,] 0.04
R_p <- matrix(c(0.1,0.14,0.12,0.16),4); R_p

## [,1]
## [1,] 0.10
## [2,] 0.14
## [3,] 0.12
## [4,] 0.16
#resultados matrices
R_pp <- W %*% R_p; R_pp

## [,1]
## [1,] 0.132
mu.p <- W %*% R_i; mu.p

## [,1]
## [1,] 0.011
C <- cov(R_i,R_p); C

## [,1]
## [1,] 0.0008333333
v<- var(R_i,R_p); v

## [,1]
## [1,] 0.0008333333
B<- C/v; B

## [,1]
## [1,] 1

11
A <- mu.p-B*R_pp; A

## [,1]
## [1,] -0.121
library(ggplot2)
df <- [Link](sigma=c(0.1,0.14,0.12,0.16),
mu=c(-0.05,0,0.02,0.04))
head(df)

## sigma mu
## 1 0.10 -0.05
## 2 0.14 0.00
## 3 0.12 0.02
## 4 0.16 0.04
ggplot(data=df, aes(x=sigma, y=mu, group=1))+
geom_point()

0.025

0.000
mu

−0.025

−0.050

0.10 0.12 0.14 0.16


sigma

Dado que el coeficiente β = 1 y α = −0.121


Por lo tanto el modelo CAPM queda dado por: µi = −0.121 + µp

12
4. Sea εi el error del mejor predictor lineal del activo αi respecto al portafolio
del mercado, demostrar que cov(Rp , εi ) = 0
Solucion\ Definamos al error del mejor predictor lineal como un conjunto de errores independientes, identicos
y normalmente distribuidos es decir N (0, σ 2 ) \ Por otro lado, tenemos la definicion de covarianza:
P
(xi − x̄)(yi − ȳ)
Cov(x, y) =
n
Otra manera de definirla es.
Cov(xy) = E(XY ) − E(X)E(Y )
Dado que Rp es independiente de εi podemos considerar a E(XY ) = E(X)E(Y ) Por lo que calculando la
covarianza queda que:
Cov(xy) = E(XY ) − E(X)E(Y )
Cov(xy) = E(X)EY ) − E(X)E(Y ) = 0

5. Hay dos activos con la siguiente información,


Activo Cantidad precio µi σi
α1 100 1.50 15% 15%
α2 150 2.00 12% 9%
1
\ correlación entre activos ρ1,2 = 3 y también hay un activo libre de riesgo que satisface el modelo CAPM.

5.1 Calcular retorno esperado del portafolio de mercado.


Recordemos que, el retorno esperado del portafolio esta dado por:
X
µp = wf Rf + wi µi

Ci∗pi
Para el calculo de w, tenemos para cada w C1∗P 1+C2∗P 2
#Matrices
W<- matrix(c(0.33,0.66),1);W

## [,1] [,2]
## [1,] 0.33 0.66
mu <- matrix(c(15,12),2); mu

## [,1]
## [1,] 15
## [2,] 12
sig <- matrix(c(15,9),2); sig

## [,1]
## [1,] 15
## [2,] 9
s <- W %*%mu; s

## [,1]
## [1,] 12.87
Dada la ecuacion del retorno esperado del portafolio

µp = wf Rf + 12.87

13
5.2 Determinar desviación estándar del portafolio de mercado.
Mediante la formula de la vrianza, tenemos:
X
σp2 = var(wf Rf + wi Ri )

σp2 = W T ΣW

#Matrices
W<- matrix(c(0.33,0.66),1);W

## [,1] [,2]
## [1,] 0.33 0.66
W1 <- t(W)
mu <- matrix(c(15,12),2); mu

## [,1]
## [1,] 15
## [2,] 12
sig <- matrix(c(15,9),2); sig

## [,1]
## [1,] 15
## [2,] 9
S <- matrix (c(0.0225,0.018,0.018,0.0081),2); S

## [,1] [,2]
## [1,] 0.0225 0.0180
## [2,] 0.0180 0.0081
var <- W %*% S %*% W1 ; var

## [,1]
## [1,] 0.01381941
des <- sqrt(var); des

## [,1]
## [1,] 0.117556
La varianza es de 0.01381, por lo tanto, la desviacion es 0.117

5.3 Determinar el β de cada activo.


cov(R ,R )
i p
Recordando la ecuacion de β = V ar(R p)
Para el calculo de el primer beta
#Matrices
W<- matrix(c(0.33,0.66),1);W

## [,1] [,2]
## [1,] 0.33 0.66
W1 <- t(W)
mu <- matrix(c(15,12),2); mu

## [,1]
## [1,] 15
## [2,] 12

14
sig <- matrix(c(15,9),2); sig

## [,1]
## [1,] 15
## [2,] 9
s <- W %*% mu; s

## [,1]
## [1,] 12.87
c <- cov(mu[1,1],s); c

## [,1]
## [1,] NA
c1 <- cov(mu[2,1],s); c1

## [,1]
## [1,] NA
Dado que los valores de la covarianza y el retorno del portafolio son nulos, entonces la beta es igual a 0 en
ambos casos.

5.4 Determinar tasa libre de riesgo.


Dado que no existe correlacion entre ninguno de los activos y el retorno del portafolio, la tasa libre de riesgo
es igual a la tasa del retorno esperada.

Rp = wR1 + (1 − w)R2

Rp = 0.33(15) + (0.66)12 = 12.87

15

También podría gustarte