Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Obtener un código que graque el VaR (Value at Risk) y CVaR (Conditional Value at Risk)
[o ES (Expected Shortfall)] a un día de un portafolio de 100 pesos, que contenga partes iguales
en acciones de Alfa S.A.B. de C.V., en el bono M dic-24 y en dólares. (4 puntos VaR y 4 puntos
CVaR)
• El método para calcular estas medidas de riesgo deberá ser elegido por el alumno: simulación
histórica, paramétrico (varianzas y covarianzas) o Monte Carlo.
• Se utilizarán los precios desde diciembre de 2007 para los 3 activos mencionados, compartidos
desde un inicio en un archivo con formato csv.
• Se deberán considerar ventanas móviles de 100 días, es decir, se deberán calcular el VaR y CVaR
con los primeros 100 cambios logarítmicos del 2008, y estos se deberán comparar con la ganancia
real que se tuvo el día 101. Después, con los rendimientos del segundo día del 2008 y los siguientes
99, calcular VaR y CVaR y comparar con ganancia del día 102, y así sucesivamente. Grácando
al nal todos estos resultados.
• El nivel de conanza (α) deberá ser un parámetro que se pueda cambiar de manera fácil para
obtener un gráco diferente.
1
• Finalmente se deberá hacer un recuento del número de violaciones que se tienen del VaR con
respecto al total de observaciones y ver cómo se compara contra el nivel de conanza. (2 puntos)
−1
V aRα (X) = −FX (1 − α)
−1
Donde FX es la función de distribución inversa de X.
Mientras que el CVaR se dene como:
2
Así, vemos que realmente estos valores dependen de las hipótesis que se realicen acerca de la función
de distribución de X.
3. Simulación histórica
Supongamos se tiene un portafolio P con m activos, y los precios de estos para n días, sean:
N : valor nocional del portafolio.
k Si : precio del activo k a tiempo i ∈ {1, . . . , n}, k ∈ {1, . . . , m}.
k ri : rendimiento discreto del activo k a tiempo i.
P ri : redimiento del portafolio P a tiempo i.
percY (β) : percentil β de la distribución empírica de observaciones P de Y .
m
k w : peso del activo k en el portafolio, cumpliendo únicamente que k=1 k w = 1.
Así para i ∈ {2, . . . , n}, los rendimientos discretos del activo k son:
k Si− k Si−1
k ri =
k Si−1
Luego:
m
X
P ri = kw · k ri
k=1
CV aRα (X) = −N · z
En el caso particular de un bono las observaciones para R se pueden calcular como las diferencias
simples de las tasas, y entonces el VaR y CVaR se pueden aproximar como:
M acD · P (y) · z
CV aRα (X) = −
1 + ky
Cabe destacar que en este modelo no se hacen supuestos de ningún tipo sobre la distribución de
ganancias X.
3
4. Varianzas y covarianzas
Para este modelo la hipótesis importante es que los rendimientos R de un activo tienen distribución
normal con media µP y desviación estándar σP , así:
Z2
− 2α
e
CV aRα (X) = −N µP − σP √
(1 − α) 2π
µP = wT µ
Con wT = [w1 w2 · · · wm ] el vector de pesos de cada uno de los activos del portafolio. Y la desviación
del portafolio:
√
σP = wT Σw
Donde Σ es la matriz de varianzas y covarianzas, es decir, cada entrada es:
√
V aRT = V aR T
√
CV aRT = CV aR T
Siempre que los rendimientos sigan una distribución normal estándar con media cero, si esto último
no se cumple siempre se puede hacer una transformación.
5. Simulación Montecarlo
Utilizando el modelo de un movimiento browniano geométrico para el precio, se tiene que cambios
pequeños en el precio de un activo están denidos por:
dSt = µt St dt + σt St dz
Donde dz es una variable aleatoria normal con media cero y varianza dt. Discretizando y tomando µt
y σt constantes a través del tiempo:
∆St √
rt = = µ∆t + σ ∆t
St−1
Con una normal estándar. Para calcular la simulación Montecarlo en un tiempo T con l pasos se
T
debe considerar ∆t = l . Y suponiendo que se hacen n simulaciones:
4
l l r !
Y Y T T
ir = (1 +i rj ) − 1 = 1 + µ + σ −1
j=1 j=1
l l
√
V aRP = N wT Ωw
Donde cada entrada de Ω es:
6. Funciones en Python
Biblioteca pandas
Es una biblioteca útil para el manejo de data frames y realizar operaciones iterativas dentro de ellos.
Permite acceder a un archivo en formato csv especicando ruta y nombre para obetener un data frame.
data_frame . drop ( l a b e l s , a x i s )
Permite borrar las o columnas (axis = 0 o axis = 1) de un data frame con labels como un vector de
identicadores.
data_frame . pct_change ( )
data_frame . a p p l y ( f u n c t i o n , a x i s )
Calcula el resultado de aplicar una función denida anteriormente (por ejemplo function = lambda x:
sum(x) calcula la suma de las entradas de x) sobre las o columnas (axis = 0 o axis = 1).
data_frame . d t y p e s
data_frame . l o c [ a , b ]
Devuelve un dataframe con las las a y las columnas b, donde a y b son vectores de índices. Para
elegir una la o columna completa se debe utilizar el símbolo :.
Convierte una columna que se llama Date a formato date, f ormat se reere al formato original de la
fecha, por ejemplo f ormat =0 %d/%m/%Y 0 sería para fechas con el formato 24/05/1994.
5
Biblioteca numpy
Es una biblioteca útil para el manejo de arrays, incluyendo matrices, y operaciones que se pueden
realizar con ellas.
numpy . a s a r r a y ( x )
numpy . z e r o s ( (m, n ) )
numpy . o n e s ( k )
numpy . l o g ( a r r a y )
numpy . s o r t ( a r r a y )
numpy . p e r c e n t i l e ( a r r a y , a l f a )
numpy . a v e r a g e ( a r r a y )
numpy . c o v ( m a t r i x , r o w v a r , b i a s )
Calcula la matriz de varianzas y covarianzas de otra matriz o data frame. Rowvar es un booleano que
Veradero (default) implica que cada una de las las es la serie de una variable, Falso serían las columnas.
Bias es un booleano que Falso (default) implica el cálculo de estimadores insesgados, Veradero serían
sesgados.
numpy . d o t ( a r r a y 1 , a r r a y 2 )
numpy . t r a n s p o s e ( a r r a y )
Regresa un vector de tamaño size de normales aleatorias con media mean y desviación estándar sd.
Biblioteca math
math . e x p ( x )
math . p i
Da como resultado la constante del número de veces que cabe el diámetro de un círculo en su perímetro.
Otros
from scipy . stats import norm
norm . p p f ( b e t a )
Calcula la función de distribución inversa de una normal estándar para un valor beta.
array [ a , b ]
6
Obtiene el valor a en las las, b en las columnas de un array (los índices empiezan en 0). Se puede
utilizar en una sola dimensión omitiendo la segunda entrada.
Se obtiene una gráca de línea con x como el eje horizontal y y el eje vertical.
array [ l o g i c a r r a y ]
Cuando array y logicarray tienen las mismas dimensiones, se otienen solo los valores del array en los
que logicarray es verdadero. Por ejemplo:
x[x < 5]
Nos regresaría un array con todos los valores de x que son menores a 5.
7. Bibliografía
• Jorion, Philippe (2007). Value at Risk. McGraw Hill. Partes 2 y 3.
• Hull, John C. (2008). Risk Management and Financial Institutions. Wiley. Capítulos 11-13.