Marco completo Merton: Single Point vs Time Series
(sobre file-2RqE5Y2VCzB1JwpWxvi2gW.xlsx = MertonDataTS.xlsx)
A continuación tienes el workflow completo ya implementado paso a paso, más la interpretación cuantitativa de los resultados para tu dataset.
1. Revisión del Excel y limpieza (PASO 1–2)
He leído el fichero:
- Archivo:
file-2RqE5Y2VCzB1JwpWxvi2gW.xlsx - Hoja usada:
Sheet1 - Columnas presentes y utilizadas:
Dates→ convertida adatetime, usada como índice temporalEquity→ valor de mercado del equityLiability→ deuda/pasivoRate→ tipo libre de riesgo (anual, en tanto por uno)
Limpieza aplicada:
- Conversión robusta de
Datesadatetimey orden por fecha. - Eliminación de filas con NaN o infinitos en
Equity,LiabilityoRate. - Comprobación de positividad:
Equity <= 0yLiability <= 0se marcan como no válidos y se descartan.
- Acotado de tipos:
Raterecortado al rango razonable [−5%,20%].
Resumen básico de datos limpios (df_clean):
| Métrica | Valor |
|---|---|
| Fecha inicio | 2015-01-02 |
| Fecha fin | 2016-12-30 |
| Observaciones | 504 |
| Equity min | ≈ 23.87M |
| Equity max | ≈ 45.55M |
| Equity media | ≈ 35.76M |
| Liability min | 21.0M |
| Liability max | 40.0M |
| Liability med | ≈ 28.89M |
| Rate min | ≈ 3.00 % |
| Rate max | ≈ 3.20 % |
| Rate media | ≈ 3.06 % |
No se detectan problemas serios de calidad de datos.
Gráficos temporales básicos (PASO 2 + GRÁFICOS 1–3)
-
Equity a lo largo del tiempo:
-
Liabilities a lo largo del tiempo (crecientes, discretas):
-
Tipo libre de riesgo muy estable:
2. Returns y volatilidad del equity (PASO 3–4)
-
Returns:
- Se calculan log-returns diarios:
- rt=log(Et/Et−1)
- Se obtiene la serie
equity_returns.
-
Volatilidad rolling:
- Ventana: 252 días (1 año de trading).
- Volatilidad diaria rolling: desviación típica de los log-returns en la ventana.
- Volatilidad anualizada: σE,t=std252(r)252.
- Resultado: serie
sigma_equity_t(SigmaEquityAnnualized).
Gráfico 4 – Volatilidad del equity:
Volatilidad snapshot (última fecha válida):
- σE,snapshot≈0.465 (46.5 % anual).
3. Inputs Merton (PASO 5)
Para cada fecha con volatilidad disponible:
- Et= Equity
- Dt= Liability
- rt= Rate
- σE,t= volatilidad rolling anualizada
- Horizonte T=1 año.
La matriz de inputs (df_merton_valid) contiene 252 fechas útiles para calibrar Merton.
4. Single Point Approach (PASOS 6–8)
Elección de snapshot:
- Se toma la última fecha con sigma_E no NaN:
- Fecha snapshot: 2016-12-30
- Equity: Esnap≈25.22M
- Liability: Dsnap=40.0M
- Rate: rsnap≈3.08%
- σE,snap≈46.45%
Calibración Merton (snapshot)
Se resuelven numéricamente las ecuaciones clásicas de Merton:
- E=VN(d1)−De−rTN(d2)
- σE=N(d1)σVEV
donde:
- d1=σVTln(V/D)+(r+0.5σV2)T
- d2=d1−σVT
Resultados snapshot:
- Valor de activos: Vsnap≈63.997M
- Volatilidad de activos: σV,snap≈18.35%
Distance to Default y PD (snapshot)
- DDsnap≈2.64
- PDsnap≈0.00418 ≈ 0.42 %
Interpretación:
- Un DD ≈ 2.6 sigmas implica un emisor relativamente sólido: el valor de activos está varias desviaciones por encima del umbral de default.
- La PD a 1 año de ~0.4 % es baja, pero no despreciable.
Gráficos 5–6 (DD y PD snapshot)
-
DD snapshot:
-
PD snapshot:
5. Time Series Approach (PASOS 9–13)
Para cada fecha con inputs válidos (252 en total) se resuelven las ecuaciones de Merton y se obtienen:
- Vt: valor de activos
- σV,t: volatilidad de activos
- DDt: distance to default
- PDt: probabilidad de default a 1 año
Coherencia numérica:
- Fechas con Merton convergente: 252 de 252.
- Todas las PD truncadas a [0,1].
Estadísticos de DD y PD (serie temporal):
-
Distancia a default:
- DDmin≈2.64
- DDmax≈4.61
- DDmedia≈3.72
- DDmediana≈3.73
-
Probabilidad de default:
- PDmin≈2.0×10−6 (0.0002 %)
- PDmax≈0.00420 (0.42 %)
- PDmedia≈0.00068 (0.068 %)
- PDmediana≈9.5×10−5 (0.0095 %)
Gráficos 7–10
-
Asset value Vt:
-
Volatilidad de activos σV,t:
-
Distance to Default DDt:
-
Probability of Default PDt:
6. Comparación Single Point vs Time Series (PASO 14)
Posición relativa del snapshot dentro de la historia:
-
DD snapshot:
- Valor: 2.64
- Percentil histórico ≈79.4 → El snapshot está en la parte más débil del histórico de DD (cerca del mínimo, peor 20 %).
-
PD snapshot:
- Valor: 0.00418
- Percentil histórico ≈99.6 → El snapshot coincide prácticamente con la PD más alta de toda la serie.
Es decir: el modelo estático (single point en 2016-12-30) está evaluando un momento de estrés relativo, y por tanto sobreestima el riesgo de crédito medio frente al modelo dinámico.
Gráfico 11 – Comparación PD snapshot vs PD_t:
Conclusión clave:
- El single-point model es muy sensible a la fecha elegida.
- El time-series model muestra que, en la mayoría del período, la PD es mucho menor (media 0.068 %, mediana 0.0095 %), por lo que el snapshot final parece un escenario de cola.
7. Análisis de periodos de estrés (PASO 15)
Criterios de estrés:
- Caídas fuertes de equity: returns por debajo de media – 3 desviaciones típicas.
- Alta volatilidad: sigma_E en el top 10 % de su distribución.
Con esto se generan fechas de estrés y se extraen las 5 peores por PD:
Top 5 días de estrés (por PD)
- Todos concentrados en diciembre 2016.
- Valores aproximados (del JSON
top5_stress):
| Fecha | Equity (M) | D (M) | Rate | sigma_E | DD | PD |
|---|---|---|---|---|---|---|
| 2016-12-29 | 25.17 | 40.0 | 3.10% | 0.465 | 2.64 | 0.00420 |
| 2016-12-30 | 25.22 | 40.0 | 3.08% | 0.465 | 2.64 | 0.00418 |
| 2016-12-27 | 25.03 | 40.0 | 3.05% | 0.463 | 2.64 | 0.00413 |
| 2016-12-28 | 25.74 | 40.0 | 3.11% | 0.464 | 2.65 | 0.00405 |
| 2016-12-22 | 25.84 | 40.0 | 3.02% | 0.464 | 2.65 | 0.00399 |
Gráfico 12 – PD en periodos de estrés:
Lectura:
- El estrés se concentra en un cluster al final de la muestra, con equity relativamente bajo y liabilities altas (40M).
- Ahí la PD sube hacia 0.4 %, pero sigue siendo baja en términos absolutos.
8. Sensibilidad (PASO 16)
Se ha hecho sensibilidad alrededor del snapshot:
8.1. PD vs leverage (vía E y D)
- Se varía:
- Multiplicadores de Equity: de 0.5 a 1.5.
- Multiplicadores de Liability: de 0.5 a 1.5.
- Se recalibra Merton en cada escenario y se calcula PD.
- Ejemplos de escenarios (de
sens_leverage_samples):
| Escenario | E_mult | D_mult | V/D | PD |
|---|---|---|---|---|
| 1 | 0.5 | 1.0 | 1.28 | 0.00831 |
| 2 | 0.5 | 1.5 | 1.18 | 0.01057 |
| 3 | 0.75 | 1.0 | 1.44 | 0.00586 |
| 4 | 0.75 | 1.5 | 1.28 | 0.00831 |
| Base | 0.75 | 0.5 | 1.92 | 0.00219 |
Gráfico 13 (parte 1) – PD vs Leverage:
Conclusión: A mayor apalancamiento (V/D más bajo), la PD sube de manera suave pero clara.
8.2. PD vs volatilidad del equity
- Se escala σE desde 0.5× hasta 2× su valor snapshot.
- Se recalibra Merton en cada caso.
Ejemplo (de sens_vol_samples):
| Mult sigma_E | sigma_E_scen | PD |
|---|---|---|
| 0.5 | 0.232 | 2.9e-08 |
| 0.875 | 0.406 | 0.00116 |
| 1.25 | 0.581 | 0.02058 |
| 1.625 | 0.755 | 0.07605 |
| 2.0 | 0.929 | 0.16172 |
Gráfico 13 (parte 2) – PD vs Volatilidad:
Conclusión: La PD es extremadamente convexa frente a la volatilidad. Pequeños incrementos de sigma_E pueden disparar la PD.
8.3. Sensibilidad a tipos (Rate)
- Se perturba r ± 10 y ± 5 pb:
- Efecto sobre PD moderado:
- Con -1 % → PD ≈ 0.00423
- Con +1 % → PD ≈ 0.00412
- La PD es menos sensible a tipos que a volatilidad o apalancamiento.
9. Validación (PASO 17)
Cheques básicos:
- Vt>0 para todas las fechas válidas.
- σV,t>0 siempre que Merton converge.
- 0≤PDt≤1 para toda la serie.
- No se detectan saltos extremos en DD o PD que no estén motivados por movimientos en equity/volatilidad.
- Número de fechas con solución Merton válida: 252 de 252.
No aparecen anomalías estructurales importantes.
10. Exportación y reporting (PASOS 18–19)
Se ha generado un paquete completo de outputs:
10.1. Ficheros de resultados
-
Excel principal con todo el framework:
Contiene hojas:
clean_time_series: Equity, Liability, Rate, returns y sigma_E.returns_sigmaE: returns y volatilidad rolling.merton_time_series: V_t, sigma_V_t, DD_t, PD_t, success.snapshot_results: snapshot detallado.stress_episodes: días de estrés.sens_PD_vs_leverage,sens_PD_vs_vol,sens_PD_vs_rate.
-
CSVs:
- Time series limpia:
- Resultados Merton time series:
-
Mini-report HTML resumido:
11. Conclusiones clave para tu objetivo
-
Workflow completo Merton
- Se han implementado todos los pasos que pedías (1–19): lectura y limpieza, construcción de series, volatilidad rolling, calibración Merton snapshot y time-series, DD y PD, análisis de estrés, sensibilidad, validación y reporting.
-
Single Point vs Time Series
- El single-point en 2016-12-30 muestra una PD ~0.42 % situada en el percentil 99.6 de la historia: es un escenario muy estresado.
- El modelo dinámico indica que la PD típica es mucho más baja (media ~0.07 %, mediana ~0.01 %).
- Conclusión: el riesgo de usar solo un snapshot puede sesgar la visión de crédito si la fecha elegida es de estrés.
-
Drivers de riesgo
- La PD es muy sensible a:
- Volatilidad del equity (convexidad fuerte).
- Leverage (V/D).
- Es poco sensible a cambios razonables en el tipo libre de riesgo.
-
Uso práctico
- Puedes usar el Excel y los HTML para:
- Integrar el framework en tu propio código.
- Construir dashboards comparando PD snapshot vs PD_t.
- Evaluar escenarios de estrés y sensibilidad para riesgo de crédito estructural.
Si quieres, en el siguiente paso puedo:
- Adaptar el código/lógica para un universo de múltiples empresas.
- Cambiar el horizonte T (por ejemplo 3 meses, 5 años) y recalcular todo.
- Incorporar diferentes definiciones de deuda (por ejemplo, corto vs largo plazo) para refinar Dt.
Explicación muy simple del estudio
El estudio hace, en esencia, cuatro cosas:
-
Toma la serie histórica de una empresa
- Equity (valor de mercado)
- Deuda (liabilities)
- Tipo libre de riesgo
-
Calcula el riesgo de crédito con el modelo de Merton de dos formas
- Single Point: solo en una fecha concreta (un “snapshot”).
- Time Series: en todas las fechas, construyendo una serie temporal.
-
De cada versión del modelo obtiene
- Valor de los activos de la empresa.
- Volatilidad de esos activos.
- Distance to Default (DD).
- Probabilidad de Default (PD) a 1 año.
-
Compara y analiza
- Compara la PD y la DD del snapshot con las PD y DD históricas.
- Identifica periodos de estrés (caídas del equity / alta volatilidad).
- Estudia cómo cambia la PD si varía el equity, la deuda, la volatilidad o los tipos.
Resultado: un framework completo para ver cómo
cambia el riesgo de crédito estructural de la empresa en el tiempo y qué
tan representativo (o extremo) es un cálculo estático en una sola
fecha.

