SIMA: De Datos Crudos del INEGI a Requerimientos de Capital bajo LISF, End-to-End
SIMA centraliza las técnicas actuariales para valuar seguros de vida: toma mortalidad cruda de INEGI/CONAPO, la gradúa con métodos como Whittaker-Henderson y Lee-Carter para obtener curvas que respetan la biología humana, y proyecta hacia el futuro para calcular primas, reservas y requerimientos de capital bajo LISF. Todo expuesto como API, lo que permite conectarlo con otros sistemas, automatizar análisis de sensibilidad y cumplir con los requisitos de la CNSF. Código abierto y diseñado para crecer hacia otros ramos.
La carrera de actuaría en México enseña , , funciones de conmutación y el principio de equivalencia. También enseña a construir tablas de vida. Lo que trata como secundario, como un ejercicio mecánico, es justamente lo que en la práctica define el trabajo actuarial: ante datos empíricos reales, cuál es la mejor forma de llegar a esa tabla. Qué método de graduación, qué modelo de proyección, cómo manejar un evento catastrófico en la serie temporal. Esas decisiones tienen implicaciones regulatorias y financieras concretas, y son el núcleo de lo que una aseguradora defiende ante la CNSF cada trimestre. SIMA es un intento de construir ese pipeline completo, desde el CSV crudo hasta el SCR final, con cada paso documentado, testado y expuesto vía API.
El punto de partida son los datos crudos de mortalidad mexicana: conteos de defunciones por edad y año del INEGI cruzados con estimaciones de población a mitad de año del CONAPO. La tasa cruda resultante es ruidosa, especialmente en edades extremas, y necesita un método formal de graduación antes de ser actuarialmente útil. Esa distancia entre el dato crudo y la tabla de vida lista para pricing es el problema central que SIMA resuelve.
El pipeline de mortalidad
Graduar tasas de mortalidad es análogo a ajustar una línea de tendencia, pero con una restricción: la curva debe respetar la forma biológica conocida (curva en forma de tina). Whittaker-Henderson hace exactamente eso: optimiza , donde es el parámetro que decide cuánto peso darle al dato observado vs. a la suavidad esperada. Con bajo, reproduces cada oscilación; con alto, impones una tendencia. Con datos de México, entre 10 y 1000 con diferencias de segundo orden produce curvas que respetan esos patrones sin perseguir el ruido muestral. La solución se resuelve eficientemente con scipy.sparse.linalg.spsolve.
Sobre los datos graduados se ajusta el modelo Lee-Carter: . Cada parámetro tiene una interpretación demográfica precisa. es el patrón promedio de mortalidad por edad, la forma general de la curva. mide la sensibilidad de cada edad al cambio temporal: edades donde es alto mejoran rápido cuando baja, edades donde es bajo son refractarias a la mejora. es el índice temporal de mortalidad, la señal que resume en un solo número por año la tendencia histórica de mejora de la mortalidad. La estimación via SVD es elegante porque la descomposición en valores singulares da exactamente la aproximación de rango 1 que maximiza la varianza explicada del logaritmo de las tasas. Con datos mexicanos de 1990-2019 (pre-COVID), el primer componente singular explica el 77.7% de la varianza, lo cual es consistente con la literatura internacional. SIMA también procesa datos de EE.UU. y España del Human Mortality Database, lo que permite comparar velocidades de mejora entre mercados: el drift mexicano pre-COVID () frente al estadounidense y español revela que la mortalidad no mejora al mismo ritmo en todos los países.
El problema interesante apareció con la re-estimación de . El Lee-Carter original requiere re-estimar para que el total de muertes observado coincida con el total implicado por el modelo. Esto se resuelve encontrando el punto donde una función residual cruza el cero. Pero cuando pregraduas los datos con Whittaker-Henderson, algunos valores de se vuelven negativos en edades específicas (77, 78, 85 en los datos mexicanos), lo que hace que esa función se doble hacia adentro sin cruzar el cero: el algoritmo estándar busca un cruce y no lo encuentra, así que falla silenciosamente. La solución fue construir una búsqueda adaptativa que expande el intervalo progresivamente hasta encontrar ese cruce, o reconocer que no existe y usar el del SVD directamente. Este es el tipo de detalle que no aparece en los libros de texto pero que define si tu código funciona con datos reales.
La proyección usa Random Walk with Drift: . El drift estimado pre-COVID es (mortalidad mejorando consistentemente). El signo negativo es intuitivo: en Lee-Carter, baja cuando la mortalidad mejora, porque es positivo en promedio y cae cuando la gente vive más. Un drift de equivale a decir que el índice de mortalidad bajó, en promedio, 1.076 puntos por año durante ese período. Cuando incluyes los años de pandemia, el drift sube a : la tendencia de mejora en mortalidad se frenó. El impacto en primas es directo y cuantificable: entre 3% y 10% de incremento dependiendo del producto y la edad de emisión. Ese número importa porque es exactamente el tipo de análisis que la CNSF espera en una nota técnica de suficiencia de prima.
El motor financiero
Una vez que tienes una tabla de vida proyectada, el paso a funciones de conmutación es computacionalmente trivial pero conceptualmente profundo. combina la supervivencia con el valor del dinero en el tiempo en un solo número. se calcula con recursión hacia atrás: , . Lo que parecian sumatorias anidadas de complejidad se convierten en operaciones . Las funciones de conmutación son, en esencia, una estructura de datos que precomputa toda la información actuarial necesaria para cualquier cálculo de anualidades, seguros y reservas.
El hallazgo mas importante del análisis de sensibilidad es que la tasa de interés domina todo. Para un seguro de vida entera a los 40 años, mover la tasa técnica de 2% a 8% produce un spread de 101% en la prima neta ($17,910 vs $7,014). Los shocks de mortalidad son importantes pero asimétricos: un incremento de 30% en genera +16.2% en prima, pero una reducción de 30% genera -18.2%. Esta asimetría se llama convexidad: la prima reacciona con más fuerza a una mejora en mortalidad que a un deterioro del mismo tamaño. En términos prácticos, los períodos de mejora reducen más las primas de lo que los períodos de deterioro comparable las elevan. Los seguros temporales son los mas proporcionales a mortalidad, casi lineales. Las dotales son las menos sensibles: el componente de ahorro domina y absorbe los shocks demográficos. Estos patrones son exactamente lo que un actuario de valuación necesita entender para defender sus hipótesis frente al regulador.
Requerimientos de capital bajo LISF
El marco de Solvencia II, adaptado en México a través de la LISF y la CUSF, requiere que las aseguradoras mantengan capital suficiente para absorber pérdidas con probabilidad del 99.5% a un año. SIMA implementa cuatro módulos de riesgo del SCR para vida, tomando como referencia la fórmula estándar de Solvencia II: mortalidad (+15% shock a ), longevidad (-20% shock a ), tasa de interés (100 bps como primera aproximación a un shock de curva), y catástrofe (spike de +35% calibrado con datos COVID como proxy del módulo pandemia). La identidad clave que simplifica todo es que el BEL (Best Estimate of Liabilities) es la reserva prospectiva. No hay matemáticas nuevas: para productos de muerte, y para rentas vitalicias. La maquinaria de funciones de conmutación que ya construiste para pricing sirve idénticamente para Solvencia II.
Los resultados del portafolio de prueba revelan la estructura del riesgo de una cartera de vida. El riesgo de tasa de interés representa el 79.7% del SCR total porque afecta simultáneamente a todos los productos. El riesgo de longevidad es segundo (44.4% antes de diversificación) porque las rentas vitalicias dominan el BEL: $4.27M de $5.16M total (83%). El riesgo de mortalidad es sorprendentemente pequeño (4.2%) porque los productos de muerte representan poca reserva relativa. El riesgo de catástrofe es el menor (2.4%). La diversificación reduce el SCR en 14.4%, gracias a la correlación negativa entre mortalidad y longevidad (): un evento que incrementa las muertes reduce simultáneamente las obligaciones de rentas vitalicias.
Decisiones de ingeniería
El backend son 12 módulos Python con una cadena de dependencias progresiva: a01_life_table no depende de nada, a02_commutation depende de a01, y asi hasta a12_scr que integra todo. Cada módulo expone una interfaz limpia, y los tests verifican propiedades actuariales formales: la identidad fundamental confirma que los valores actuariales son internamente consistentes, y la convergencia de a cero confirma que la tabla de vida es demográficamente válida. Son 240 tests en total, incluyendo 33 de integración que verifican los endpoints de la API.
El pipeline es sex-diferenciado: masculino, femenino y unisex. Los datos del HMD (Human Mortality Database) no se pueden redistribuir bajo su licencia CC BY 4.0, asi que los tests de CI usan datos mock generados con Gompertz-Makeham: , calibrado para reproducir el patrón biológico de mortalidad mexicana incluyendo el spike infantil y la joroba de adultos jóvenes.
Lo que me enseñó este proyecto
Tres lecciones técnicas que no esperaba. Primera: las restricciones de identificabilidad del SVD en Lee-Carter son justamente lo que da interpretación demográfica a los parámetros. Sin la restricción , y estan definidos salvo una constante multiplicativa arbitraria, y pierdes la capacidad de comparar sensibilidades entre edades. Segunda: la identidad fundamental dice algo concreto: un peso recibido hoy se puede descomponer exactamente en un seguro de vida (pago contingente al fallecimiento) mas una anualidad vitalicia (pagos contingentes a la supervivencia). Si tus funciones de conmutación no satisfacen esta identidad con precisión numérica, hay un bug. Tercera: el puente entre actuaria empírica y actuaria teórica es el método to_life_table(), que convierte tasas centrales proyectadas en probabilidades y construye a partir de ellas. Ese método de 15 líneas conecta todo el pipeline de Lee-Carter con toda la maquinaria clásica de conmutación. Sin el, tendrias dos mundos que no se hablan.
SIMA es una demostración de que un actuario puede entender y construir cada capa del pipeline regulatorio, desde el dato demográfico crudo hasta el número que aparece en el reporte de solvencia. El código, los tests y la documentación estan en GitHub, y la aplicación esta desplegada en Google Cloud Run.