Parar cualquier inversionista es muy importante diferenciar y saber calcular la rentabilidad o rendimiento de una inversión u activo financiero, por lo tanto, en esta entrada comentaré sobre los rendimientos de activos financieros y como no podía ser de otra forma, realizaré los cálculos con el lenguaje de programación R (R Language).
Además, en muchas de las entradas anteriores aplico rentabilidad logarítmica sin explicar el por qué, y aquí quiero profundizar un poco sobre ello.
Vamos a analizar la acción de Netflix, Inc. (NFLX) y descargaré los precios desde Yahoo Finance con la librería quantmod:
library(quantmod)
getSymbols("NFLX", from="2015-01-01", to="2019-07-31")
## [1] "NFLX"
head(NFLX)
## NFLX.Open NFLX.High NFLX.Low NFLX.Close NFLX.Volume ## 2015-01-02 49.15143 50.33143 48.73143 49.84857 13475000 ## 2015-01-05 49.25857 49.25857 47.14714 47.31143 18165000 ## 2015-01-06 47.34714 47.64000 45.66143 46.50143 16037700 ## 2015-01-07 47.34714 47.42143 46.27143 46.74286 9849700 ## 2015-01-08 47.12000 47.83571 46.47857 47.78000 9601900 ## 2015-01-09 47.63143 48.02000 46.89857 47.04143 9578100 ## NFLX.Adjusted ## 2015-01-02 49.84857 ## 2015-01-05 47.31143 ## 2015-01-06 46.50143 ## 2015-01-07 46.74286 ## 2015-01-08 47.78000 ## 2015-01-09 47.04143
tail(NFLX)
## NFLX.Open NFLX.High NFLX.Low NFLX.Close NFLX.Volume ## 2019-07-23 311.44 313.50 306.00 307.30 9171100 ## 2019-07-24 310.51 319.99 307.25 317.94 11961800 ## 2019-07-25 318.86 327.69 316.30 326.46 10798500 ## 2019-07-26 328.79 336.00 327.50 335.78 10847500 ## 2019-07-29 335.98 336.40 328.77 332.70 5782800 ## 2019-07-30 329.20 329.65 323.23 325.93 6029300 ## NFLX.Adjusted ## 2019-07-23 307.30 ## 2019-07-24 317.94 ## 2019-07-25 326.46 ## 2019-07-26 335.78 ## 2019-07-29 332.70 ## 2019-07-30 325.93
Selecciono los precios de cierre ajustados:
NFLX <- NFLX[,"NFLX.Adjusted"]
Grafico los precios utilizando la librería PerformanceAnalytics:
library(PerformanceAnalytics)
chart.TimeSeries(NFLX, col="darkgreen",
legend.loc = "bottomright",
main="Evolucion de la acción de Netflix, Inc. (NFLX)")
Rentabilidad aritmética o simple
Si denotamos al precio de un activo al final del período , el rendimiento simple viene dado por la siguiente expresión:
Los datos descargados tiene formato de serie temporal, por lo tanto, primero creo un vector con ellos, extrayendo sólo los datos y los índices de las fechas con la función coredata:
NFLX_vector <- coredata(NFLX)
Ahoro aplico la formula:
n <- nrow(NFLX_vector)
NFLX_rend_simple_1 <- (NFLX_vector[2:n, 1] - NFLX_vector[1:(n - 1), 1]) / NFLX_vector[1:(n - 1), 1]
head(NFLX_rend_simple_1)
## [1] -0.050897025 -0.017120620 0.005191927 0.022188202 -0.015457744 ## [6] -0.031765320
Estos cálculos también se pueden hacer con la función Return.calculate():
NFLX_rend_simple_2 = Return.calculate(NFLX)
head(NFLX_rend_simple_2)
## NFLX.Adjusted ## 2015-01-02 NA ## 2015-01-05 -0.050897025 ## 2015-01-06 -0.017120620 ## 2015-01-07 0.005191927 ## 2015-01-08 0.022188202 ## 2015-01-09 -0.015457744
Rentabilidad logarítmica o rendimientos compuestos continuos
Los rendimientos compuestos en tiempo continuo tienen una relación aditiva entre los períodos, por lo que muchas veces, resulta más útil el calculo de éstos que de los rendimientos simples, donde la relación entre los períodos es multiplicativa.
Con las rentabilidades simples, la rentabilidad anual de una inversión es la media geométrica de los rendimientos mensuales.
En este sentido, se debe tener en cuenta que el producto de variables normalmente distribuidas no es una variable normal, por el contrario, la suma de las variables normales no correlacionadas si es normal.
Por lo anterior, es mejor utilizar la suma de rentabilidades que la multiplicación y con la rentabilidad logarítmica sí se puede sumar la rentabilidad de los diferentes periodos para obtener la rentabilidad total, además se disminuye la complejidad algorítmica, ya que se podría aplicar el teorema central del límite.
La relación aditiva entre los períodos viene denotada por la siguiente expresión:
Donde
Por consiguiente,
Por otro lado, la rentabilidad logarítmica es ampliamente usada en finanzas cuantitativas ya que permite calcular probabilidades que se basan en una distribución normal, teniendo en cuenta que estos rendimientos no pueden ser inferior a -1.
En R, estos se pueden calcular fácilmente: uso la función log() para calcular los logaritmos naturales a los precios y aplico diferencias con la función diff() para así obtener los retornos compuestos en tiempo continuo.
NFLX_rend_cc_1 <- diff(log(NFLX))
head(NFLX_rend_cc_1)
## NFLX.Adjusted ## 2015-01-02 NA ## 2015-01-05 -0.052237977 ## 2015-01-06 -0.017268873 ## 2015-01-07 0.005178495 ## 2015-01-08 0.021945626 ## 2015-01-09 -0.015578461
Y con la función Return.calculate():
NFLX_rend_cc_2 = Return.calculate(NFLX, method="log")
head(NFLX_rend_cc_2)
## NFLX.Adjusted ## 2015-01-02 NA ## 2015-01-05 -0.052237977 ## 2015-01-06 -0.017268873 ## 2015-01-07 0.005178495 ## 2015-01-08 0.021945626 ## 2015-01-09 -0.015578461
Por último, grafico los rendimientos:
dataToPlot <- merge(NFLX_rend_simple_2, NFLX_rend_cc_2)
colnames(dataToPlot) = c("Simple", "CC")
plot.zoo(dataToPlot, main="Simple vs Compuesto Continuo", plot.type="single",
ylab="Rendimientos", lwd=2, col=c("black", "red"))
abline(h=0)
legend("bottomleft", legend=colnames(dataToPlot),
lty="solid", lwd=2, col=c("black", "red"))
my.panel <- function(...) {
lines(...)
abline(h=0)
}
plot.zoo(dataToPlot, main="Simple vs Compuesto Continuo", plot.type="multiple",
panel=my.panel, lwd=2, col=c("black", "red"))
¿Te ha parecido útil? ¡Puntúa esta entrada!
¡Haz clic en una estrella para puntuar!
Promedio de puntuación 4.5 / 5. Recuento de votos: 11
Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.