La búsqueda de certidumbre constituye un imperativo prioritario en la sociedad contemporánea. La inherente incertidumbre del futuro condiciona significativamente la toma de decisiones tanto individuales como corporativas, ámbito en el cual la industria aseguradora desempeña un rol fundamental mediante la transferencia de riesgos. Este mecanismo opera mediante la cesión del riesgo por parte del asegurado a una entidad aseguradora, la cual recibe una prima a cambio de asumir la contingencia asociada a eventos imprevistos (accidentes, incendios, enfermedades, entre otros) y garantizar una indemnización en caso de materialización del siniestro.
Para honrar dichos compromisos, las aseguradoras requieren estimar sus obligaciones futuras, cumpliendo con las normativas de la Comisión Nacional de Seguros y Fianzas (CNSF) y estándares internacionales que salvaguardan la solvencia financiera. Dentro de este marco, las reservas técnicas representan un pilar crítico, constituyendo fondos destinados a cubrir compromisos futuros derivados de operaciones subscritas. Entre estas, destacan las reservas para siniestros ocurridos pero no reportados (IBNR), cuya estimación implica procesos complejos sustentados en modelización matemática y estadística predictiva.
Existen diversas técnicas y modelos matemáticos que auxilian en la tarea de estimar las obligaciones futuras; en este trabajo conoceremos tres de ellas, con la intención de saber cuál es el mejor modelo para el conjunto de datos que estamos analizando, los siniestros de incendios de 2015 a 2023 proporcionados por la CNSF
La ejecución del estudio se estructura en tres fases metodológicas:
1. Preprocesamiento de datos: Limpieza y normalización de la base de datos para garantizar integridad y compatibilidad con los algoritmos en R.
2. Análisis Exploratorio (EDA): Caracterización del conjunto de datos para identificar patrones, anomalías y contexto actuarial relevante.
3. Implementación y evaluación comparativa: Aplicación de los métodos seleccionados, análisis de resultados y determinación de la técnica óptima según criterios de precisión y robustez en el contexto analizado.
Comparar tres metodologías de estimación de reservas IBNR aplicadas a siniestros por incendio de 2015 a 2023, registrados en bases de datos de la CNSF:
Método determinístico: Chain Ladder
Métodos estocásticos: Bootstrap y Mack Chain Ladder
En el paper “Comparison of Stochastic Claims Reserving Models in Insurance” de Martinek, Arató y Mályusz se comparan diversos modelos estocásticos utilizados en la estimación de reservas. Los modelos analizados incluyen:
Chain Ladder tradicional: Basado en patrones históricos de desarrollo.
Modelo de Mack: Extensión estocástica del Chain Ladder, que incorpora varianzas por año de desarrollo.
Bootstrap Chain Ladder: Método de remuestreo para cuantificar incertidumbre.
Modelos Lineales Generalizados (GLM): Permiten integrar variables explicativas adicionales.
Enfoques bayesianos: Utilizan información previa y actualizable estadísticamente.
Metodología:
Los autores combinan un análisis teórico de las propiedades de cada modelo con pruebas empíricas utilizando datos reales de siniestros. Evalúan precisión, capacidad predictiva, manejo de incertidumbre y complejidad computacional.
Hallazgos clave:
Modelo de Mack: Confiable cuando los datos siguen supuestos del Chain Ladder, pero menos flexible ante desviaciones.
Bootstrap Chain Ladder: Destaca en cuantificar incertidumbre (intervalos de predicción) y adaptarse a variaciones.
GLMs: Ventajosos al incorporar covariables externas, ofreciendo mayor adaptabilidad.
Bayesianos: Potentes para datos complejos y contextos con información previa, aunque requieren recursos computacionales intensivos.
Conclusiones:
La elección del modelo depende de la naturaleza de los datos y los objetivos (ej., precisión vs. coste computacional). Los autores subrayan la importancia de:
Validar modelos con técnicas como validación cruzada.
Combinar enfoques (ej., Bootstrap con GLMs) para mejorar robustez.
Considerar el equilibrio entre complejidad y recursos disponibles, especialmente en modelos bayesianos.
Existe otro estudio de Jack Li, “Comparison of Stochastic Reserving Methods”
Se utilizaron los siguientes criterios de comparación:
Precisión predictiva: Error en la estimación de reservas.
Estabilidad: Sensibilidad a outliers o cambios en los datos.
Transparencia: Interpretabilidad de los resultados.
Cumplimiento regulatorio: Adecuación a estándares como Solvencia II o IFRS 17.
Costo computacional: Recursos requeridos para implementación.
Hallazgos clave:
Chain Ladder estocástico (Mack): Sólido en datos con patrones consistentes, pero subestima la incertidumbre si hay heterocedasticidad.
Bornhuetter-Ferguson: Superior en ramos con siniestralidad emergente lenta (ej., responsabilidad civil), al reducir dependencia de datos incompletos.
GLMs: Alta flexibilidad para modelar efectos de calendario o inflación, pero requieren ajuste cuidadoso para evitar sobreparametrización.
Métodos bayesianos: Ideales para integrar juicio experto o datos externos, aunque su complejidad limita su adopción en la práctica diaria.
Conclusiones:
Elección del método: Depende del tipo de seguro, calidad de los datos y requisitos regulatorios.
Híbridos: Combinar métodos (ej., GLM + bootstrap) puede equilibrar precisión y robustez.
Transparencia vs. complejidad: Métodos más sofisticados (bayesianos) ofrecen ventajas analíticas, pero deben justificarse ante reguladores.
Enfoque práctico: Li enfatiza la importancia de validación retrospectiva (backtesting) y escenarios de estrés para asegurar la confiabilidad de las reservas.
En el análisis de datos, una de las primeras tareas que se deben de realizar es conocer la estructura de los datos, esto es, saber qué significan las variables, el tipo de dato que son, la cantidad de registros, y las medidas descriptivas de las variables. Para poder realizar esta exploración, se debe de cargar la base de datos y verificar que haya normalización, es decir que no haya valores nulos, que los datos estén en el formato correcto y que no haya errores en la captura de los datos. Vamos a realizar esta tarea con la base de datos de siniestros de incendio de la CNSF.
Hemos recopilado la información de los catálogos de la CNSF para poder entender el significado de las variables. Nos servirá para hacer la limpieza de la base y poder realizar el Análisis Exploratorio de Datos
AÑO: Indica el año en que ocurrió el siniestroMONEDA: Moneda con la cual se emitió la póliza.| Clave | Moneda |
|---|---|
| 10 | Nacional |
| 20 | Extranjera |
| 30 | Indizada |
FORMA DE VENTA: Indica la manera que se vendió la
póliza| Clave | Forma de Venta | Definición |
|---|---|---|
| 01 | Agentes Persona Física | La distribución de los productos de seguros se realiza a través de una persona física que, mediante la celebración de un contrato con una aseguradora, actúa como intermediaria en la suscripción y administración de contratos de seguros. |
| 02 | Agentes Persona Moral | La distribución de los productos de seguros se realiza a través de una persona moral que, mediante la celebración de un contrato con una aseguradora, actúa como intermediaria en la suscripción y administración de contratos de seguros. |
| 05 | Red de Sucursales Bancarias | Suscripción de contratos de seguros mediante su oferta a través de ejecutivos o ventanillas bancarias. |
| 06 | Fuerza de Venta Interna o Casa Matriz | La distribución de los productos de seguros se realiza a través de los propios empleados de las empresas, sin que intervengan intermediarios, el teléfono o internet. |
| 07 | Módulos de Venta | Suscripción de contratos de seguros mediante su oferta por medio de lugares físicos de venta, pertenecientes a la aseguradora. |
| 08 | Telemercadeo | Suscripción de contratos de seguros mediante su oferta a través comunicación telefónica. |
| 10 | Empresas Comerciales | Suscripción de contratos de seguros mediante su oferta por medio de la estructura comercial de un tercero. Incluye seguros ofrecidos a través de facturas de servicios públicos y privados, u ofertados en supermercados, tiendas departamentales tiendas de autoservicio y electrodomésticos. |
| 11 | Concesionarios Automotrices | Suscripción de contratos de seguros mediante su oferta por medio de la agencia o intermediario con la que se realizó la venta del automóvil. |
| 12 | Internet | Suscripción de contratos de seguros directamente por los interesados a través de una página web, sin contar con un intermediario. Esta modalidad puede requerir que se concrete la compra por teléfono, pero el realizador de la llamada no promueve el producto. |
| 13 | Descuento por Nómina | Suscripción de contratos de seguros mediante su oferta a los empleados de una empresa, independientemente del medio electrónico o canal utilizado. |
| 14 | Microcréditos | Suscripción de contratos de seguros a microfinancieras cuyo fin principal es cubrir el microcrédito y/o el fallecimiento del acreditado y en su caso a sus beneficiarios. |
| 15 | Otros Canales de Venta Masiva | Considera canales masivos que no se encuentran incluidos en las categorías anteriores (08 a 14). Asimismo, incluye la suscripción de contratos de seguros directamente por los interesados a través de insertos, tarjetas de regalo o cajeros automáticos (ATM´s). Esta modalidad puede requerir que concrete la compra por teléfono, pero el realizador de la llamada no promueve el producto. |
| 99 | Otra Forma de Venta | Cualquier otra forma de venta que se considere ajena a las opciones anteriores. En caso de que se reporte en esta opción más del 1% de la Prima Emitida o del número de pólizas o asegurados/certificados/incisos/ubicaciones, se deberá aclarar por escrito cual es la forma de venta de estos seguros, para agregar las opciones que sean necesarias en este catálogo. |
GIRO: Tipo de empresa Puede consultar el cátalogo en
el siguiente link: Cátalogo
4, Giros
NUMERO DE NIVELES: Número total de niveles del
edificio, incluyendo sótanos
ENTIDAD: la entidad federativa-municipio en donde se
encuentra el bien o inmueble asegurado: Catálogo
16.2
SUBTIPO DE SEGURO: Subtipo de seguro que corresponda
al negocio asegurado
| Clave | Subtipo de Seguro | Definición |
|---|---|---|
| 0 | Otro | |
| 1 | Microseguro | Microseguros, pólizas que corresponden a productos registrados de acuerdo con la normativa vigente. |
| 2 | Negocio gubernamental | Es el seguro que es contratado por el gobierno federal, estatal, municipal y sus empresas paraestatales para cubrir bienes propios. |
| 3 | Seguro obligatorio | Seguros que deben ser comprados al ser dictados por una ley, reglamento u otro tipo de normativa. |
| 4 | Pymes | Seguros contratados por PyMEs para la protección de sus bienes. |
TIPO DE BIEN: La clave del bien que se está
asegurando| Clave | Tipo de bien |
|---|---|
| 1 | Edificio |
| 2 | Contenidos |
| 3 | Pérdidas Consecuenciales |
| 4 | Existencias / Bienes Bajo Convenio Expreso |
| 5 | Contenidos y Edificio |
| 6 | Contenidos, Existencias / Bienes Bajo Convenio Expreso |
| 7 | Contenidos y Pérdidas Consecuenciales |
| 8 | Edificio y Pérdidas Consecuenciales |
| 9 | Otra combinación / Otros |
COBERTURA: Cada una de las coberturas de la póliza,
afectadas por el siniestro| Clave | Cobertura |
|---|---|
| 01 | Bienes en cuartos o aparatos refrigerados o en incubadoras |
| 02 | Combustión Espontánea |
| 03 | Derrame de Material Fundido |
| 04 | Derrame de Protecciones contra Incendio |
| 05 | Extensión de cubierta (sin inundación) |
| 06 | Ganancias Brutas |
| 07 | Gastos Extraordinarios |
| 08 | Gastos Extras para Casa Habitación |
| 09 | Huelgas o Alborotos Populares |
| 10 | Incendio, rayo y explosión |
| 11 | Interdependencia |
| 12 | Interrupción de Actividades Comerciales |
| 13 | Naves Aéreas, Vehículos y Humo |
| 14 | Pérdida de Rentas |
| 15 | Pérdida de Utilidades, Gastos Fijos y Salarios |
| 16 | Remoción de Escombros |
| 17 | Seguro Contingente |
| 18 | Todo Riesgo |
| 19 | Cancelación de viaje, pérdida de maleta |
| 20 | Cobertura automática para incisos nuevos o no conocidos |
| 21 | Endoso Inflacionario |
| 22 | Gastos funerarios |
| 23 | Seguro Flotante |
| 24 | Terrorismo |
| 25 | Explosión |
| 99 | Otra cobertura |
CAUSA DEL SINIESTRO: Causa que originó el
siniestro.| Clave | Causa de siniestro |
|---|---|
| 01 | Acción del Agua que no Provenga de las Condiciones Atmosféricas |
| 02 | Actos de Personas Mal Intencionadas |
| 03 | Auto Ignición |
| 04 | Caída de Antenas |
| 05 | Caída de Arboles |
| 06 | Caída de Avión |
| 07 | Caída de Maquinaria o sus Partes por Rotura de Cables |
| 08 | Caída de Nave Aérea y Objetos Caídos de Ellos |
| 09 | Cerillos y Cigarros |
| 10 | Corto circuito / Electricidad |
| 11 | Derrame de Equipo Contra Incendio |
| 12 | Derrame de Material Fundido |
| 13 | Desechos orgánicos |
| 14 | Durante la soldadura y corte |
| 15 | Explosión |
| 16 | Fallas en el Sistema de Refrigeración |
| 17 | Falta de Suministro de Energía Eléctrica |
| 18 | Fricción |
| 19 | Guerra |
| 20 | Huelgas, Alborotos Populares |
| 21 | Humo o Tizne |
| 22 | Impacto de Vehículos |
| 23 | Material sobrecalentado |
| 24 | Conmoción Civil |
| 25 | Contenidos e Interior de los edificios por deficiencias en construcción |
| 26 | Desbordamiento o Desviación de Corrientes o Depósitos Artificiales |
| 27 | Descargas accidentales de agua o vapor |
| 28 | Escape de Materias Inflamables o explosivas |
| 29 | Falta de Mantenimiento |
| 30 | Gastos Extraordinarios |
| 31 | Falta o insuficiencia de drenaje |
| 32 | Incendio por Lluvia |
| 33 | Rayo |
| 34 | Roturas de tuberías o sistemas de agua |
| 35 | Remoción de Escombros |
| 36 | Combustión Espontánea |
| 37 | Corrosión en tubería |
| 38 | Daños en coladeras |
| 39 | Daños causados por impericia de trabajo |
| 40 | Daños por derrame de sustancias químicas |
| 41 | Fenómenos de la naturaleza |
| 42 | Fermentación |
| 43 | Pérdida de equpaje durante viaje |
| 44 | Plaga de termitas |
| 45 | Rotura de techos, vidrios, paredes |
| 46 | Vientos Tempestuosos |
| 99 | Otra causa |
MONTO DE SINIESTRO: Monto del siniestro, neto de
deducible y coaseguro, de los movimientos registrados durante el periodo
de reporte, independientemente de la fecha de ocurrencia del siniestro.
Este considera los importes de las reservas iniciales estimadas
más/menos los ajustes a las reservas.MONTO PAGADO: total de los montos pagados al asegurado
por concepto de siniestro, neto de coaseguro y deducible, durante el
periodo de reporte.MONTO DEL DEDUCIBLE: Importe total a cargo del
asegurado por deducible correspondiente a su participación en los
siniestros pagados dentro del periodo del reporteMONTO DE COASEGURO: Importe total a cargo del asegurado
por coaseguro correspondiente a su participación en los siniestros
pagados dentro del periodo del reporte.SALVAMENTO: Monto obtenido por la Institución por
concepto de salvamentos del siniestro ocurridolibrary(pacman)
p_load(tidyverse, extraDistr, ChainLadder, stringi, knitr, DT, ggplot2, plotly, htmlwidgets)Ahora que conocemos las variables vamos a normalizar y verificar tipos de datos o valores NA
# Importando los datos y usando encoding latin por los acentos
siniestros <- read.csv('Incendio_Siniestros.csv',fileEncoding = "latin1", stringsAsFactors = FALSE)
primeros_cinco <- head(siniestros, 5)
kable(primeros_cinco)| AÑO | MONEDA | FORMA.DE.VENTA | GIRO | NUMERO.DE.NIVELES | TIPO.PRIMER.RIESGO | ENTIDAD | SUBTIPO.DE.SEGURO | TIPO.DE.BIEN | COBERTURA | CAUSA.DEL.SINIESTRO | NUMERO.DE.SINIESTROS | MONTO.DE.SINIESTRO | GASTO.DE.AJUSTE | SALVAMENTO | MONTO.PAGADO | MONTO.DE.DEDUCIBLE | MONTO.COASEGURO | RECUPERACION.DE.TERCEROS | RECUPERACION.DE.REASEGURO |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2015 | Extranjera | Agentes Persona Fisica | Alquiler de maquinaria y equipo industrial, comercial y de servic | 2 | NINGUNO | Baja California | Otro | Contenidos | Incendio, rayo y explosion | Falta de Mantenimiento | 1 | 49946 | 0 | 0 | 50306 | 15300 | 0 | NA | NA |
| 2015 | Extranjera | Agentes Persona Fisica | Autotransporte de carga general | 1 | RELATIVO | Guanajuato | Otro | Edificio | Incendio, rayo y explosion | Rayo | 2 | 85736 | 2969 | 0 | 0 | 0 | 0 | NA | NA |
| 2015 | Extranjera | Agentes Persona Fisica | Banca multiple | 1 | NINGUNO | Estado de Mexico | Microseguro | Contenidos | Extension de cubierta (sin inundacion) | Impacto De Vehiculos | 1 | 0 | 3626 | 0 | 0 | 0 | 0 | NA | NA |
| 2015 | Extranjera | Agentes Persona Fisica | Banca multiple | 1 | NINGUNO | Nuevo Leon | Microseguro | Contenidos | Extension de cubierta (sin inundacion) | Rotura de techos, vidrios, paredes | 1 | -278 | 1813 | 0 | 0 | 0 | 0 | NA | NA |
| 2015 | Extranjera | Agentes Persona Fisica | Banca multiple | 1 | NINGUNO | Distrito Federal | Microseguro | Contenidos | Extension de cubierta (sin inundacion) | Roturas de tuberias o sistemas de agua | 1 | -1188 | 3626 | 0 | 0 | 0 | 0 | NA | NA |
## AÑO MONEDA FORMA.DE.VENTA
## "integer" "character" "character"
## GIRO NUMERO.DE.NIVELES TIPO.PRIMER.RIESGO
## "character" "character" "character"
## ENTIDAD SUBTIPO.DE.SEGURO TIPO.DE.BIEN
## "character" "character" "character"
## COBERTURA CAUSA.DEL.SINIESTRO NUMERO.DE.SINIESTROS
## "character" "character" "integer"
## MONTO.DE.SINIESTRO GASTO.DE.AJUSTE SALVAMENTO
## "numeric" "integer" "integer"
## MONTO.PAGADO MONTO.DE.DEDUCIBLE MONTO.COASEGURO
## "numeric" "integer" "integer"
## RECUPERACION.DE.TERCEROS RECUPERACION.DE.REASEGURO
## "integer" "integer"
Tipos de datos correctos, ahora valores nulos
## AÑO MONEDA FORMA.DE.VENTA
## 0 0 0
## GIRO NUMERO.DE.NIVELES TIPO.PRIMER.RIESGO
## 0 0 0
## ENTIDAD SUBTIPO.DE.SEGURO TIPO.DE.BIEN
## 0 0 0
## COBERTURA CAUSA.DEL.SINIESTRO NUMERO.DE.SINIESTROS
## 0 0 0
## MONTO.DE.SINIESTRO GASTO.DE.AJUSTE SALVAMENTO
## 0 0 0
## MONTO.PAGADO MONTO.DE.DEDUCIBLE MONTO.COASEGURO
## 0 0 0
## RECUPERACION.DE.TERCEROS RECUPERACION.DE.REASEGURO
## 98893 98893
Vemos que las columnas RECUPERACION.DE.SINIESTROS Y
RECUPERACION.DE.REASEGURO contienen NA, pero por el
objetivo del proyecto esas columnas no nos serán de utilidad por lo que
no requerirán de alguna técnica de reemplazamiento
Vamos a extraer un subconjunto de las variables que nos interesan, a el igual que solo nos enfocaremos en las observaciones que tengan un monto de pago mayor a 0
siniestros <- siniestros %>% select(-c(RECUPERACION.DE.REASEGURO, RECUPERACION.DE.TERCEROS, GASTO.DE.AJUSTE, MONTO.DE.DEDUCIBLE, MONTO.COASEGURO, MONTO.DE.SINIESTRO))
siniestros <- siniestros %>% filter(MONTO.PAGADO > 0)Ahora vamos a normalizar las variables: MONEDA,
FORMA.DE.VENTA, GIRO,
NUMERO.DE.NIVELES, ENTIDAD,
SUBTIPO.DE.SEGURO, TIPO.DE.BIEN,
COBERTURA, CAUSA.DE.SINIESTRO de acuerdo con
el catálogo de RR-8 de la CNSF
Algunos valores son los mismos, pero no hay consistencia en el regirstro de los datos. Necesitamos homogenizar los datos para poder realizar el análisis exploratorio de datos
Hemos acordado eliminar acentos y pasar a minúsculas para evitar errores en la búsqueda de los valores o posible incompatibilidad de los datos en las funciones
# MONEDA
siniestros$MONEDA <- tolower(siniestros$MONEDA)
# FORMA.DE.VENTA
siniestros$FORMA.DE.VENTA <- stri_trans_general(siniestros$FORMA.DE.VENTA, "Latin-ASCII") # Remover los acentos
siniestros$FORMA.DE.VENTA <- tolower(siniestros$FORMA.DE.VENTA) # Pasar a minúsculas
siniestros$FORMA.DE.VENTA <- ifelse(siniestros$FORMA.DE.VENTA == "fuerza venta interna o matriz", "fuerza de venta interna o casa matriz", siniestros$FORMA.DE.VENTA)
siniestros$FORMA.DE.VENTA <- ifelse(siniestros$FORMA.DE.VENTA == "venta masiva", "otros canales de venta masiva", siniestros$FORMA.DE.VENTA)
# GIRO
siniestros$GIRO <- stri_trans_general(siniestros$GIRO, "Latin-ASCII") # Remover los acentos
siniestros$GIRO <- tolower(siniestros$GIRO) # Pasar a minúsculas
siniestros$GIRO <- trimws(siniestros$GIRO, which = 'right') # Remover espacios en blanco
# Completando strings
sectores <- c("agricultura, ganaderia, aprovechamiento forestal, pesca y caza",
"mineria",
"comercio al por mayor",
"comercio al por menor",
"construccion",
"electricidad, agua y suministro de gas por ductos al consumidor final",
"industrias manufactureras",
"informacion en medios masivos",
"otros servicios excepto actividades del gobierno",
"servicios de alojamiento temporal y de preparacion de alimentos y bebidas",
"servicios de apoyo secretarial, fotocopiado, cobranza, investigacion",
"servicios educativos",
"servicios financieros y de seguros",
"servicios inmobiliarios y de alquiler de bienes muebles e intangibles",
"servicios profesionales, cientificos y tecnicos",
"direccion de corporativos y empresas",
"servicios de apoyo a los negocios y manejo de desechos y servicios de remediacion",
"servicios educativos",
"servicios de salud y de asistencia social",
"servicios de esparcimiento culturales y deportivos, y otros servicios recreativos",
"servicios de alojamoento temporal y de preparacion de alimentos y bebidas",
"otros servicios excepto actividades del gobierno",
"actividades del gobierno y de organismos internacionales y extraterritoriales",
"transportes, correos y almacenamiento",
"vivienda", "oficina")
for (i in sectores) {
pattern <- paste0("^", i, "\\s*\\s?\\((.*?)\\).*")
siniestros$GIRO <- gsub(
pattern = pattern,
replacement = "\\1",
x = siniestros$GIRO
)
}
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de maquinaria y equipo para la industria metalmecani" , "fabricacion de maquinaria y equipo para la industria metalmecanica" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de herramientas de mano sin motor y utensilios de coc" , "fabricacion de herramientas de mano sin motor y utensilios de cocina metalicos " , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "alquiler de maquinaria y equipo industrial, comercial y de servic", "alquiler de maquinaria y equipo industrial, comercial y de servicios", siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "comercio al por menor de articulos de papeleria, libros y perio", "comercio al por menor de articulos de papeleria, libros y periodicos", siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "transmision de programas de radio y television, excepto a traves" , "transmision de programas de radio y television, excepto a traves de internet " , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "telefonia tradicional, telegrafia y otras telecomunicaciones ala" , "telefonia tradicional, telegrafia y otras telecomunicaciones alambricas" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "vivienda (casa habitacion (credito hipotecario))", "casa habitacion (credito hipotecario)", siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "servicios de apoyo secretarial, fotocopiado, cobranza, investiga" , "servicios de apoyo secretarial, fotocopiado, cobranza, investigacion" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "alquiler de maquinaria y equipo industrial, comercial y de servic" , "alquiler de maquinaria y equipo industrial, comercial y de servicios" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "comercio al por mayor de electrodomesticos menores y aparatos d" , "comercio al por mayor de electrodomesticos menores y aparatos de linea blanca" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "comercio al por menor de articulos de ferreteria, tlapaleria y vi" , "comercio al por menor de articulos de ferreteria, tlapaleria y vidrios" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "comercio al por menor de partes y refacciones para automoviles," , "comercio al por menor de partes y refacciones para automoviles, camionetas y camiones" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de equipo y material para uso medico, dental y para" , "fabricacion de equipo y material para uso medico, dental y para laboratorio" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de maquinaria y equipo para el comercio y los servi" , "fabricacion de maquinaria y equipo para el comercio y los servicios" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de maquinaria y equipo para las actividades agropecua" , "fabricacion de maquinaria y equipo para las actividades agropecuarias, para la construccion y para la industria extractiva" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de maquinaria y equipo para las industrias manufactu" , "fabricacion de maquinaria y equipo para las industrias manufactureras,
excepto la metalmecanica" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de otra maquinaria y equipo para la industria en gen" , "fabricacion de otra maquinaria y equipo para la industria en general" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "otra actividad o servicio relacionada con la agricultura, ganade" , "otra actividad o servicio relacionada con la agricultura, ganaderia, aprovechamiento forestal, pesca y caza" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "parques con instalaciones recreativas y casas de juegos electroni" , "parques con instalaciones recreativas y casas de juegos electronicos" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "pensiones y casas de huespedes, y departamentos y casas amuebla" , "pensiones y casas de huespedes, y departamentos y casas amueblados con servicios de hotelería " , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "construccion de obras para el abastecimiento de agua, petroleo," , "construccion de obras para el abastecimiento de agua, petroleo, gas, electricidad y
telecomunicaciones " , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "edicion de periodicos, revistas, libros y similares, excepto a" , "edicion de periodicos, revistas, libros y similares, excepto a traves
de internet" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de motores de combustion interna, turbinas y transmi" , "fabricacion de motores de combustion interna, turbinas y transmisiones" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de otros productos de cuero, piel y materiales suceda" , "fabricacion de otros productos de cuero, piel y materiales sucedaneos" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de productos a base de arcillas y minerales refracta" , "fabricacion de productos a base de arcillas y minerales refractarios" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "reparacion y mantenimiento de equipo electr¢nico y de equipo de" , "reparacion y mantenimiento de equipo electronico y de equipo de precision " , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "servicios de arquitectura, ingenieria y actividades relacionada" , "servicios de arquitectura, ingenieria y actividades relacionadas" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "asilos y otras residencias para el cuidado de ancianos y discapa" , "asilos y otras residencias para el cuidado de ancianos y discapacitados" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "comercio al por menor de articulos para la decoracion de interio" , "comercio al por menor de articulos para la decoracion de interiores" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "escuelas comerciales, de computacion y de capacitacion para ejecu" , "escuelas comerciales, de computacion y de capacitacion para ejecutivos" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de equipo de generacion y distribucion de energia ele" , "fabricacion de equipo de generacion y distribucion de energia electrica" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de instrumentos de navegacion, medicion, medicos y" , "fabricacion de instrumentos de navegacion, medicion, medicos y de control" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "fabricacion de sistemas de aire acondicionado, calefaccion y de" , "fabricacion de sistemas de aire acondicionado, calefaccion y de refrigeracion industrial y comercial" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "otras instituciones de intermediacion crediticia y financiera no" , "otras instituciones de intermediacion crediticia y financiera no bursatil" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "reparacion y mantenimiento de maquinaria y equipo agropecuario," , "reparacion y mantenimiento de maquinaria y equipo agropecuario, industrial, comercial y de servicios" , siniestros$GIRO)
siniestros$GIRO <- ifelse(siniestros$GIRO == "telefonia celular y otras telecomunicaciones inalambricas, exce" , "telefonia celular y otras telecomunicaciones inalambricas, excepto los servicios de satelites" , siniestros$GIRO)
# NUMERO.DE.NIVELES
siniestros$NUMERO.DE.NIVELES <- ifelse(siniestros$NUMERO.DE.NIVELES == "No disponible", "No Disponible", siniestros$NUMERO.DE.NIVELES)
# ENTIDAD
# Minisculas
siniestros$ENTIDAD <- tolower(siniestros$ENTIDAD)
# Remover acentos
siniestros$ENTIDAD <- stri_trans_general(siniestros$ENTIDAD, "Latin-ASCII")
# cambiando strings
siniestros$ENTIDAD <- ifelse(siniestros$ENTIDAD == "distrito federal", "ciudad de mexico", siniestros$ENTIDAD)
siniestros$ENTIDAD <- ifelse(siniestros$ENTIDAD == "extranjero", "en el extranjero", siniestros$ENTIDAD)
siniestros$ENTIDAD <- ifelse(siniestros$ENTIDAD == "mexico", "estado de mexico", siniestros$ENTIDAD)
# SUBTIPO.DE.SEGURO
siniestros$SUBTIPO.DE.SEGURO <- tolower(siniestros$SUBTIPO.DE.SEGURO)
# TIPO.DE.BIEN
siniestros$TIPO.DE.BIEN <- tolower(siniestros$TIPO.DE.BIEN)
siniestros$TIPO.DE.BIEN <- stri_trans_general(siniestros$TIPO.DE.BIEN, "Latin-ASCII")
siniestros$TIPO.DE.BIEN <- ifelse(siniestros$TIPO.DE.BIEN == "existencias / bienes bajo conv", "existencias / bienes bajo convenio expreso", siniestros$TIPO.DE.BIEN)
siniestros$TIPO.DE.BIEN <- ifelse(siniestros$TIPO.DE.BIEN == "edificio y perdidas consecuenc", "edificio y perdidas consecuenciales", siniestros$TIPO.DE.BIEN)
# COBERTURA
siniestros$COBERTURA <- tolower(siniestros$COBERTURA)
siniestros$COBERTURA <- stri_trans_general(siniestros$COBERTURA, "Latin-ASCII")
# Tnemos valores con espacios en blanco al final
siniestros$COBERTURA <- trimws(siniestros$COBERTURA, which = 'right')
# reemplazando "Bienes en cuartos o aparatos refrigerados o en inc" por "Bienes en cuartos o aparatos refrigerados o en incubadoras"
siniestros$COBERTURA <- ifelse(siniestros$COBERTURA == "bienes en cuartos o aparatos refrigerados o en inc", "bienes en cuartos o aparatos refrigerados o en incubadoras", siniestros$COBERTURA)
# reemplazando "Cobertura automàtica para incisos nuevos o no cono" por "Cobertura automatica para incisos nuevos o no conocidos"
siniestros$COBERTURA <- ifelse(siniestros$COBERTURA == "cobertura automatica para incisos nuevos o no cono", "cobertura automatica para incisos nuevos o no conocidos", siniestros$COBERTURA)
# CAUSA.DE.SINIESTRO
# Convertir a minúsculas
siniestros$CAUSA.DEL.SINIESTRO <- tolower(siniestros$CAUSA.DEL.SINIESTRO)
# Remover acentos
siniestros$CAUSA.DEL.SINIESTRO <- stri_trans_general(siniestros$CAUSA.DEL.SINIESTRO, "Latin-ASCII")
# Completando strings
siniestros$CAUSA.DEL.SINIESTRO <- ifelse(siniestros$CAUSA.DEL.SINIESTRO == "accion del agua que no provenga de las condiciones", "accion del agua que no provenga de las condiciones atmosfericas", siniestros$CAUSA.DEL.SINIESTRO)
siniestros$CAUSA.DEL.SINIESTRO <- ifelse(siniestros$CAUSA.DEL.SINIESTRO == "caida de maquinaria o sus partes por rotura de cab", "caida de maquinaria o sus partes por rotura de cables", siniestros$CAUSA.DEL.SINIESTRO)
siniestros$CAUSA.DEL.SINIESTRO <- ifelse(siniestros$CAUSA.DEL.SINIESTRO == "perdida de equpaje durante viaje", "perdida de equipaje durante el viaje", siniestros$CAUSA.DEL.SINIESTRO)
siniestros$CAUSA.DEL.SINIESTRO <- ifelse(siniestros$CAUSA.DEL.SINIESTRO == "desbordamiento o desviacion de corrientes o deposi", "desbordamiento o desviacion de corrientes o depositos artificiales", siniestros$CAUSA.DEL.SINIESTRO)
siniestros$CAUSA.DEL.SINIESTRO <- ifelse(siniestros$CAUSA.DEL.SINIESTRO == "contenidos e interior de los edificios por deficie", "contenidos e interior de los edificios por deficiencias en construccion", siniestros$CAUSA.DEL.SINIESTRO)
# TIPO.PRIMER,RIESGO
siniestros$TIPO.PRIMER.RIESGO <- tolower(siniestros$TIPO.PRIMER.RIESGO)Veamos como queda la base de datos
Corroborando tipos de datos
## $AÑO
## [1] "integer"
##
## $MONEDA
## [1] "character"
##
## $FORMA.DE.VENTA
## [1] "character"
##
## $GIRO
## [1] "character"
##
## $NUMERO.DE.NIVELES
## [1] "character"
##
## $TIPO.PRIMER.RIESGO
## [1] "character"
##
## $ENTIDAD
## [1] "character"
##
## $SUBTIPO.DE.SEGURO
## [1] "character"
##
## $TIPO.DE.BIEN
## [1] "character"
##
## $COBERTURA
## [1] "character"
##
## $CAUSA.DEL.SINIESTRO
## [1] "character"
##
## $NUMERO.DE.SINIESTROS
## [1] "integer"
##
## $SALVAMENTO
## [1] "integer"
##
## $MONTO.PAGADO
## [1] "numeric"
# convirtiendo numero de niveles
siniestros$NUMERO.DE.NIVELES <- as.integer(siniestros$NUMERO.DE.NIVELES) # "no disponible" se convierte en NAYa tenemos lista la base, procedemos con el EDA
Teniendo la base funcional, procederemos con el Análisis Exploratorio
Las variables de interés son sólo dos, el monto de reclamo y el año, sin embargo para tener contexto de nuestra base vamos a explorar las demás, realizando ciertas preguntas
| AÑO | NUMERO.DE.NIVELES | NUMERO.DE.SINIESTROS | SALVAMENTO | MONTO.PAGADO | |
|---|---|---|---|---|---|
| Min. :2015 | Min. : 1.000 | Min. : 1.000 | Min. :-2792911 | Min. : 1 | |
| 1st Qu.:2017 | 1st Qu.: 1.000 | 1st Qu.: 1.000 | 1st Qu.: 0 | 1st Qu.: 8174 | |
| Median :2019 | Median : 1.000 | Median : 1.000 | Median : 0 | Median : 31194 | |
| Mean :2019 | Mean : 2.602 | Mean : 2.937 | Mean : 9261 | Mean : 1653452 | |
| 3rd Qu.:2022 | 3rd Qu.: 2.000 | 3rd Qu.: 2.000 | 3rd Qu.: 0 | 3rd Qu.: 142754 | |
| Max. :2023 | Max. :99.000 | Max. :1701.000 | Max. :91424211 | Max. :13550851556 | |
| NA | NA’s :599 | NA | NA | NA |
La media de siniestros es muy baja, prácticamente dos, donde de hecho se encuentra el tercer cuartil, esto indica que tenemos muy poca frecuencia de siniestralidad. Sin embargo, notemos que el monto pagado es muy grande, siendo la media de 1,653,452
Pronto veremos por qué la media del monto pagado es grande
Dispersión de los montos pagados por año
ggplot(siniestros, aes(x=AÑO, y=MONTO.PAGADO)) +
geom_point(bins = 30, fill = "blue", color = "black") +
labs(title = "Distribución de los montos pagados por año",
x = "Año",
y = "Monto pagado") +
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5))Observamos que hay valores atípicos en los años 2017 y 2018. ¿Cuáles son?
| AÑO | MONEDA | FORMA.DE.VENTA | GIRO | NUMERO.DE.NIVELES | TIPO.PRIMER.RIESGO | ENTIDAD | SUBTIPO.DE.SEGURO | TIPO.DE.BIEN | COBERTURA | CAUSA.DEL.SINIESTRO | NUMERO.DE.SINIESTROS | SALVAMENTO | MONTO.PAGADO |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2017 | extranjera | fuerza de venta interna o casa matriz | extraccion de petroleo y gas | 1 | relativo | campeche | negocio gubernamental | contenidos y edificio | todo riesgo | corto circuito / electricidad | 1 | 0 | 13550851556 |
| 2018 | extranjera | agentes persona moral | fabricacion de productos derivados del petroleo y del carbon | 1 | ninguno | veracruz | otro | contenidos | incendio, rayo y explosion | escape de materias inflamables o explosivas | 2 | 1104678 | 3900822996 |
Se trata de un siniestro ocurrido a una plataforma petrolera debido a un corto circuito.
El otro siniestro igualmente a un inmueble relacionado con la fabricación de productos relacionados a el petróleo
Estos son los únicos dos valores que tiene un monto de pago significativamente mayor a los demás. Esto podría ser la causa de una media muy grande en el pago
Posteriormente veremos cuál podría ser el impacto en los modelos
¿Cúales son 10 los giros con más incendios?
group_giros <- siniestros %>%
group_by(GIRO) %>%
summarise(n = n()) %>%
arrange(desc(n)) %>%
head(10)
ggplot(group_giros, aes(x = n, y = reorder(GIRO, n))) +
geom_bar(stat = "identity", fill = "#1f77b4") +
geom_text(aes(label = n), hjust = -0.3, size = 3.5) +
labs(
title = "Top 10 giros con más siniestros",
x = "Número de siniestros",
y = "Giro"
) +
theme_minimal() +
theme(
panel.grid.major.y = element_blank(), # quitar lineas horizontales
axis.text.y = element_text(size = 7.5),
plot.title = element_text(face = "bold", size = 14)
) +
expand_limits(x = max(group_giros$n) * 1.1) # Space for labels
Como era de esperarse, la casa habitación se encuentra en el inmueble
donde más ocurren los siniestros de incendio. En general en lugares
donde operan personas en la vida cotidiana, como hogar o lugares de
trabajo.
¿Cúal es la entidad con más siniestros?
group_entidad <- siniestros %>%
group_by(ENTIDAD) %>%
summarise(n = n()) %>%
arrange(desc(n))
ggplot(group_entidad, aes(x = reorder(ENTIDAD, n), y = n)) +
geom_bar(stat = "identity", fill='blue') +
labs(title = "Siniestros por entidad",
x = "Entidad",
y = "Número de siniestros") +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")
)En la Ciudad de México se concentra la mayoria de los incendios registrados en esta base. La cantidad de siniestros puede ver con qué tan poblado es la entidad. También esto habla de la cuantía del monto de pago, las tres entidades con mayor siniestros suelen ser donde habitan personas con alto poder adquisitivo y por ende construcciones y edificios con más valor
¿Cúales son las 10 coberturas más contratadas?
group_cobertura <- siniestros %>%
group_by(COBERTURA) %>%
summarise(n = n()) %>%
arrange(desc(n)) %>%
head(10)
ggplot(group_cobertura, aes(x =n,y= reorder(COBERTURA, n))) +
geom_bar(stat = "identity", fill="#1f77b4") +
geom_text(aes(label = n), hjust = -0.3, size = 3.5) +
labs(title = "Top 10 coberturas contratadas",
x = "Frecuencia de la cobertura",
y = "Cobertura") +
theme(
panel.grid.major.y = element_blank(), # quitar lineas horizontales
axis.text.y = element_text(size = 7.5),
plot.title = element_text(face = "bold", size = 14, hjust = 0.5)
)
Es interesante ver que por encima de la cobertura todo riesgo, se situa
la de incendio, rayo y explosión ya que está es la cobertura ‘basica’
que las aseguradoras ofrecen de entrada
¿Cuántos siniestros ocurrieron cada año?
ggplot(siniestros_por_año, aes(x = AÑO, y = n)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(title = "Frecuencia de Siniestros por Año",
x = "Año",
y = "Número de Siniestros")+
theme(plot.title = element_text(face = "bold", size = 14, hjust = 0.5))
Se aprecia claramente que existe una tendencia a la alza de la
frecuencia de los sinietros, siendo el año con más siniestros el
2021
Esto puede ayudarnos a entender, más adelante el comportamiento de los modelos
¿Cuáles son las 10 formas de ventas más frecuentes de las pólizas?
forma_venta_frecuente <- siniestros %>%
group_by(FORMA.DE.VENTA) %>%
summarise(n = n()) %>%
arrange(desc(n)) %>%
head(10)
ggplot(forma_venta_frecuente, aes(x = reorder(FORMA.DE.VENTA, n), y = n, fill = FORMA.DE.VENTA)) +
geom_bar(stat = "identity", color = "black", show.legend = FALSE) +
geom_text(aes(label = n), vjust = -0.5, color = "black", size = 4) +
labs(title = "Forma de Venta más Frecuente ",
x = "Forma de Venta",
y = "Número de Pólizas") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 8),
plot.title = element_text(hjust = 0.5),
axis.title = element_text(size = 12))
A través de un agente de seguros, ha sido la forma “tradicional” de
contratación de cualquier seguro
¿Cuál es el monto promedio pagado por tipo de bien asegurado?
monto_promedio_pagado_por_bien <- siniestros %>%
group_by(TIPO.DE.BIEN) %>%
summarise(promedio_monto = mean(MONTO.PAGADO, na.rm = TRUE))
ggplot(monto_promedio_pagado_por_bien, aes(x = promedio_monto, y=reorder(TIPO.DE.BIEN, promedio_monto))) +
geom_bar(stat = "identity", color = "black") +
geom_text(aes(label = promedio_monto), hjust = -0.4, color = "black", size = 4) +
labs(title = "Monto Promedio Pagado por Tipo de Bien",
x = "",
y = "Monto Promedio Pagado") +
theme_minimal() +
theme(axis.text.x = element_blank(),
plot.title = element_text(hjust = 0.5),
legend.title = element_text(size = 12),
legend.text = element_text(size = 10))El tipo de bien que más se paga son los contenidos y edificios, nuevamente porque es la cobertura “basica” que la mayoria de las aseguradoras ofrecen
Conocimos el comportamiento del monto promedio del pago total, y qué años tiene más frecuencia de siniestros, veremos que esto puede influir significativamente en los supuestos de cada modelo
Para el próposito del proyecto vamos a trabajar con las variables
AÑO y MONTO.PAGADO. Sin embargo, necesitamos
de el periodo de pago para realizar el triángulo de
pérdidas acumuladas y poder estimar las reservas IBNR
A falta de información vamos a simular el periodo de pago.
Tenemos siniestros ocurridos de 2015 a 2023, es decir 8 años de información.
Ocuparemos una distribución propia pero no informativa, en este caso una distribición uniforme para simular el factor de desarrollo D donde: \[ D \sim Unif(0,8) \]
# Selección variables de interés
fechas_montos <- siniestros %>% select(AÑO, MONTO.PAGADO)
# montos mayor a cero
fechas_montos <- filter(fechas_montos, fechas_montos$MONTO.PAGADO > 0)
# Añadiendo la columna D, para el año de desarrollo (fecha de pago)
fechas_montos <- add_column(fechas_montos, D = as.integer(rdunif(nrow(fechas_montos), 0, 8)), .after = 1)
# columna año de pago simulado AÑO + D
fechas_montos <- fechas_montos %>% mutate(AÑO.PAGO = as.integer(rowSums((across(c(AÑO, D))))), .after = 2)Hemos creado la simulación de fecha de pagos, pero existe un problema. Cada año debe tener un factor de desarrollo máximo. Por ejemplo, el año \(2015\) puede tener como máximo \(8\) porque \(2015 + 8 = 2023\) la fecha donde tenemos información. De forma general \(\max D = 2023 - \text{AÑO}\). Vamos a arreglar ese problema
fechas_montos <- fechas_montos %>%
mutate(
max_D = 2023 - AÑO, # Max D permitido por cada AÑO
D = if_else(D <= max_D, D, NA_real_),
.after = 3
)Ya hemos restringido los factores de desarrollo para cada año ahora vamos a realizar la suma de cada año y factor de desarrollo
fechas_montos_agregados <- fechas_montos %>%
group_by(AÑO, D) %>%
summarise(MONTO.TOTAL = sum(MONTO.PAGADO, na.rm = TRUE))Tenemos lista toda la información, haremos uso de la paqueteria
ChainLadder para construir el triangulo de montos
# triangulo de forma incremental
triangulo <- as.triangle(
fechas_montos_agregados,
origin = "AÑO",
dev = "D",
value = "MONTO.TOTAL"
)
triangulo## D
## AÑO 0 1 2 3 4 5
## 2015 751988599 779752605 1504524169 699573247 319876540 237020773
## 2016 863131455 483476484 854776377 714963568 425795881 563435758
## 2017 590919405 563340460 553586846 1021455470 2488213352 692238396
## 2018 1207983304 761785046 4517278772 433983658 1007348508 1200876459
## 2019 794185672 529250269 459182308 906817815 492846232 NA
## 2020 1539590964 1328068205 652234354 1958673647 NA NA
## 2021 531409956 1731572516 466121805 NA NA NA
## 2022 991472653 1081115862 NA NA NA NA
## 2023 507353781 NA NA NA NA NA
## D
## AÑO 6 7 8
## 2015 589360743 667929539 505593779
## 2016 1369044436 1217713737 NA
## 2017 2356358951 NA NA
## 2018 NA NA NA
## 2019 NA NA NA
## 2020 NA NA NA
## 2021 NA NA NA
## 2022 NA NA NA
## 2023 NA NA NA
Necesitamos el triángulo de forma acumulada
## D
## AÑO 0 1 2 3 4 5
## 2015 751988599 1531741204 3036265373 3735838620 4055715160 4292735933
## 2016 863131455 1346607939 2201384316 2916347884 3342143765 3905579523
## 2017 590919405 1154259865 1707846711 2729302181 5217515533 5909753929
## 2018 1207983304 1969768350 6487047122 6921030780 7928379288 9129255747
## 2019 794185672 1323435941 1782618249 2689436064 3182282296 NA
## 2020 1539590964 2867659169 3519893523 5478567170 NA NA
## 2021 531409956 2262982472 2729104277 NA NA NA
## 2022 991472653 2072588515 NA NA NA NA
## 2023 507353781 NA NA NA NA NA
## D
## AÑO 6 7 8
## 2015 4882096676 5550026215 6055619994
## 2016 5274623959 6492337696 NA
## 2017 8266112880 NA NA
## 2018 NA NA NA
## 2019 NA NA NA
## 2020 NA NA NA
## 2021 NA NA NA
## 2022 NA NA NA
## 2023 NA NA NA
Este es el comportamiento de los montos acumulados desde su año de
origen a través de los años de desarrollo, como es acumulado, es natural
ver las líneas de forma creciente y la más pronunciada las líneas 3 y 4,
debido a el outlier
Las reservas IBNR (Incurred But Not Reported) representan una estimación de las obligaciones (pagos) de los siniestros que han ocurrido, pero que aún no han sido reportados a la aseguradora.
Es de vital importancia para las aseguradoras tener los fondos suficientes (reservas) para esos pagos futuros. Sobreestimar las reservas podrían causar riesgo de insolvencia, caso contrario podría causar problemas de capital
La experiencia de la aseguradora se basa en el conjunto de datos sobre los siniestros, en este caso de los montos pagados, fechas de siniestros y pagos, para usarlas y crear estimaciones siguiendo modelos matemáticos. Dichos datos se acomodan en un triángulo
Ya hemos construido el triángulo inicial con los datos de la CNSF, ahora falta elegir un método para la zona de estimación (Training data)
Aquí es donde aplicamos los modelos. Primero veamos de qué trata cada uno
Este método determinístico se basa en la suposición de que los patrones de desarrollo histórico continuarán en el futuro.
Tenemos el conjunto de datos de la siguiente forma
$$ \[\begin{gathered} C_{1,1}, C_{1,2}, \ldots, C_{1,n} \\ C_{2,1}, \ldots \ldots, C_{2,n-1} \\ \vdots \\ C_{n,1} \end{gathered}\]$$
Donde \(n\) es el número de periodos de siniestros. \(C_{ij}\) es usado para denotar cantidades incrementales y \(D_{ij}\) para cantidades acumulados, definido por:
\[D_{ij} = \sum_{k=1}^{j}C_{ij}\]
Se estiman los reclamos acumulados recursivamente usando
\[\hat{D}_{i, n-i+2} = D_{i, n-i+1} \hat{\lambda}_{n-i+2}\]
y \(\hat{D}_{i,j}= \hat{D}_{i,j-1} \hat{\lambda}_j\), para \(j=n-i+3, n-i+4, \ldots n\)
Los factores de desarrollo estimados \(\hat{\lambda}_j\) se dan con
\[ \hat{\lambda}_j = \frac{\sum_{i=1}^{n-j+1} D_{ij}}{\sum_{i=1}^{n-j+1} D_{i,j-1}} \]
Se asume:
Estabilidad de los patrones de desarrollo: La forma en que los siniestros se desarrollan (pagan) a lo largo del tiempo se mantiene constante o sigue un patrón predecible. Es decir, los factores de desarrollo calculados a partir de los datos históricos se aplicarán de manera consistente a los años de origen no completados.
Homogeneidad de los datos: Se asume que los datos utilizados en el triángulo de desarrollo provienen de un conjunto homogéneo de siniestros
Independencia de los períodos de desarrollo: el método opera bajo la premisa implícita de que el desarrollo de un año de ocurrencia es independiente del desarrollo de otros años de ocurrencia.
Extrapolación lineal: El método asume que el patrón de desarrollo observado en el pasado puede ser extrapolado linealmente para estimar los pagos futuros. Esto se refleja en el uso de factores de desarrollo promedio para proyectar las celdas futuras del triángulo.
El uso de este modelo, está implementado en la función
chainladder
El método Chain Ladder anterior puede ser mejorado con bootstraping, es decir, con un remuestreo de los residuales de los siniestros conocidos
Los factores de desarrollo que se calculan desde el método básico anterior son usados para proyectar los montos acumulados del último periodo. Este cálculo produce una media para los reclamos pasados y los residuales son calculados como la diferencia entre su media y el reclamo pasado. Estos residuales son usados para realizar un remuestreo de los montos acumulados y obtener nuevos datos para realizar el proceso nuevamente. Esto se repite cuantas veces lo indiquemos necesario para obtener la distribución empírica de los montos acumulados de los siniestros
Los pasos son:
Aplicar Chain Ladder Clásico: se calculan los factores de desarrollo y las estimaciones de siniestros acumulados
Calcular Residuos de Pearson: Los residuos miden la discrepancia entre los datos observados y los estimados por el modelo. Para siniestros incrementales
\[ residual_{i,j} = \frac{X_{i,j}- \hat{X}_{i,j}}{\hat{\sigma}_j} \] donde
\[ \hat{\sigma_{j}} = \sqrt{\frac{\sum_{r=1}^{n+1-j}(X_{r,j}-\hat{X}_{r,j})}{n-j}} \]
\[ X_{i,j}^{\text{pseudo pasado}} = residual_{i,j}^{\text{remuestreo}}\hat{\sigma_j} + \hat{X}_{i,j} \]
Se reconstruye el nuevo triángulo con los nuevos siniestros
Calcular los factores de desarrollo
Repetir y construir la distribución
Se asume que:
Los factores de desarrollo son estables, esto significa que el promedio de los factores de desarrollo derivados de datos del pasado continuarán siendo los mismos para periodos futuros
Homogeneidad en los datos, no hay cambios en los montos de pago acordados, o que eventos externos cambien los factores de desarrollo a través del tiempo
Independencia de los años de accidente: mientras los reclamos dentro de un año de accidente están correlacionados con los años de desarrollo, el método asume independencia entre diferentes años de accidente
Independencia y distribución idéntica entre los residuales
Media cero en los residuales
Varianza constante (Homocedasticidad)
El uso de este modelo, está implementado en la función
BootChainLadder
Dentro de esta función hay un parametro process.distr el
cual puede tomar dos valores: “gamma” y “od.pois”
od.poiss refiere a una distribución Poisson con sobredispersión que modela la frecuencia
La ditribución gamma modela la severidad o los pagos incrementales que son típicamente sesgados a la derecha (esto es, muy pocos reclamos de cantidad grande)
En este proyecto haremos uso de la opción “gamma” y el número de replicación R por defecto (999)
A diferencia del Bootstrap, Mack no asume distribuciones específicas para los datos y se basa en propiedades estadísticas analíticas. Extiende el Chain Ladder determinístico incorporando estimaciones de error de predicción (MSE - Mean Squared Error)
Se asume que:
El uso de este modelo, está implementado en la función
MackChainLadder
Es importante mencionar que la paquetería chainladder,
nos ayudará en los cálculos (tanto estimación como proyección), no
daremos detalle de todos los pasos, ya que no es el alcance de este
proyecto
Ahora que hemos visto teóricamente cada uno de los modelos, procedemos a implementarlos con la base de datos
Comencemos con el modelo más simple
La función no calcula por sí sola el triángulo proyectado, vamos a realizarlo para poder calcular la reserva IBNR
# número de periodos
n <- 9
# Obteniendo los factores de desarrollo
f <-sapply(1:(n-1), function(i){
sum(triangulo[c(1:(n-i)), i+1])/sum(triangulo[c(1:(n-i)),i])
})
# Ahora extrapolamos los factores
dev_period <- 1:(n-1)
tail_model <- lm(log(f-1)~dev_period)
co <- coef(tail_model)
tail <- exp(co[1]+c(n:(n))*co[2]) + 1
f_tail <- prod(tail)
f <- c(f, f_tail)
triangulo_proyectado <- cbind(triangulo, Ult = rep(0, 9))
for(k in 1:n){
triangulo_proyectado[(n-k+1):n, k+1] <- triangulo_proyectado[(n-k+1):n,k]*f[k]
}Los montos proyectados son
## 0 1 2 3 4 5
## 2015 751988599 1531741204 3036265373 3735838620 4055715160 4292735933
## 2016 863131455 1346607939 2201384316 2916347884 3342143765 3905579523
## 2017 590919405 1154259865 1707846711 2729302181 5217515533 5909753929
## 2018 1207983304 1969768350 6487047122 6921030780 7928379288 9129255747
## 2019 794185672 1323435941 1782618249 2689436064 3182282296 3599523694
## 2020 1539590964 2867659169 3519893523 5478567170 6844196846 7741566091
## 2021 531409956 2262982472 2729104277 3564580254 4453114870 5036980066
## 2022 991472653 2072588515 3571350824 4664668453 5827419492 6591475107
## 2023 507353781 1013847824 1746997165 2281815192 2850597949 3224350924
## 6 7 8 Ult
## 2015 4882096676 5550026215 6055619994 6518653802
## 2016 5274623959 6492337696 7083773740 7625423767
## 2017 8266112880 9800755875 10693580702 11511249150
## 2018 11921316387 14134565219 15422189451 16601423802
## 2019 4700389822 5573039448 6080729676 6545683459
## 2020 10109220429 11986045067 13077944381 14077929585
## 2021 6577472979 7798611981 8509046409 9159677751
## 2022 8607389516 10205392134 11135078333 11986505227
## 2023 4210475483 4992170192 5446944656 5863437026
El total estimado de reserva IBNR bajo este método es
## [1] 39591684987
## dev
## origin 0 1 2 3 4 5
## 2015 751988599 1531741204 3036265373 3735838620 4055715160 4292735933
## 2016 863131455 1346607939 2201384316 2916347884 3342143765 3905579523
## 2017 590919405 1154259865 1707846711 2729302181 5217515533 5909753929
## 2018 1207983304 1969768350 6487047122 6921030780 7928379288 9129255747
## 2019 794185672 1323435941 1782618249 2689436064 3182282296 3599523694
## 2020 1539590964 2867659169 3519893523 5478567170 6844196846 7741566091
## 2021 531409956 2262982472 2729104277 3564580254 4453114870 5036980066
## 2022 991472653 2072588515 3571350824 4664668453 5827419492 6591475107
## 2023 507353781 1013847824 1746997165 2281815192 2850597949 3224350924
## dev
## origin 6 7 8
## 2015 4882096676 5550026215 6055619994
## 2016 5274623959 6492337696 7083773740
## 2017 8266112880 9800755875 10693580702
## 2018 11921316387 14134565219 15422189451
## 2019 4700389822 5573039448 6080729676
## 2020 10109220429 11986045067 13077944381
## 2021 6577472979 7798611981 8509046409
## 2022 8607389516 10205392134 11135078333
## 2023 4210475483 4992170192 5446944656
Hemos creado el triángulo proyectado, y básicamente es igual a el realizado con el método anterior ya que el método Mack usa los mismos factores de desarrollo que el Chain Ladder tradicional.
La única diferencia radica en que Mack añade el error de estimación
Las propiedades adicionales de este método las podemos visualizar como sigue
Mack Chain Ladder Results
Son los reclamos estimados para cada periodo de origen (año de accidente) del periodo que estamos analizando (2015 a 2023). Cada barra está compuesta de dos distintos segmentos: “latest” y “Forecast”, en dos respectivos colores
La categoría “Latest” representa los reclamos acumulados observados y reportados hasta la más reciente valuación para cada año de origen. Estos son conocidos, son los valores del triangulo superior que construimos
La categoría “Forecast”, representa los futuros reclamos proyectados para cada año de origen, estimados, obviamente con el modelo Mack. Esta porción de los reclamos últimos corresponden a la reserva IBNR
Las líneas verticales que se extienden en cada una de las barras representan el error estándar (Mack S.E) de cada estimación de los reclamos para el año de origen en específico. Esas barras de error miden la inherente incertidumbre asociada con cada proyección. Estas barras de error, son muy importantes ya que nos indican un posible rango en las que estarán dichos reclamos. Barras más grandes, indican mucha incertidumbre
Como era de esperarse, años mas actuales, menos información disponible que hace una estimación con errores más grandes a comparación de año más pasados. Por ejemplo, a partir del 2023, los errores tienden a incrementarse
Chain ladder developments by origin period
A través de distintas lineas de colores, que representan los años de origen; las lineas sólidas, muestran el desarrollo histórico de los montos acumulados, mientras que las lineas punteadas, la proyección en el futuro
Visualmente, hay un patrón consistente en el monto de reclamos
Residuales estandarizados vs valores estimados
Con este gráfico diagnosticamos qué tan bien los datos se ajustan al modelo, y que tan confiables son las proyecciones
En el eje x se encuentra los valores predichos (reclamos acumulados), mientras que en el eje y están los residuales estandarizados (que son las diferencia entre el valor observado y predicho, escalados por su desviación estandar). La línea roja representa la tendencia general de los residuales
Esto nos ayuda a validar dos suposiciones del modelo Mack:
Se asume una relación lineal entre reclamos sucesivos
La varianza de los residuales estandarizados deben ser aleatoriamente dispersos alrededor del cero
En el gráfico obtenido, la línea roja muestra una ligera tendencia, lo que sugiere una relación no lineal de los reclamos. Este patrón puede indicar un sesgo en las predicciones del modelo; la dispersión de los valores predichos tambien parecen estar muy dispersos, sobre todo para los valores grandes
La relación no lineal tambien sugiere que el modelo Mack está subestimando ciertos rangos de valores de reclamos y sobreestimando otros. Esto es una fuerte indicación de que asumir una simple relación lineal no es apropiado para este conjunto de datos
Residuales estandarizados vs periodo de origen
Esta gráfica nos es de utilidad para identificar los “efectos del año de accidente” o los “efectos del periodo de origen”. Especificamente, validamos la suposición de que los factores de desarrollo son constantes a través de los diferentes años de origen. El patrón que tenemos podría indicar que los reclamos son consistentes a través de los años, aunque también existe una ligera tendencia a el inicio que se va estabilizando en años posteriores
Residuales estandarizados vs periodo del calendario
Este gráfico nos ayuda a identificar los efectos del pago en un año en especifico. Por ejemplo, cuando hay un incremento en la inflación, cambios regulatorios, entre otros eventos económicos. Se muestra nuevamente una ligera tendencia negativa que termina hasta el 2021.
Esto determinana que existen efectos dependiendo el año de pago
Residuales estandarizados vs Periodos de desarrollo
Este es el único gráfico que muestra que los factores de desarollo promedios son generalmente apropiados para las fases de desarrollo de los reclamos
Ahora que hemos validado los supuestos, pasemos a verificar la reserva IBNR total
| Totals | |
|---|---|
| Latest: | 43913222356.0000000 |
| Dev: | 0.5258759 |
| Ultimate: | 83504907342.9573517 |
| IBNR: | 39591684986.9573441 |
| Mack S.E.: | 11469420468.3163853 |
| CV(IBNR): | 0.2896927 |
Latest: representa la suma de todos los reclamos acumulados observados y reportados en todos los años de desarrollo, hasta el más reciente año, es el monto total de los reclamos que son conocidos en el triángulo
Dev: Es el factor de desarollo ponderado. En promedio \(52.6\%\) del total de los reclamos han sido observados y reportados. Prácticamente la mitad de los reclamos aún no se han desarrollado
Ultimate: Este es el total estimado del último monto de reclamo para todos los periodos de origen combinados. Representa el mejor estimador para el costo de todos los reclamos, incluyendo montos ya observados (latest) y montos futuros (IBNR)
IBNR: Es el monto estimado de los reclamos que han ocurrido pero que no han sido reportados y que están aún por desarrollarse
Mack S.E: Es el error estándar total para el estimado IBNR. Cuantifica la variabilidad de la reserva IBNR
CV(IBNR): Es el coeficiente de variación del IBNR, es calculado como el error estándar (Mack S.E) divido por la reserva IBNR. Esto nos ayuda a expresar el error estándar como un porcentaje del la reserva IBNR estimada
Vamos a ocupar la función BootChainLadder que realiza
los pasos necesarios para este metodo, como se explicó en la sección de
la propuesta de modelos
Veamos más detalles del modelo
Histogram of total IBNR
Muestra la distribución de las frecuencias obtenidas por la simulación del IBNR, esto es, el número de simulaciones que resultaron del IBNR estimado encontrarse dentro de un rango específico.
Las pequeñas lineas verticales representan los valores exactos indivuduales de cada simulación del IBNR
ecdf(Total IBNR)
Representa la función de distribución acumulada empírica. Esto es, la proporción de simulaciones del IBNR que son menores o igual a algún valor dado en el eje x. Por ejemplo, si la curva intersecta 0.5 en el eje y, en un valor IBNR aproximado de 4.5e+10 implica que el \(50\%\) de las simulaciones bootstrap generaron un IBNR estimado de 4.5e+10 o menos
La forma en “S” es típica de las funciones acumuladas, es específico de las que son sesgadas. La gran parte de los valores están concentrados en una tendencia central y pocos valores en los extremos, un comportamiento ideal
Estas dos gráficas nos dan una pista de cuál es el intervalo adecuado donde la estimación de la reserva IBNR se puede encontrar
Simulated ultimate claims cost
Se emplean box plots para representar la distribución simulada de los costos de los reclamos para cada origen de periodo. Cada box plot resume la dispersión de este valor derivado de cada simulación. La línea central de cada box plot representa la mediana
Se presenta variabilidad en el transcurso de los años, debido a el cambio de tamaño de las cajas, además de tener valores que se alejan del rango intercuartil en cada periodo
Latest actual incremental claims against simulated values
Se hace una comparación de los valores de la diagonal del triángulo contra la distribución de esos mismos valores pero de las simualaciones. Cada box plot representa la dispersión de los valores de la simulación con los reales
Estas dos últimas gráficas sirven para validar el modelo; principalemente son un indicador de qué tan bien las simulaciones del modelo se asemejan con las más recientes observaciones.
Un modelo se ajustará con precisión cuando los puntos rosas (valores observados) se encuentren dentro del rango intercuartil (es decir, dentro del box plot)
Como observamos, se cumple en la mayoría de las gráficas, por lo tanto, las simulaciones bootstrap parecen ser consistentes con la experiencia real; los únicos casos distintos son el de 2020 y 2021
Posiblemente hay un sesgo en la estimación para esos años, si el punto rosa se posiciona significativamente por encima de la caja, es una notable desviación indicando que el incremento actual de los reclamos observados para esos periodos, fueron más altos que los de la simulación del modelo. Similar para el caso contrario
Esto sugiere que los reclamos actuales fueron mayores, indicando una subestimación del modelo para el 2020. Caso contrario para el año 2021, el cual hay una sobreestimiación (mínima)
La reserva IBNR estimada bajo este modelo es
| Totals | |
|---|---|
| Latest: | 43913222356 |
| Mean Ultimate: | 85802704562 |
| Mean IBNR: | 41889482206 |
| SD IBNR: | 15377630770 |
| Total IBNR 75%: | 49643621917 |
| Total IBNR 95%: | 71785344851 |
Latest: Total acumulado de los reclamos observados (triangulo superior)
Mean ultimate: Promedio del total de los costos ultimos de todas las simulaciones realizadas (999). Este el el mejor estimador del costo final total de todos los reclamos, tanto pagados como por pagar
Mean ultimate: Este es el promedio de las reservas IBNR simuladas.
SD IBNR: Desviación estándar de las reservas IBNR. Cuantifica la variabilidad de la reserva IBNR estimada
Total IBNR 75%: Basado en las simulaciones, hay un 75% de probabilidad de que la reserva IBNR sea de menor o igual a \(49643621917\)
Total IBNR 95%: Basado en las simulaciones, hay un 95% de probabilidad de que la reserva sea menor o igual a \(71785344851\)
Una vez creados los modelos, y obteniendo los resultados, vamos a realizar una tabla resumen para poder apreciar mejor las diferencias
resultados <- data.frame(Métrica = c('IBNR estimado', 'Error estándar', 'Coef de variación'),
"Chain Ladder" = c(number(ibnr_cl, big.mark = ",", accuracy = 0.01),'-','-'),
"Mack" = c(number(tot_mack$Totals[4], big.mark = ",", accuracy = 0.01), number(tot_mack$Totals[5], big.mark = ",", accuracy = 0.01),number(tot_mack$Totals[6]*100, big.mark = ",", accuracy = 0.01)),
"Bootstrap CL" = c(number(tot_bcl$Totals[3], big.mark = ",", accuracy = 0.01), number(tot_bcl$Totals[4], big.mark = ",", accuracy = 0.01), (tot_bcl$Totals[4]/tot_bcl$Totals[2])*100))
kable(resultados)| Métrica | Chain.Ladder | Mack | Bootstrap.CL |
|---|---|---|---|
| IBNR estimado | 39,591,684,986.96 | 39,591,684,986.96 | 41,889,482,205.53 |
| Error estándar | - | 11,469,420,468.32 | 15,377,630,770.27 |
| Coef de variación | - | 28.97 | 17.9220816509898 |
IBNR Estimado:
Chain Ladder y Mack: Los dos modelos nos proveen de la misma estimación, esto es normal ya que el modelo Mack usa los mismos factores de desarrollo para la proyección de los reclamos futuros, sólo agrega otras estadísticas, como el error estándar
Bootstrap: Este modelo nos da un estimado ligeramente más grande; esto es significante ya que nos podría sugerir que existen escenarios de gran variación que impacta en los reclamos futuros.
Error estándar:
Chain Ladder: No provee error estándar, debido a que es un método determinístico.
Mack y bootstrap: Cuantifica una incertidumbre ligeramente similar, siendo más alta la de bootstrap
Coeficiente de variación:
Chain Ladder: No aplicable.
Mack y Bootstrap: El modelo Mack tiene un coeficiente elevado, implicando que el modelo bootstrap da un estimado IBNR más preciso
Respecto a Chain Ladder
Si bien, este modelo es el más simple; sólo nos ayuda a obtener una estimación como un punto, no como algún intervalo donde la reserva pudiera estar. Esto da camino a inexactitud y hasta problemas financieros (de solvencia) si se toma alguna decisión sólo usando este estimador.
Respecto a Mack
Thomas Mack notó que los requerimentos de su modelo son “raramente satisfechos”. Como analizamos en la sección anterior, las suposiciones fueron violadas
Por otro lado, las gráficas de los residuales sugieren que este modelo podría estar equivocado en la estimación de la reserva para ciertos periodos de origen. De este modo, la ligera tendencia negativa a través de los años implica que el modelo está sobre estimando la reserva para años más recientes
Con esto, hay un impacto negativo en la confianza y exactitud de la reserva estimada por el modelo Mack (misma que la del modelo determinístico Chain Ladder). Además, queda comprobado con la desviación estandar, que existe una desviación grande; no tendríamos un umbral minimo ni máximo para la reserva, lo que podría afectar a la salud financiera de la empresa
Respecto a Bootstrap
Sin duda, este puede ser el modelo más robusto y confiable para el conjunto de datos, sin embargo aún puede mejorar.
Generalmente las simulaciones se comportaron dentro de los rangos de los datos reales, esto da camino a más exactitud y por ende, confianza en el modelo. Aunque existen dos periodos en las que hay una sobre estimación y después una subestimación, no impacta en mucho en la reserva final
Pareciera que el Bootstrap, a través de las simulaciones va “conociendo” el comportamiento de los pagos, y rescata todas esas desviaciones en una reserva ligeramente mayor, pero que es más precisa y menos volátil
Sobre el EDA
Si bien nuestros datos no son puramente reales, debido a la construcción de los periodos de desarrollo, agregando que existen dos outliers en los años 2017 y 2018; nos hace comprender por qué los supuestos del modelo (es especial Mack) fueron diferentes en el coeficiente de variación, pareciera que el modelo Bootstrap logra comprender los datos atípicos y no sesga totalmente los resultados
¿Por qué es importante tener cuidado con la subestimación o sobreestimición?
Si una compañía de seguros subestima sus reservas IBNR, significa que no ha apartado suficiente dinero para cubrir las reclamaciones futuras que eventualmente se reportarán. Esto puede tener consecuencias graves:
Pérdidas Financieras: La compañía tendrá que pagar las reclamaciones con fondos no previstos, lo que puede llevar a una disminución de las ganancias, reducción de la estabilidad financiera e incluso la insolvencia o bancarrota.
Multas y Sanciones Regulatorias: Los organismos reguladores exigen a las aseguradoras mantener reservas adecuadas para asegurar que puedan cumplir con sus obligaciones.
Estados Financieros Inexactos: Los estados financieros de la compañía no reflejarán su verdadera posición financiera, lo que puede inducir a error a inversores y otras partes interesadas.
Por otro lado, si una compañía de seguros sobreestima sus reservas IBNR, significa que ha apartado más dinero del necesario para cubrir los siniestros futuros. Aunque a primera vista podría parecer más conservador, también tiene implicaciones negativas:
Mayores Requisitos de Capital: La compañía podría estar obligada a mantener un capital más alto del necesario, lo que inmoviliza recursos que podrían ser invertidos de manera más productiva.
Primas Más Altas: Para justificar las reservas excesivas, la compañía podría establecer primas más elevadas para los asegurados. Esto puede hacer que sus productos sean menos atractivos y competitivos en el mercado.
Reducción de la Competitividad: Las primas más altas o los mayores requisitos de capital pueden poner a la compañía en desventaja competitiva frente a otras aseguradoras que estiman sus IBNR de manera más precisa.
Estados Financieros Inexactos: Al igual que con la subestimación, la sobreestimación distorsiona los estados financieros, inflando los pasivos y subestimando potencialmente las ganancias reales de la empresa.
Reconocimiento Prematuro de Ganancias/Dividendos: En algunos casos, una sobreestimación histórica puede llevar a una percepción de que la compañía tiene un mejor desempeño del que realmente tiene, lo que podría resultar en una declaración de dividendos que no reflejan la verdadera rentabilidad.
Impacto en la Negociación de Reaseguros: Una sobreestimación de reservas podría afectar los términos de los contratos de reaseguro, ya que la percepción del riesgo de la compañía podría ser diferente a la realidad.
La principal diferencia entre los modelos de estimación de reservas IBNR radica en su tratamiento de la incertidumbre. El modelo Chain Ladder proporciona únicamente una estimación puntual de la reserva, lo que implica una falta de flexibilidad e invarianza en las estimaciones.
En contraste, los modelos de Mack y Bootstrap son estocásticos. Esto significa que ambos incorporan una medida de incertidumbre, cuantificada a través del error estándar y el coeficiente de variación, una ventaja crucial para la gestión de riesgos.
El modelo Bootstrap generalmente ofrece una medida de incertidumbre más completa y fiable, tal como hemos comprobado con nuestros datos. Este modelo aborda dos áreas críticas en la gestión de riesgos:
La incertidumbre en los factores de desarrollo.
Las fluctuaciones aleatorias de futuros reclamos.
En comparación, el modelo de Mack se limita a medir la posible incertidumbre derivada de los factores de desarrollo.
La métrica decisiva en nuestra elección de modelo fue el error estándar. El modelo Bootstrap presenta el error estándar más bajo, lo que indica una mayor estabilidad en la predicción. Aunque el Chain Ladder es útil para obtener estimaciones rápidas, su uso actual es inadecuado dadas las normativas vigentes que exigen una comprensión más profunda de la incertidumbre asociada a las reservas.
Es relevante mencionar que, al inicio de este proyecto, consultamos investigaciones clave sobre la comparación de estos métodos (principalmente de Martinek y Jack Li). Es sorprendente cómo las conclusiones de dichos trabajos se alinean con los principales hallazgos de nuestra propia investigación.
Finalmente, identificamos un área de mejora en nuestra base de datos. Si bien la creación de la variable “año de pago” fue necesaria para este proyecto, los modelos se comportaron adecuadamente, demostrando su robustez.
Casualty Acturial Society, Taylor, G., & McGuire, G. (2016). Stochastic loss reserving using generalized linear models. CAS. https://www.casact.org/sites/default/files/2021-02/03-Taylor.pdf
Clark, D. (2006). Stochastic Reserving: Stochastic Reserving. Casualty Actuarial Society. https://www.casact.org/sites/default/files/presentation/clrs_2006_handouts_clark.pdf
Comisión Nacional de Seguros y Fianzas. (s.f.). INSTITUCIONES Y SOCIEDADES MUTUALISTAS INCENDIO. Cnsf.gob.mx. https://www.cnsf.gob.mx/EntidadesSupervisadas/InstitucionesSociedadesMutualistas/Paginas/Incendio.aspx
Comisión Nacional de Seguros y Fianzas. (diciembre, 2024). RR8. manual del sistema estadístico del ramo de incendio . https://www.cnsf.gob.mx/Sistemas/Paginas/InformacionEstadistica.aspx
Gesmann, M. (Febrero 6, 2025). ChainLadder: Claims reserving with R. R-Project.org. https://cran.r-project.org/web/packages/ChainLadder/vignettes/ChainLadder.html#bootstrap-chain-ladder
Insureware (s.f.). Link ratios, Mack, Murphy, Over-Dispersed Poisson and the bootstrap technique Software Solutions and eConsulting for P&C Insurance Do link ratio methods work for your data? https://f1020150e567b05769a8-2927ea307d22360fd718cda1c0ed4822.ssl.cf2.rackcdn.com/Brochures/LinkRatiosMackAndBootstrap.pdf
Kim, B. (Septiembre 21, 2015). Understanding Diagnostic Plots for Linear Regression Analysis | UVA Library. Library.virginia.edu. https://library.virginia.edu/data/articles/diagnostic-plots
Li, J. (s.f.). COMPARISON OF STOCHASTIC RESERVING METHODS. https://fbe.unimelb.edu.au/__data/assets/pdf_file/0019/2592001/131.pdf
Martinek, L., Miklós Arató, Miklós Mályusz, & Distributional Models. (2015). Comparison of Stochastic Claims Reserving Models in Insurance. ArXiv (Cornell University). https://doi.org/10.48550/arxiv.1501.06155
Shapland, M., & Kah, J. W. (s.f.). Bootstrap Modeling: Beyond the Basics. Casualty Actuarial Society. https://www.casact.org/sites/default/files/database/forum_10fforum_shaplandleong.pdf
Venter, G. (s.f.). TESTING THE ASSUMPTIONS OF AGE-TO-AGE FACTORS. https://www.casact.org/sites/default/files/2021-03/7_Venter_Factors.pdf
Zehnwirth, B. (Agosto, 1996). Three powerful diagnostic models for loss reserving. https://fbe.unimelb.edu.au/__data/assets/pdf_file/0008/2592152/34.pdf