El riesgo se puede definri a la probabilidad de que ocurra un evento desfavorable o perdida, con la consiguente incertidumbre sobre sus consecuencias.Según Markowitz el riesgo de un activo individual no se mide simplemente por la volatilidad o la variabilidad de sus rendimientos, sino en el contexto de su contribución al riesgo total de una cartera.
\[ \sigma^2=\frac{1}{t-1} \sum_{i=1}^{T}(r_i -\bar{r})^2 \]
Los retornos acumulados se calculan apartir de\[ 1+r_{total}=\prod_{i=1}^T (1+r_i) \]
## Cargar la base de datos
Primero cargamos las respectivas libreria para extrae los datos de yahoo finance ,con library(quantmod), escoger tres activos de su preferencia para este caso,uno que tenga alto riesgo (SPY) y bonos (BIL) que tenga poco riesgo, y uno final de mi preferencia que sea mas volatil como los es “TSLA”, durante tres años este caso 2011 2012 2013. una breve descripcion de lso activos puede ser
TSLA (Tesla, Inc.):
SPY (SPDR S&P 500 ETF Trust):
TBills (Letras del Tesoro de EE. UU.):
data_spy=getSymbols("SPY",from="2010-12-31",
to="2014-01-01",
auto.assign = FALSE)
head(data_spy,3)
## SPY.Open SPY.High SPY.Low SPY.Close SPY.Volume SPY.Adjusted
## 2010-12-31 125.53 125.87 125.33 125.75 91218900 98.27119
## 2011-01-03 126.71 127.60 125.70 127.05 138725200 99.28712
## 2011-01-04 127.33 127.37 126.19 126.98 137409700 99.23242
tail(data_spy,3)
## SPY.Open SPY.High SPY.Low SPY.Close SPY.Volume SPY.Adjusted
## 2013-12-27 184.10 184.18 183.66 183.85 61814000 152.9700
## 2013-12-30 183.87 184.02 183.58 183.82 56857000 152.9451
## 2013-12-31 184.07 184.69 183.93 184.69 86119900 153.6690
data_tbill=getSymbols("BIL",from="2010-12-31",
to="2014-01-01",
auto.assign = FALSE)
head(data_tbill,3)
## BIL.Open BIL.High BIL.Low BIL.Close BIL.Volume BIL.Adjusted
## 2010-12-31 91.70 91.72 91.7 91.70 119650 81.45007
## 2011-01-03 91.70 91.72 91.7 91.72 126850 81.46780
## 2011-01-04 91.72 91.72 91.7 91.72 156750 81.46780
tail(data_tbill,3)
## BIL.Open BIL.High BIL.Low BIL.Close BIL.Volume BIL.Adjusted
## 2013-12-27 91.58 91.58 91.56 91.58 150600 81.34698
## 2013-12-30 91.58 91.58 91.56 91.58 83650 81.34698
## 2013-12-31 91.54 91.58 91.54 91.54 209300 81.31145
data_tsla=getSymbols("TSLA",from="2010-12-31",
to="2014-01-01",
auto.assign = FALSE)
head(data_tsla,3)
## TSLA.Open TSLA.High TSLA.Low TSLA.Close TSLA.Volume TSLA.Adjusted
## 2010-12-31 1.771333 1.816667 1.766667 1.775333 21268500 1.775333
## 2011-01-03 1.789333 1.800000 1.726667 1.774667 19245000 1.774667
## 2011-01-04 1.777333 1.796667 1.734667 1.778000 17811000 1.778000
tail(data_tsla,3)
## TSLA.Open TSLA.High TSLA.Low TSLA.Close TSLA.Volume TSLA.Adjusted
## 2013-12-27 10.35333 10.36667 10.053333 10.07467 81903000 10.07467
## 2013-12-30 10.07467 10.32067 10.050000 10.16267 67012500 10.16267
## 2013-12-31 10.15467 10.21333 9.910667 10.02867 63936000 10.02867
A continuación, establecemos que el retorno de cada elemento es el delta
entre los precios ajustados.
ret_spy=Delt(data_spy$SPY.Adjusted)
ret_bill=Delt(data_tbill$BIL.Adjusted)
ret_tsla=Delt(data_tsla$TSLA.Adjusted)
rets=cbind(ret_spy,ret_bill,ret_tsla)
head(rets,3)
## Delt.1.arithmetic Delt.1.arithmetic.1 Delt.1.arithmetic.2
## 2010-12-31 NA NA NA
## 2011-01-03 0.0103379485 0.0002177818 -0.0003751534
## 2011-01-04 -0.0005508784 0.0000000000 0.0018780833
#Cambiamos los titulos de las columnas
names(rets)=c("SPY","Tbill","TSLA")
calculamos los retornos acumulados.
rets[1,]=c(0,0,0)
gross_ret=1+rets
head(rets,3)
## SPY Tbill TSLA
## 2010-12-31 0.0000000000 0.0000000000 0.0000000000
## 2011-01-03 0.0103379485 0.0002177818 -0.0003751534
## 2011-01-04 -0.0005508784 0.0000000000 0.0018780833
head(gross_ret,3)
## SPY Tbill TSLA
## 2010-12-31 1.0000000 1.000000 1.0000000
## 2011-01-03 1.0103379 1.000218 0.9996248
## 2011-01-04 0.9994491 1.000000 1.0018781
cum_rets=cumprod(gross_ret)
head(cum_rets,3)
## SPY Tbill TSLA
## 2010-12-31 1.000000 1.000000 1.0000000
## 2011-01-03 1.010338 1.000218 0.9996248
## 2011-01-04 1.009781 1.000218 1.0015022
tail(cum_rets,3)
## SPY Tbill TSLA
## 2013-12-27 1.556611 0.9987344 5.674804
## 2013-12-30 1.556358 0.9987344 5.724372
## 2013-12-31 1.563723 0.9982981 5.648894
ademas los organizamos .seguidamente los graficamos.
plot(rets$TSLA,col="red",main="Retornos de S&P TSLA Tbils")
lines(rets$SPY,col="blue",lwd=4)
lines(rets$Tbill,col="purple",lwd = 4)
La visualización destaca la volatilidad y el riesgo, mostrando que TSLA es notablemente más volátil, seguido por SPY, mientras que los bonos TBILLS se presentan como la opción más segura.Ahora los retornos acumulados en una serie de tiempo
plot(cum_rets$TSLA,col = "red")
lines(cum_rets$SPY,col="blue",lwd = 4)
lines(cum_rets$Tbill,col="purple",lwd = 4)
En la evaluación para determinar el riesgo de estos activos, la varianza emerge como el indicador más efectivo.
head(rets,3)
## SPY Tbill TSLA
## 2010-12-31 0.0000000000 0.0000000000 0.0000000000
## 2011-01-03 0.0103379485 0.0002177818 -0.0003751534
## 2011-01-04 -0.0005508784 0.0000000000 0.0018780833
returns=rets[-1,]
head(returns,3)
## SPY Tbill TSLA
## 2011-01-03 0.0103379485 0.0002177818 -0.0003751534
## 2011-01-04 -0.0005508784 0.0000000000 0.0018780833
## 2011-01-05 0.0051975952 0.0000000000 0.0059994187
sd_spy=sd(returns$SPY)
head(sd_spy,3)
## [1] 0.01037977
sd_tbill=sd(returns$Tbill)
head(sd_tbill,3)
## [1] 0.0001558245
sd_tsla=sd(returns$TSLA)
head(sd_tsla,3)
## [1] 0.03652048
Al comparar los tres activos, evaluamos cuál exhibe una varianza muestral más alta. Asimismo, podemos examinar la contribución relativa de cada activo en este análisis. \[ \frac{Activo Riesgoso}{Activo no riesgoso} \]
o para este caso
\[ \frac{Activo(TSLA)}{Activo NR(T-bills)} \]
sd_tsla/sd_tbill
## [1] 234.3692
sd_tsla/sd_spy
## [1] 3.518427
sd_spy/sd_tbill
## [1] 66.61194
La interpretación es la siguiente: en comparación con TSLA, se observa un riesgo significativamente más alto, siendo TSLA 234 veces más riesgoso. Asimismo, la comparación entre TSLA y SPY revela que TSLA es 3.51 veces más riesgoso. Por último, en la comparación entre SPY y TBills, SPY es 66 veces más riesgoso que TBills. Además, mediante un histograma, podemos observar que la distribución exhibe un comportamiento leptocúrtico. Para enriquecer el análisis, incluimos una distribución normal para su comparación.
hist(returns$SPY,breaks = 50,)
sd_spy*100
## [1] 1.037977
sd_spy*3
## [1] 0.03113932
curve(dnorm(x, mean = mean(returns$SPY), sd = sd(returns$SPY)),
col = "blue", lwd = 2, add = TRUE)
hist(returns$TSLA,breaks = 50,)
sd_tsla*100
## [1] 3.652048
sd_tsla*3
## [1] 0.1095614
curve(dnorm(x, mean = mean(returns$TSLA), sd = sd(returns$TSLA)),
col = "red", lwd = 2, add = TRUE)
Ahora procedemos a analizar los riesgos anuales para los años 2011, 2012 y 2013, junto con sus respectivas desviaciones estándar.
head(returns,3)
## SPY Tbill TSLA
## 2011-01-03 0.0103379485 0.0002177818 -0.0003751534
## 2011-01-04 -0.0005508784 0.0000000000 0.0018780833
## 2011-01-05 0.0051975952 0.0000000000 0.0059994187
#ver como se estrcutura returns con sus respectivos datos y si son fechas y demas
str(returns)
## An xts object on 2011-01-03 / 2013-12-31 containing:
## Data: double [754, 3]
## Columns: SPY, Tbill, TSLA
## Index: Date [754] (TZ: "UTC")
## xts Attributes:
## $ src : chr "yahoo"
## $ updated: POSIXct[1:1], format: "2024-03-16 14:11:08"
sd_2011=apply(X=returns["2011"],MARGIN = 2,FUN = sd)
sd_2011
## SPY Tbill TSLA
## 0.014499368 0.000165178 0.032161063
## desviacione standar 2012
sd_2012=apply(X=returns["2012"],MARGIN = 2,FUN = sd)
sd_2012
## SPY Tbill TSLA
## 0.0080235279 0.0001438177 0.0335520243
## desviacione standar 2013
sd_2013=apply(X=returns["2013"],MARGIN = 2,FUN = sd)
sd_2013
## SPY Tbill TSLA
## 0.0069759436 0.0001582376 0.0427494557
Para unir todo por fila r-bind para unir por columa cbind
sd_all=rbind(sd_2011,sd_2012,sd_2013)
sd_all
## SPY Tbill TSLA
## sd_2011 0.014499368 0.0001651780 0.03216106
## sd_2012 0.008023528 0.0001438177 0.03355202
## sd_2013 0.006975944 0.0001582376 0.04274946
sd_all_anual=sqrt(252)*sd_all
sd_all_anual
## SPY Tbill TSLA
## sd_2011 0.2301703 0.002622119 0.5105410
## sd_2012 0.1273696 0.002283035 0.5326219
## sd_2013 0.1107397 0.002511945 0.6786266
Finalmente, a través de un gráfico de barras, logramos realizar una comparativa más clara entre las oscilaciones de cada activo.
barplot(t(sd_all_anual), beside = TRUE,
col = c("blue", "purple", "red"),
legend.text = c("SPY","TBills","TSLA"),
main = "Desv. Est. Anualizada",
args.legend = list(x = "top", bty = "n", ncol = 3, inset = c(0, -0.1)))
CONCLUSIONES