Valor en Riesgo (VaR) con R

4.8
(17)

En esta entrada comentaré sobre una de las medidas más utilizadas para medir la exposición al riesgo de mercado de una determinada posición o una cartera de inversión en activos financieros: Valor en Riesgo o VaR por sus siglas en inglés (Value at Risk), medida desarrollada a principio de los años 90s por JP Morgan y que es ampliamente usada en finanzas cuantitativas.

¿Qué es el Valor en Riesgo (VaR)?

El valor en riesgo (VaR) hace referencia a la perdida máxima posible de una posición o una cartera/portafolio de inversión durante cierto período de tiempo (horizonte de riesgo) con una probabilidad dada, p\%&s=2, (o un nivel de confianza determinado), bajo circunstancias normales de mercado.

Es decir, al suponer que un inversor ha comprado un activo el VaR indica:

  • La pérdida que será sobrepasada con una probabilidad p\%&s=2.
  • La pérdida que será sobrepasada un porcentaje p\%&s=2 de los días.
  • Con probabilidad 1-p\%&s=2 el dueño de dicha posición tendrá una pérdida no superior al VaR.

La medición del VaR se puede realizar tanto en términos de Pérdidas y Ganancias (P&G), esto es, en términos nominales, como támbién en términos de rentabilidades.

En este sentido, se puede decir que el VaR es un determinado percentil de la distribución de probabilidad prevista para las variaciones en el valor de mercado de la cartera en el horizonte de tiempo escogido.

Para su calculo, se debe especificar:

1. El horizonte temporal:

El VaR puede calcularse para períodos de inversión de un día o también superiores, como una semana o un mes. Para calcular el VaR de un banco se puede estar hablando de 1 año, pero en el caso de activos financieros, el VaR  generalmente se calcula a 1 día.

2. El nivel de significación p\%&s=2 o el nivel de confianza 1-p\%&s=2:

Es el nivel de probabilidad de que las pérdidas reales superen el importe del VaR dentro del horizonte temporal previamente establecido. Aunque puede rondar entre el 95% y 99%, se suele calcular con un 99% de confianza o, lo que es lo mismo, con un percentil del 1%.

Metodologías para el cálculo del Valor en Riesgo (VaR)

Existen principalmente tres enfoques para calcular el Valor en Riesgo (VaR):

1. VaR paramétrico:

Por este método, se supone que la distribución de las rentabilidades de los factores sigue una distribución normal multivariante y la cartera es función lineal de los factores. Su ventaja es que es tratable analíticamente, por lo que también se le conoce como VaR analítico, pero solo se puede generalizar a una pocas formas paramétricas, como la Normal, la t-Student, o mixturas de Normales o de t-Student.

2. VaR histórico:

Por este método, también denominado VaR por simulación histórica, se refiere al método para calcular el VaR a través de datos históricos, suponiendo que todas las variaciones de precios futuras de los activos ya se han observado en el pasado, esto es, se distribuirá de igual manera que los datos observados. Por lo tanto, los supuestos sobre la distribución de probabilidad que se realizan son mínimos.

3. VaR por Montecarlo:

Por este método, es posible obtener una aproximación del comportamiento de la rentabilidad esperada de la cartera. Se realiza mediante simulaciones por ordenador generando recorridos aleatorios de la rentabilidad de la cartera basados en determinados supuestos iniciales sobre las volatilidades y correlaciones de los factores de riesgo.

A continuación voy aplicar los cálculos del valor en riesgo (VaR) para activos financieros individuales, en este caso, será para la acción de Amazon.com, Inc. cuyo nemotécnico es AMZN, análisis que realizaré con el lenguaje de programación R (R Language).

Lo primero es descargar los precios y para ello utilizaré la libreria quantmod que descargará los datos de Yahoo Finance:

library(quantmod)

getSymbols("AMZN", from="2015-01-01", to="2019-07-31")
## [1] "AMZN"

Al comprobar, se puede ver que se han descargado los datos desde enero 2 de 2015 hasta julio 30 de 2019.

head(AMZN)
##            AMZN.Open AMZN.High AMZN.Low AMZN.Close AMZN.Volume
## 2015-01-02    312.58    314.75   306.96     308.52     2783200
## 2015-01-05    307.01    308.38   300.85     302.19     2774200
## 2015-01-06    302.24    303.00   292.38     295.29     3519000
## 2015-01-07    297.50    301.28   295.33     298.42     2640300
## 2015-01-08    300.32    303.14   296.11     300.46     3088400
## 2015-01-09    301.48    302.87   296.68     296.93     2592400
##            AMZN.Adjusted
## 2015-01-02        308.52
## 2015-01-05        302.19
## 2015-01-06        295.29
## 2015-01-07        298.42
## 2015-01-08        300.46
## 2015-01-09        296.93
tail(AMZN)
##            AMZN.Open AMZN.High AMZN.Low AMZN.Close AMZN.Volume
## 2019-07-23   1995.99   1997.79  1973.13    1994.49     2703500
## 2019-07-24   1969.30   2001.30  1965.87    2000.81     2631300
## 2019-07-25   2001.00   2001.20  1972.72    1973.82     4136500
## 2019-07-26   1942.00   1950.90  1924.51    1943.05     4927100
## 2019-07-29   1930.00   1932.23  1890.54    1912.45     4493200
## 2019-07-30   1891.12   1909.89  1883.48    1898.53     2910900
##            AMZN.Adjusted
## 2019-07-23       1994.49
## 2019-07-24       2000.81
## 2019-07-25       1973.82
## 2019-07-26       1943.05
## 2019-07-29       1912.45
## 2019-07-30       1898.53

