1 Trabajo sobre Gestión del Riesgo Septiembre de 2009 Norman Giraldo Gómez Escuela de Ingeniería de la Organización. Universidad Nacional de Colombia e-mail: ndgirald@unalmed.edu.co Introducción El objetivo de este trabajo es realizar una práctica sobre las metodologías LDA y POT para el cálculo de provisones en riesgo operativo, utilizando funciones de las librerías de R. Cada grupo tiene asignado 1 grupo de datos para analizar, según la lista en la página web del curso (1). Puntos a Desarrollar En la memoria activa quedan dos variables con los datos para analizar: “fecha” y “perdida”. Los datos de pérdidas están en pesos. Para simplificar la notación llamamos v = perdida 3. Análisis POT. El objetivo es decidir si los datos pueden analizarse con el modelo POT. En caso tal, calcular la provisión anual. 1. Instalar y cargar los paquetes 3.1 Análisis exploratorio Carge las librerías siguientes con las instrucciones que aparecen a continuación library(MASS) # para fitdistrb library(truncgof) # para las pruebas ad y ks library(actuar) # para aggregateDist library(fBasics) # para asimetria y curtosis library(POT) # para ajuste GPD library(chron) # para función years 2. Leer los datos Use la instrucción siguiente para leer los 3 archivos de datos, cada uno con extensión “.dat”. Por ejemplo, si al grupo le tocó el archivo BL3, D = read.table("bl3.dat", header=T, stringsAsFactors=F) attach(D) Presente los resultados de las estadísticas básicas en una tabla: length(v) summary(v) skewness(v) kurtosis(v) # numero de datos # resumen estadisticas basicas # asimetria # curtosis Qué concluye inicialmente? Cuál tiene mayor asimetría y curtosis?. Grafique los 4 diagnósticos: histograma, boxplot, dotchart y densidad. El objetivo con estos gráficos es determinar si puede identificarse un umbral por encima del cual estarían las pérdidas más extremas. Reporte gráficas. Y si es el caso, un posible valor para el umbral. 3.2 Gráfica de la vida media residual 1 www.unalmed.edu.co/~ndgirald (en el vínculo “gestión del riesgo” ). El paso clave para aplicar el modelo POT es determinar el umbral u. La librería POT 2 provee la función mrlplot para la vida media residual. Reporte la gráfica x11() par(mfrow = c(1,1)) mrlplot(v) La librería POT tiene la función “fitgpd” para estimar el modelo Pareto Generalizado, a partir de los datos de pérdidas operacionales y del umbral escogido. Programe: 3.3 Análisis de la gráfica. 1) Si la gráfica muestra una tendencia decreciente se recomienda realizar un análisis LDA porque los datos no son extremos. 2) Si la gráfica muestra una tendencia creciente se recomienda un análisis POT. En este caso, determine si existe un posible umbral u, usando la sugerencia del artículo de Moscadelli: detecte una sección de línea recta en la gráfica la vida media residual. La abscisa donde comienza es un posible valor del umbral. Si no resulta la sugerencia, escoja como umbral uno de los percentiles, que se calculan con: mle = fitgpd(v, u, "mle")$param ad = fitgpd(v, u, "mgf", stat = "AD")$param sigma = mle[1] xi = mle[2] si el valor de xi es negativo, usar la alternativa: ad = fitgpd(v, u, "mgf", stat = "AD")$param sigma = ad[1] xi = ad[2] Reporte el valor de los parámetros de la distribución GPD estimados: sigma y xi. 3.5 Examen del ajuste del modelo quantile(v,probs=c(65,75,85,95,90)/100) Decida si el modelo GPD resultó adecuado para los excesos por encima del umbral. coloque, por ejemplo, u = quantile(v, probs = 90/100) 1) Use las pruebas gráficas: determine cuántos datos quedan por encima del umbral. nu = sum(v >= u) (nu) escoja u tal que el número de datos no sea menor de 30. Genere los excedente yi = instrucción: Diagrama de cuantiles x11() par(mfrow=c(1,1)) x.teo<-rgpd(n=length(y), loc = 0, scale = mle[1], shape = mle[2]) qqplot(x.teo,y,main="QQ-plot distr. GPD") abline(0,1) xi – u con la y = v[v > u]-u 3.4. Ajuste de la distribución Pareto Generalizada con los datos de exceso sobre el umbral. Decisión: si los puntos aparecen muy alejados de la línea recta, no se acepta el modelo GPD para los excedentes. En caso contrario, sí. 3 La gráfica acumulada acumulada Moscadelli 23,24 ). de la función de distribución estimada versus la distribución empírica. (ver el artículo de en las Figuras 2-5 de las pags. x11() par(mfrow=c(1,1)) ejex = seq(0,max(y),length.out = 100) plot(ejex, pgpd(ejex, loc = 0, scale = mle[1], shape = mle[2]), type="l", col="red", main="ECDF y GPD CDF") plot(ecdf(y),add=TRUE,verticals= TRUE, do.points = FALSE) D1 = D[ which(v > u), ] attach(D1) fc = years(fecha) tf = table(fc) Reporte la gráfica del número de casos de RO por año y el promedio anual barplot(tf) (mean(tf)) NOTA: si hay un año incompleto es mejor excluírlo. Modifique el archivo D1 si ése es el caso. 3.8 Cálculo del Capital en Riesgo, CaR Decisión : si la línea continua está cercana de la línea escalonada se acepta la distribución GPD para los excedentes. En caso contrario, se rechaza. Reporte el capital en riesgo 2) Use la prueba KS . con medida = ES y MS ks.test(y,"pgpd", list(loc = 0, scale = sigma, shape = xi), H = NA) 3.9 Haga un resumen de los resultados como conclusión del trabajo. Decisión: si el valor p es mayor de 0.05 se acepta que los datos son GPD. Si es menor se rechaza. Reporte el resultado de las pruebas. 4. Análisis LDA 3.6 Cálculo de la medida de severidad Programe: mle = fitdistr(x, "lognormal") mu = mle$estimate[1] sigma = mle$estimate[2] Calcule la medida de severidad para un nivel de confianza de (1-q)100%, con q = 0.05, 0.01. NOTA: para el VaR se requiere que q sea menor que el cociente n/nu . Chequee que se cumple esta condición y reporte las medidas: CaR = mean(tf)*medida 4.1 Ajustar una distribución LogNormal a las pérdidas Reporte los parámetros obtenidos mu y sigma. 4.2 Examen del ajuste del modelo VaR = u + sigma*((n*q/nu)^(-xi) - 1)/xi ES = (VaR + sigma - xi*u)/(1 - xi) MS = VaR + sigma*(2^xi - 1)/xi Decida si el modelo Lognormal resultó adecuado para los datos de pérdidas operativas. 3.7 Cálculo de las frecuencias promedio 1) Use las pruebas gráficas: Se toman los datos y fechas por encima del umbral Diagrama de cuantiles 4 4.3 Definir agregadas x11() v.teo = rlnorm (n=length (v), meanlog = mu, sdlog = sigma) qqplot (v.teo,v,main="QQ-plot distr. LogNormal") abline(0,1) Decisión: si los puntos aparecen muy alejados de la línea recta, no se acepta el modelo Lognormal para los datos. En caso contrario, sí. La gráfica acumulada acumulada Moscadelli 23,24 ). de la función de distribución estimada versus la distribución empírica. (ver el artículo de en las Figuras 2-5 de las pags. xx = seq(mean(v),max(v),length.out=100) plot(xx, plnorm(xx , meanlog = mu, sdlog = sigma),type="l",col="red", main="distribución LogNormal ") plot(ecdf(v),add=TRUE,verticals= TRUE, do.points = FALSE) Decisión : si la línea continua está cercana de la línea escalonada se acepta la distribución Lognormal para los datos. En caso contrario, se rechaza. el modelo de pérdidas Se calcula primero el promedio de casos por año, con las instrucciones fc = years(fecha) tf = table(fc) Reporte la gráfica del número de casos de RO por año y el promedio anual barplot(tf) (mean(tf)) NOTA: si hay un año incompleto proceder a excluírlo. Modifique el archivo D si ése es el caso. Defina el modelo de frecuencias con una distribución Poisson con parametro igual al promedio anual model.freq = expression(data = rpois(mean(tf))) Defina el modelo de severidad con una distribución Lognormal model.sev = expression(data = rlnorm ( meanlog = mu, sdlog=sigma) Calcular la agregadas distribución de pérdidas 2) Use la prueba KS . ks.test(v, "plnorm", list(meanlog = mu, sdlog = sigma), H = 10) Fs = aggregateDist("simulation", model.freq, model.sev, nb.simul = 1000) 4.4 Cálculo del Capital en Riesgo, CaR Decisión: si el valor p es mayor de 0.05 se acepta que los datos son Lognormal. Si es menor se rechaza. Reporte el resultado de las pruebas. Programe y reporte los valores siguientes VaR(Fs) CTE(Fs) Nota importante: en caso de no ajustar una distribución Lognormal reportamos este resultado y se prosigue con los cálculos, indicando que son solamente como ejemplo de los cálculos a realizar y no son correctos. La librería actuar solamente tiene implementados el VaR y el CTE = conditional tail expectation = esperanza condicional residual, que es igual al ES = expected shortfall . 5 4.5 Haga un resumen de los resultados como conclusión del trabajo. 5. Presentación Usar el formato Word de la Revista Ingeniería y Ciencia, de Eafit, que se puede descargar en el vínculo “Documentos”, de la página del profesor. Realizar el trabajo lo mas resumido posible. Referencias Moscadelli, M. (2003) 'The Modelling of Operational Risk: Experience with the Anaysis of the data collected by the Basel Commitee', Reporte Técnico. Banco de Italia.