Valor en Riesgo (VaR) con R

Índice de Contenidos
[latexpage] 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, $latex 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 $latex p\%&s=2$.
  • La pérdida que será sobrepasada un porcentaje $latex p\%&s=2$ de los días.
  • Con probabilidad $latex 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 $latex p\%&s=2$ o el nivel de confianza $latex 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 $latex X \sim N(\mu,\sigma)&s=2$ donde $latex \mu&s=2$ y $latex \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 $latex T&s=2$ que permita que la probabilidad de que todos los datos sean más grandes que esto sea $latex \alpha&s=2$ ($latex \alpha&s=2$ es el nivel de significación). La función estándar de distribución normal acumulativa es: $latex 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: $latex \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: $latex 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
Facebook
Twitter
LinkedIn

3 respuestas

  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.

    1. ¡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@pruebassora.online.
      Te invito a quedarte atento a nuestras actualizaciones, y espero verte en los cursos! 🙂
      Un saludo,
      Conney

Deja una respuesta

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

Picture of Conney Marulanda López
Conney Marulanda López
Analista de Mercado. Certificada en el examen de Asesor Financiero de la CNMV por la Universidad Carlos III de Madrid. Apasionada por los mercados financieros, el emprendimiento y las nuevas tecnologías.
Artículos relacionados
Actualizado octubre 5, 2025

Valor en Riesgo (VaR) con R

Actualizado agosto 7, 2019

Análisis y optimización de portafolios con R (II)

Actualizado agosto 6, 2019

Análisis y optimización de portafolios con R (I)

Suscríbete y accede a contenido exclusivo, análisis semanales y oportunidades reales.
Sin spam. Sin humo. Solo lo que te interesa para que tomes mejores decisiones financieras. Te puedes borrar cuando quieras. Tu privacidad es sagrada.

Responsable: Conney Marulanda López. Finalidad de la recogida y tratamiento de los datos personales: 
Gestionar la solicitud que realizas en este formulario de contacto. 
Legitimación: Consentimiento. 
Destinatarios: Los datos personales serán tratados a través de los servidores de esta web, gestionados por un hosting español: Raiola Networks. No se cederá ni comunicará a ningún tercero tus datos, excepto en los casos legalmente previstos o cuando la prestación de un servicio implique la necesidad de una relación contractual con un Encargado de Tratamiento. 
Derechos: Podrás ejercer tus derechos de acceso, rectificación, limitación y suprimir los datos en info@finanzaszone.com así como el derecho a presentar una reclamación ante una autoridad de control.
Información adicional: En Política de privacidad de finanzaszone.com, encontrarás información adicional sobre la recopilación y el uso de su información personal, incluida información sobre acceso, conservación, rectificación, eliminación, seguridad, y otros temas.