Selecciono los precios de cierre ajustados:

AMZN <- AMZN[,"AMZN.Adjusted"]

Grafico los precios utilizando la libreria PerformanceAnalytics:

library(PerformanceAnalytics)

chart.TimeSeries(AMZN, col="darkgreen", 
                 legend.loc = "bottomright", 
                 main="Evolucion de la acción de AMAZON")

plot of chunk unnamed-chunk-36

Con R, el VaR se puede calcular de diferentes formas para cada unos de los tres métodos antes expuestos, cálculos que se pueden realizar por fórmulas o con funciones incorporadas en algunas librerias del programa, aquí utilizaré la función VaR de la libreria PerfomanceAnalytics.

Antes de comenzar con cada método, calculo los retornos o rendimientos, tal como lo expliqué en una entrada anterior Cálculo de rentabilidades con R:

AMZN.r <- diff(log(AMZN))

Elimino la primera fila que se ha quedado vacía al aplicar diferencias:

AMZN.r<- AMZN.r[-1]

Grafico los rendimientos:

chart.TimeSeries(AMZN.r, col="darkgreen", 
                 legend.loc = "bottomright", 
                 main="Evolucion de los rendimientos de AMAZON")

plot of chunk unnamed-chunk-39

Determino el valor invertido o a invertir en cada activo en unidades monetarias, supongamos 10.000 EUR y establezco el nivel de probabilidad del 1%, esto es, un nivel de confianza del 99%:

Valor <- 10000
p <- 0.01

Cálculo del VaR paramétrico o analítico

Para calcular el VaR por el método paramétrico o analítico, considerando una distribución normal, también conocido como método delta-normal, con X \sim N(\mu,\sigma)&s=2 donde \mu&s=2 y \sigma&s=2 son los parámetros correspondientes a la media y la desviación estándar de la distribución.

Para este cálculo, hay que encontrar un umbral T&s=2 que permita que la probabilidad de que todos los datos sean más grandes que esto sea \alpha&s=2 (\alpha&s=2 es el nivel de significación).

La función estándar de distribución normal acumulativa es:

P (X\leq\frac{T-\mu}{\sigma}) = F(T) = 1-\alpha&s=2

Por lo que habría que aplicar la inversa de la función de distribución:

\frac{T-\mu}{\sigma} = F^{-1}(1-\alpha) \rightarrow T= \mu+\sigma \cdot F^{-1}(1-\alpha)&s=2

AMZN.m <- mean(AMZN.r)
AMZN.s <- sd(AMZN.r)
AMZN.Par <- -qnorm(0.01, AMZN.m, AMZN.s)
AMZN.Par
## [1] 0.041996
AMZN.Par.1 <- AMZN.Par*Valor
AMZN.Par.1
## [1] 419.96

Lo anterior, también se puede obtener mediante la siguiente fórmula:

VaR = T = |\mu + \sigma \cdot F^{-1}(1-\alpha)|&s=2

formula.VaR <- -(mean(AMZN.r) + sd(AMZN.r) *-qnorm(0.99,0,1))
formula.VaR
## [1] 0.041996
AMZN.Par.2 <- formula.VaR*Valor
AMZN.Par.2
## [1] 419.96

Con la función VaR de la libreria de PerfomanceAnalytics, este método se denomina “método Gaussiano”:

AMZN.Par.3 <- VaR(AMZN.r, p=.99, method="gaussian")
-AMZN.Par.3 *Valor
##     AMZN.Adjusted
## VaR      419.7705

Por consiguiente, si se tienen invertidos 10.000 EUR, el VaR por el método paramétrico o analítico de la acción de AMAZON es:

  • Al calcularse por la primera forma (AMZN.Par.1) es de 419,96 EUR.
  • Al calcularse por la segunda forma (AMZN.Par.2) es de 419,96 EUR.
  • Al calcularse por la tercera forma (AMZN.Par.3) es de 419,7705 EUR.

Lo anterior, significa que la probabilidad de perder más de esa cantidad en un día es del 1%, o lo que es lo mismo, la acción de AMAZON con un nivel de confianza del 99% no perderá más que esa cantidad en un día.

Por último, grafico un histograma con los rendimientos de AMZN, donde se puede apreciar la distribución real y ubico el Valor en Riesgo (AMZN.Par.3):

hist(AMZN.r, main="Histograma de los rendimientos de Amazon", 
     col="grey", 
     xlab="Rendimientos",
     ylab="Frecuencia relativa")
abline(v=AMZN.Par.3, col="red", lwd=3, lty=2)

plot of chunk unnamed-chunk-44

¿Te ha parecido útil? ¡Puntúa esta entrada!

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.8 / 5. Recuento de votos: 17

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

3 comentarios en “Valor en Riesgo (VaR) con R”

    1. Conney Marulanda López

      ¡Hola!
      Lamento la demora en responder; he estado reorganizando Finanzas Zone, pero ya está de vuelta.
      ¡Gracias por tu interés y tu comentario!
      Por ahora, no ofrezco cursos por Zoom, pero estoy trabajando en ello. Para más detalles, por favor, escribe a info@finanzaszone.com.
      Te invito a quedarte atento a nuestras actualizaciones, y espero verte en los cursos! 🙂
      Un saludo,
      Conney

  1. Muy interesante. Tengo dos preguntas: ¿Cuánto tiempo debe tener el histórico para que el cálculo sea el ideal?, ¿hay algún método que pondere las fechas para dar mayor importancia a los fechas actuales con el fin de que la información muy antigua no afecte al cálculo?.
    Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Facebook
Twitter
LinkedIn
Scroll al inicio