-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path03-portafolio.Rmd
126 lines (99 loc) · 3.24 KB
/
03-portafolio.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
---
output:
pdf_document: default
html_document: default
---
# Introducción a teoría de portafolio {#portafolio}
> IMPORTANTE: Aún no está del todo listo el formato en pdf, por lo que recomiendo verlo online.
## Librería IntroCompFinR
Para la teoría de portfolio vamos a utilzar la librería IntroCompFinR (**Intro** to **Comp**utational **Fin**ance in **R**) creado por el profesor Eric Zivot.
1. Debemos instalar primero las librerías que utiliza IntroCompFinR:
```r
if(!require("pacman")) install.packages("pacman")
p_load("PerformanceAnalytics","quadprog","xts")
```
2. Ya instaladas las dependencias, descargamos IntroCompFinR :
```r
install.packages("IntroCompFinR", repos="http://R-Forge.R-project.org")
```
### Funciones útiles de IntroCompFinR
Funciones | Descripciones |
|---------------------|--------------------------------------------------------------|
| getPortfolio | Crea un portafolio (objeto) |
| globalMin.portfolio | Computa el portafolio de mímina varianza |
| efficient.portfolio | Computa el portafolio de mímina varianza sujeto a un retorno |
| tangency.portfolio | Computa el portafolio tangente |
| efficient.frontier | Computa la frontera eficiente |
## Cargando la librería y la base de datos
Una vez la instalada la librería, procedemos a cargarla en conjunto con aquellas que utilizaremos en esta ayudantía:
```{r chunk3, echo=TRUE, eval=TRUE, message=FALSE, warning=FALSE}
if(!require("pacman")) install.packages("pacman")
p_load("IntroCompFinR","readxl","tidyverse")
```
Como ya está cargado `readxl` cargamos el archivo **stocks.xlsx**, que ya posee los retornos^[si quieren replicarlo vean los videos].
```{r chunk4, eval=TRUE, echo = TRUE}
# acá están los retornos ya calculados, para replicarlos vean el apunte
stocks <- read_xlsx("datasets/stocks.xlsx")
```
Considerando tres activos riesgosos (Starbucks, Nordstrom y Microsoft), definimos un vector columna $3x1$ el que tendrá los retornos y los pesos:
$$
\mathbf{R} =
\begin{pmatrix}
R_{a} \\
R_{b} \\
R_{c}
\end{pmatrix}
,
\mathbf{x} =
\begin{pmatrix}
x_{a} \\
x_{b} \\
x_{c}
\end{pmatrix}
$$
El vector de retornos esperados es:
$$
E[\mathbf{R}] = E
\begin{bmatrix}
\begin{pmatrix}
R_{a} \\
R_{b} \\
R_{c}
\end{pmatrix}
\end{bmatrix}
=
\begin{pmatrix}
E[R_{a}] \\
E[R_{b}] \\
E[R_{c}]
\end{pmatrix}
=
\begin{pmatrix}
\mu_{a} \\
\mu_{b} \\
\mu_{c}
\end{pmatrix}
=
\mathbf{\mu}
$$
La matriz $3x3$ de varianza y covarianza de los retornos es:
$$
var[\mathbf{R}] =
\begin{pmatrix}
\sigma^2_{a} & \sigma_{ab} & \sigma_{ac} \\
\sigma_{ab} & \sigma^2_{b} & \sigma_{bc} \\
\sigma_{ac} & \sigma_{bc} & \sigma^2_{c}
\end{pmatrix}
=
\Sigma
$$
Notar que la matriz de covarianza es simétrica ($\Sigma = \Sigma^{'}$).
Para construir las matrices anteriores en R:
```{r chunk5, echo=TRUE, eval=TRUE, message=FALSE}
# Promedio
mean <- apply(stocks[2:4], 2 , function(x) mean(x))
# Desviación Estandar
sd <- apply(stocks[2:4], 2 , function(x) sd(x))
# Covarianza
cov <- cov(stocks[2:4])
```