// RIESGO · MÓDULO 07/12

Riesgo cuantitativo: del VaR al copiloto de riesgo

VaR y Expected Shortfall exactos, stress testing y el LLM como capa de explicación, nunca de cálculo.

Lectura ~38 minNivel intermedio-avanzadoEdición jul 2026Read in English


Los módulos 4 a 6 construyeron la capa de comprensión: fuentes de datos, RAG documental y prompts con salida estructurada. Con este módulo el curso entra en el Bloque III —razonar y decidir— y cambia de registro: aquí la protagonista es la matemática exacta y el LLM queda confinado al rol que la regla de oro le asigna (§1.2.2): narrar, orquestar y alertar, nunca calcular.

7.1 Medición del riesgo con fórmulas exactas

La gestión de riesgo cuantitativa descansa sobre un conjunto pequeño de fórmulas cuya procedencia es verificable: el RiskMetrics Technical Document de J.P. Morgan/Reuters (1996), los documentos del Comité de Basilea (d450, d457) y la literatura académica canónica (Rockafellar–Uryasev, Kupiec, Christoffersen, Bollerslev). Este módulo las presenta tal cual aparecen en las fuentes primarias, con la convención de pérdidas positivas: rtr_t denota el rendimiento logarítmico del día tt; α\alpha es el nivel de significancia de cola (0,01 para VaR al 99 %); zα=Φ−1(1−α)z_\alpha = \Phi^{-1}(1-\alpha) es el cuantil normal estándar de la cola derecha de pérdidas; φ\varphi y Φ\Phi son la densidad y la función de distribución de la normal estándar.

7.1.1 VaR, Expected Shortfall y validación

VaR paramétrico (delta-normal). Bajo rendimientos normales, el VaR a confianza 1−α1-\alpha y horizonte hh días para una cartera de valor VV con media diaria μ\mu y volatilidad diaria σ\sigma es (graphrag.com):

VaRα(h)=V(zα σh−μh),zα=Φ−1(1−α)\mathrm{VaR}_{\alpha}(h) = V\left(z_{\alpha}\,\sigma\sqrt{h} - \mu h\right), \qquad z_{\alpha} = \Phi^{-1}(1-\alpha)

con z0,05=1,645z_{0{,}05} = 1{,}645 (95 %) y z0,01=2,326z_{0{,}01} = 2{,}326 (99 %). La escala temporal aplica la regla de la raíz cuadrada del tiempo, σ(h)=σh\sigma(h) = \sigma\sqrt{h}, válida únicamente bajo rendimientos i.i.d. Para una cartera multi-activo con pesos ww y matriz de covarianzas Σ\Sigma (The Database for Multimodal AI):

σp2=w⊤Σw,VaRα=V⋅zαw⊤Σw\sigma_p^2 = w^{\top}\Sigma w, \qquad \mathrm{VaR}_{\alpha} = V \cdot z_{\alpha}\sqrt{w^{\top}\Sigma w}

VaR histórico (simulación histórica). Se reaplican los movimientos históricos de factores de los últimos TT días (típicamente 250) a la cartera actual y se ordenan los P&L hipotéticos L(1)≤L(2)≤⋯≤L(T)L_{(1)} \le L_{(2)} \le \dots \le L_{(T)}; el VaR es el cuantil empírico (arXiv.org):

VaRαHS=L(⌈T(1−α)⌉)\mathrm{VaR}_{\alpha}^{\mathrm{HS}} = L_{(\lceil T(1-\alpha) \rceil)}

Con T=250T = 250 y α=0,05\alpha = 0{,}05, el VaR al 95 % es el 13.º peor día (0,05×250=12,50{,}05 \times 250 = 12{,}5). No exige supuestos distribucionales y captura las colas de la muestra, pero al 99 % con 250 días solo hay unas 2,5 observaciones de cola, lo que produce alta variación muestral y respuesta lenta a cambios de régimen (arXiv.org).

VaR Monte Carlo y FHS. Se simulan NN trayectorias de factores bajo un modelo calibrado (GBM, Student-t, GARCH), se revalúa la cartera y se toma el cuantil de la distribución simulada (arXiv.org):

VaRαMC=F^L,N−1(1−α)\mathrm{VaR}_{\alpha}^{\mathrm{MC}} = \hat{F}^{-1}_{L,N}(1-\alpha)

donde F^L,N\hat{F}_{L,N} es la CDF empírica de las NN pérdidas simuladas. La variante Filtered Historical Simulation (Barone-Adesi, Bourgoin y Giannopoulos) ajusta un GARCH(1,1), extrae los residuos estandarizados zt=rt/σtz_t = r_t/\sigma_t y simula r~=σ^t+1z∗\tilde r = \hat\sigma_{t+1} z^{*} remuestreando z∗z^{*} con reemplazo; la evidencia comparativa muestra que el Monte Carlo normal subestima la cola izquierda frente a FHS (arXiv.org).

Expected Shortfall / CVaR. Para una variable de pérdida LL con CDF continua, el VaR y el ES se definen como (🦜️🔗 LangChain):

VaRα(L)=inf⁡{x:FL(x)≥1−α},ESα(L)=1α∫0αVaRu(L) du=E ⁣[L∣L≥VaRα(L)]\mathrm{VaR}_{\alpha}(L) = \inf\{x : F_L(x) \ge 1-\alpha\}, \qquad \mathrm{ES}_{\alpha}(L) = \frac{1}{\alpha}\int_{0}^{\alpha} \mathrm{VaR}_{u}(L)\,du = \mathbb{E}\!\left[L \mid L \ge \mathrm{VaR}_{\alpha}(L)\right]

Bajo normalidad existe forma cerrada:

ESα=σ φ(zα)α−μ\mathrm{ES}_{\alpha} = \sigma\,\frac{\varphi(z_{\alpha})}{\alpha} - \mu

Al 99 % el factor es φ(2,326)/0,01≈2,665\varphi(2{,}326)/0{,}01 \approx 2{,}665; al 97,5 %, φ(1,960)/0,025=0,0584/0,025=2,338\varphi(1{,}960)/0{,}025 = 0{,}0584/0{,}025 = 2{,}338, cifra central en el diseño de FRTB (§7.2). A diferencia del VaR, el ES es una medida coherente en el sentido de Artzner et al. (1999): satisface subaditividad, la propiedad que el VaR viola (🦜️🔗 LangChain). La representación variacional de Rockafellar–Uryasev (2000) convierte la estimación y optimización del CVaR en programación lineal (🦜️🔗 LangChain):

CVaR^β=min⁡c∈R{c+11−β⋅1T∑t=1T(Lt−c)+}\widehat{\mathrm{CVaR}}_{\beta} = \min_{c \in \mathbb{R}} \left\{ c + \frac{1}{1-\beta}\cdot\frac{1}{T}\sum_{t=1}^{T}(L_t - c)_{+} \right\}

con (x)+=max⁡(x,0)(x)_+ = \max(x, 0); el minimizador c∗c^{*} es el propio VaR. El estimador empírico en simulación histórica es simplemente el promedio de las ⌊Tα⌋\lfloor T\alpha \rfloor peores pérdidas.

Backtesting de VaR. Un modelo de VaR que no se valida es una opinión. Con el indicador de excepción It=1{Lt>VaRt}I_t = \mathbf{1}\{L_t > \mathrm{VaR}_t\}, el test de proporción de fallos de Kupiec (1995) contrasta la tasa observada N/TN/T contra la nominal pp (CurvedTrading):

LRPOF=−2ln⁡ ⁣[(1−p)T−NpN(1−NT)T−N(NT)N]  ∼  χ12LR_{POF} = -2\ln\!\left[\frac{(1-p)^{T-N}p^{N}}{\left(1-\frac{N}{T}\right)^{T-N}\left(\frac{N}{T}\right)^{N}}\right] \;\sim\; \chi^2_1
Test POF de Kupiec con T = 250 y p = 1 %LR_POF: 0 → 5,03, 2 → 0,11, 4 → 0,77, 6 → 3,56, 8 → 7,73, 10 → 1302468101214012345678910Excepciones observadas en 250 días (N)LR_POFcrítico χ²₁(0,95) = 3,84esperadas: 2,53,565,50
Figura 7.C. El estadístico LR_POF del test de Kupiec para un VaR al 99 % con 250 días: con 6 excepciones (3,56) el modelo pasa; con 7 (5,50) se rechaza. El umbral es afilado. Elaboración propia con la fórmula del módulo.

7.1.2 Volatilidad: la materia prima de todo número de riesgo

Volatilidad realizada. Con MM observaciones intradía equiespaciadas del log-precio y rendimientos rt,i=pt,i−pt,i−1r_{t,i} = p_{t,i} - p_{t,i-1} (QVeris AI):

RVt=∑i=1Mrt,i2,RVolt=RVtRV_t = \sum_{i=1}^{M} r_{t,i}^{2}, \qquad \mathrm{RVol}_t = \sqrt{RV_t}

Bajo una difusión con saltos, RVtRV_t es estimador consistente de la variación cuadrática cuando M→∞M \to \infty (Andersen–Bollerslev); con ruido de microestructura, la frecuencia óptima práctica es de 5 minutos (QVeris AI).

EWMA / RiskMetrics. La recursión del RiskMetrics Technical Document (4ª ed., 1996) es (graphrag.com):

σt2=λ σt−12+(1−λ) rt−12,λ=0,94 (diario),λ=0,97 (mensual)\sigma_t^2 = \lambda\,\sigma_{t-1}^2 + (1-\lambda)\,r_{t-1}^2, \qquad \lambda = 0{,}94 \text{ (diario)},\quad \lambda = 0{,}97 \text{ (mensual)}

Expandida, σt2=(1−λ)∑i=1∞λi−1rt−i2\sigma_t^2 = (1-\lambda)\sum_{i=1}^{\infty}\lambda^{i-1} r_{t-i}^2: pesos geométricos decrecientes con memoria efectiva ≈1/(1−λ)≈17\approx 1/(1-\lambda) \approx 17 días para λ=0,94\lambda = 0{,}94. Es un IGARCH sin reversión a la media (ω=0\omega = 0, α+β=1\alpha+\beta = 1), y su versión multivariante Σt=λΣt−1+(1−λ) rt−1rt−1⊤\Sigma_t = \lambda\Sigma_{t-1} + (1-\lambda)\, r_{t-1} r_{t-1}^{\top} es siempre semidefinida positiva (graphrag.com).

Pesos EWMA según la antigüedad del retornoλ = 0,94 (diario, RiskMetrics): 1 → 6,00 %, 11 → 3,23 %, 21 → 1,74 %, 31 → 0,94 %, 41 → 0,50 %, 51 → 0,27 %, 60 → 0,16 %. λ = 0,97 (mensual): 1 → 3,00 %, 11 → 2,21 %, 21 → 1,63 %, 31 → 1,20 %, 41 → 0,89 %, 51 → 0,65 %, 60 → 0,50 %λ = 0,94 (diario, RiskMetrics)λ = 0,97 (mensual)0 %1 %2 %3 %4 %5 %6 %1102030405060Antigüedad del retorno (días)Peso en la varianza de hoymemoria efectiva ≈ 17 días
Figura 7.B. Con λ = 0,94 el retorno de ayer pesa un 6 % y a los 17 días el peso es algo más de un tercio del inicial; con λ = 0,97 la memoria es más larga y plana. Elaboración propia con la recursión de RiskMetrics.

GARCH(1,1). El modelo de Engle (1982) y Bollerslev (1986) introduce reversión a la media (Bright Data):

σt2=ω+α εt−12+β σt−12,ω>0, α,β≥0, α+β<1\sigma_t^2 = \omega + \alpha\,\varepsilon_{t-1}^2 + \beta\,\sigma_{t-1}^2, \qquad \omega>0,\ \alpha,\beta\ge 0,\ \alpha+\beta<1

La varianza incondicional (nivel de largo plazo) es σˉ2=ω1−α−β\bar\sigma^2 = \dfrac{\omega}{1-\alpha-\beta}, y la predicción a kk pasos revierte geométricamente hacia ella:

Et[σt+k2]=σˉ2+(α+β)k−1(σt+12−σˉ2)\mathbb{E}_t[\sigma_{t+k}^2] = \bar\sigma^2 + (\alpha+\beta)^{k-1}\left(\sigma_{t+1}^2 - \bar\sigma^2\right)

La suma α+β\alpha+\beta mide la persistencia de los choques de volatilidad; EWMA es el caso límite ω=0\omega = 0, α+β=1\alpha+\beta = 1 (Bright Data). Caso numérico. Con α+β=0,97\alpha+\beta = 0{,}97, un pico de volatilidad que duplica el nivel de largo plazo (σt+12=2σˉ2\sigma_{t+1}^2 = 2\bar\sigma^2) tarda k≈ln⁡(0,5)/ln⁡(0,97)≈23k \approx \ln(0{,}5)/\ln(0{,}97) \approx 23 días en reducir el exceso a la mitad.

Drawdown máximo y asimetría de recuperación. Sea VtV_t la curva de equity y V‾t=max⁡s≤tVs\overline{V}_t = \max_{s\le t} V_s el máximo histórico; el drawdown es Dt=(Vt−V‾t)/V‾t≤0D_t = (V_t - \overline{V}_t)/\overline{V}_t \le 0 y (Investopedia):

MDDT=min⁡0≤t≤TVt−V‾tV‾t\mathrm{MDD}_T = \min_{0\le t\le T} \frac{V_t - \overline{V}_t}{\overline{V}_t}

La recuperación es asimétrica: una pérdida dd requiere una ganancia g=d1−dg = \dfrac{d}{1-d} para volver al máximo — una caída del 50 % exige una subida del 100 %, y una del 90 %, una del 900 % (Investopedia). Es la métrica de riesgo que los inversores realmente sienten, y la que ancla los ratios Calmar y Sterling.

7.1.3 Ratios de desempeño ajustado por riesgo

El catálogo completo, con sus convenciones y trampas documentadas:

Sharpe. Introducido como reward-to-variability ratio (Sharpe, 1966) (AlphaLog):

S=Rp−Rfσp,Sanual=Sdiario252    (solo bajo i.i.d.)S = \frac{R_p - R_f}{\sigma_p}, \qquad S_{\mathrm{anual}} = S_{\mathrm{diario}}\sqrt{252} \;\;(\text{solo bajo i.i.d.})

La anualización con 12\sqrt{12} o 252\sqrt{252} exige rendimientos i.i.d.; con autocorrelación serial positiva — típica de estrategias de hedge funds con valoraciones suavizadas — el Sharpe anualizado puede sobreestimarse hasta un 65 % (Lo, 2002) (Alpha Vantage). Es la advertencia metodológica más ignorada de la industria.

Sortino. Sustituye la volatilidad total por la desviación downside respecto al rendimiento mínimo aceptable τ\tau (databento.com):

Sortino=Rp−τσd,σd=1N∑i=1Nmin⁡(Ri−τ, 0)2\mathrm{Sortino} = \frac{R_p - \tau}{\sigma_d}, \qquad \sigma_d = \sqrt{\frac{1}{N}\sum_{i=1}^{N}\min(R_i - \tau,\,0)^2}

Omega (Keating–Shadwick, 2002). Usa toda la distribución, sin supuestos de momentos (databento.com):

Ω(θ)=∫θb[1−F(r)]dr∫aθF(r) dr  =  E[(R−θ)+]E[(θ−R)+]\Omega(\theta) = \frac{\displaystyle\int_{\theta}^{b}\left[1 - F(r)\right]dr}{\displaystyle\int_{a}^{\theta} F(r)\,dr} \;=\; \frac{\mathbb{E}[(R-\theta)^{+}]}{\mathbb{E}[(\theta-R)^{+}]}

con forma empírica Ω^(θ)=1n∑i=1n(Ri−θ)+1n∑i=1n(θ−Ri)+\hat\Omega(\theta) = \dfrac{\frac{1}{n}\sum_{i=1}^n (R_i-\theta)^{+}}{\frac{1}{n}\sum_{i=1}^n (\theta-R_i)^{+}} (Macroption).

Calmar. Calmar=CAGR∣MDD∣\mathrm{Calmar} = \dfrac{\mathrm{CAGR}}{|\mathrm{MDD}|}, típicamente sobre ventanas de 36 meses; introducido por Terry W. Young (1991) (quantvps.com). Sesgo de ventana: un track record que aún no ha vivido su crisis exhibe un Calmar artificialmente alto (quantvps.com).

Sterling. La definición original de Deane Sterling Jones (1981) es (Alpha Vantage):

Sterling=APRALD+10%\mathrm{Sterling} = \frac{APR}{ALD + 10\%}

con APRAPR el retorno anual compuesto y ALDALD el promedio de los máximos drawdowns anuales. El 10 % reflejaba el rendimiento de los T-bills en 1981; coexisten variantes con −10%-10\% y versiones modernas con RfR_f (langfuse.com). Regla editorial: citar siempre la convención usada.

Ulcer Index (Martin & McCann, 1987). Raíz cuadrática media de los drawdowns porcentuales desde el último máximo (TrueFoundry):

Ri=100×Pi−max⁡j≤iPjmax⁡j≤iPj,UI=1N∑i=1NRi2R_i = 100 \times \frac{P_i - \max_{j \le i} P_j}{\max_{j \le i} P_j}, \qquad UI = \sqrt{\frac{1}{N}\sum_{i=1}^{N} R_i^2}

El cuadrado penaliza conjuntamente la profundidad y la duración de las caídas; es la base del Ulcer Performance Index, UPI=(Rp−Rf)/UIUPI = (R_p - R_f)/UI (TrueFoundry).

Tracking error e information ratio. Para una cartera activa frente a su benchmark bb (🦜️🔗 LangChain):

TE=σ(Rp−Rb),IR=Rp−RbTETE = \sigma(R_p - R_b), \qquad IR = \frac{R_p - R_b}{TE}

La ley fundamental de la gestión activa de Grinold (1989) descompone el IR en habilidad y amplitud: IR≈IC⋅BRIR \approx IC \cdot \sqrt{BR}, donde ICIC es el coeficiente de información (correlación entre previsión y realización) y BRBR el número de apuestas independientes (NextFuture).

Momentos de orden superior y VaR modificado. Los rendimientos de renta variable exhiben asimetría negativa y exceso de curtosis (kosmoy.com):

S^=1n∑i=1n(ri−rˉσ^)3,K^=μ^4σ^4,Kexceso=K^−3\hat{S} = \frac{1}{n}\sum_{i=1}^{n}\left(\frac{r_i - \bar r}{\hat\sigma}\right)^3, \qquad \hat{K} = \frac{\hat\mu_4}{\hat\sigma^4}, \qquad K_{\mathrm{exceso}} = \hat K - 3

(normal: S=0S = 0, K=3K = 3). La expansión de Cornish–Fisher (Zangari, 1996) corrige el cuantil gaussiano (AgenticWire):

zCF=z+16(z2−1)S+124(z3−3z)Kexceso−136(2z3−5z)S2z_{CF} = z + \frac{1}{6}(z^2 - 1)S + \frac{1}{24}(z^3 - 3z)K_{\mathrm{exceso}} - \frac{1}{36}(2z^3 - 5z)S^2 VaRmod=V[zCF σh−μh]\mathrm{VaR}_{\mathrm{mod}} = V\left[z_{CF}\,\sigma\sqrt{h} - \mu h\right]

y Boudt, Peterson y Carl (2008) extienden la corrección a un ES modificado coherente, ESmod=σφ(z)α[1+z6S+z2−124Kexceso]−μ\mathrm{ES}_{\mathrm{mod}} = \sigma\frac{\varphi(z)}{\alpha}\left[1 + \frac{z}{6}S + \frac{z^2-1}{24}K_{\mathrm{exceso}}\right] - \mu (AgenticWire). La expansión deja de ser monótona para ∣S∣≳2|S| \gtrsim 2 o K≳6K \gtrsim 6: verificar la monotonía de zCFz_{CF} en α\alpha antes de reportarla (AgenticWire).

La siguiente tabla sintetiza las métricas de riesgo principales del módulo.

Tabla 7.1 — Métricas de riesgo: fórmula, horizonte, supuestos y limitación principal

MétricaFórmula resumidaHorizonte típicoSupuestos claveLimitación principal
VaR delta-normalVzασhV z_\alpha \sigma \sqrt{h}1–10 díasNormalidad, i.i.d., linealidadSubestima colas gordas y no-linealidades (graphrag.com)
VaR históricoL(⌈T(1−α)⌉)L_{(\lceil T(1-\alpha)\rceil)}1 día (250 obs.)La historia representa el futuro~2,5 obs. de cola al 99 %; lento ante régimen nuevo (arXiv.org)
VaR Monte Carlo / FHSF^L,N−1(1−α)\hat F^{-1}_{L,N}(1-\alpha)1–10 díasModelo de factores bien calibradoRiesgo de especificación; coste de revaluación (arXiv.org)
ES / CVaR1α∫0αVaRu du\frac{1}{\alpha}\int_0^\alpha \mathrm{VaR}_u\,du1–10 díasCola bien estimadaBacktesting estadísticamente difícil (kosmoy.com)
EWMA RiskMetricsλσt−12+(1−λ)rt−12\lambda\sigma_{t-1}^2 + (1-\lambda)r_{t-1}^2Diarioλ=0,94\lambda = 0{,}94 universalSin reversión a la media (IGARCH) (graphrag.com)
GARCH(1,1)ω+αε2+βσ2\omega + \alpha\varepsilon^2 + \beta\sigma^2Diario–mensualEstacionariedad, α+β<1\alpha+\beta<1Persistencia mal estimada en crisis (Bright Data)
MDDmin⁡t(Vt−V‾t)/V‾t\min_t (V_t - \overline V_t)/\overline V_tTodo el historialCurva de equity fielDepende de la ventana; mira al pasado (Investopedia)
Distribución de retornos diarios con VaR 99% y ES 97,5% marcados (datos sintéticos, ilustrativo)Retornos diarios (sintéticos, ilustrativo): −0,100 → 0, −0,065 → 0, −0,030 → 0,79, 0,005 → 32, 0,040 → 0, 0,075 → 0, 0,100 → 0. Densidad estimada: −0,100 → 0, −0,067 → 0,09, −0,033 → 0,35, 0,001 → 38, 0,034 → 0,36, 0,068 → 0, 0,100 → 0Retornos diarios (sintéticos, ilustrativo)Densidad estimada01020304050−0,100−0,075−0,050−0,0250,0000,0250,0500,0750,100Retorno diarioDensidadVaR 99 % = −3,05 %ES 97,5 % = −3,34 %
Figura 7.1. Distribución sintética de retornos diarios con colas gordas (mezcla normal / Student-t), con el VaR al 99 % y el ES al 97,5 % marcados. Con colas más pesadas que la normal, el ES se separa del VaR hacia la cola: exactamente el comportamiento que FRTB busca capitalizar. Datos generados con fines exclusivamente ilustrativos. Elaboración propia, jul-2026.

7.2 Riesgo de cartera y stress testing

7.2.1 Descomposición de Euler, escenarios y FRTB

Component y Marginal VaR. Con VaR paramétrico VaRp=zασpV\mathrm{VaR}_p = z_\alpha \sigma_p V y posiciones monetarias xix_i, la descomposición de Garman (1996) es (The Database for Multimodal AI):

MVaRi=∂VaRp∂xi=zα (Σx)iσpCVaRi=xi⋅MVaRi=zα xi(Σx)iσp\mathrm{MVaR}_i = \frac{\partial \mathrm{VaR}_p}{\partial x_i} = z_\alpha\,\frac{(\Sigma x)_i}{\sigma_p} \qquad \mathrm{CVaR}_i = x_i \cdot \mathrm{MVaR}_i = z_\alpha\,\frac{x_i(\Sigma x)_i}{\sigma_p}

equivalentemente, CVaRi=VaRi⋅ρi,p\mathrm{CVaR}_i = \mathrm{VaR}_i \cdot \rho_{i,p}. La propiedad de Euler garantiza la agregación exacta: ∑iCVaRi=VaRp\sum_i \mathrm{CVaR}_i = \mathrm{VaR}_p (kosmoy.com). El Marginal VaR identifica el "peor hedge": la posición con mayor MVaR es aquella cuya reducción corta más riesgo por unidad monetaria. Esta descomposición es, además, la base matemática de la atribución narrativa de riesgo con LLM (§7.3): la herramienta calcula los CVaRi\mathrm{CVaR}_i, el modelo de lenguaje los explica (The Database for Multimodal AI). La diversificación subyacente es la de Markowitz: con dos activos, σp2=wA2σA2+wB2σB2+2wAwBσAσBρAB\sigma_p^2 = w_A^2\sigma_A^2 + w_B^2\sigma_B^2 + 2 w_A w_B \sigma_A \sigma_B \rho_{AB}, y cualquier ρ<1\rho < 1 reduce la varianza frente a la media ponderada — con la advertencia crítica de que en crisis las correlaciones convergen a 1 (2008, marzo 2020) (confident-ai.com).

Escenarios históricos. Se reaplican los shocks observados en episodios reales a la cartera actual: subprime 2007-08, COVID marzo-2020, Lunes Negro 1987 (−22,6 % del Dow en una sesión), LTCM 1998, shock de tipos 2022. Para cada factor se determinan los peores shocks a 1 y 10 días. Su valor es que preservan las correlaciones reales del estrés: en 2008 las bolsas desarrolladas cayeron a la par, y en marzo de 2020 acciones y bonos del Tesoro se vendieron simultáneamente en la dash for cash (openobserve.ai).

Escenarios hipotéticos. Shocks extremos plausibles no necesariamente observados. El programa de stress de un banco global documentado combina escenarios históricos ("subprime crisis", "Covid crisis") con un worst case hipotético que mueve cada factor entre ±3 y ±6 desviaciones estándar diarias, ignorando correlaciones históricas (openobserve.ai).

Reverse stress testing. Los principios BCBS invierten la lógica: "un programa de stress testing debe determinar qué escenarios podrían cuestionar la viabilidad del banco (reverse stress tests) y así descubrir riesgos ocultos e interacciones entre riesgos", partiendo "de un resultado conocido de estrés — brecha de ratios de capital regulatorio, iliquidez o insolvencia — y preguntándose qué eventos podrían conducir a ese resultado" (BCBS 2009, p. 14) (Laminar). PRA, EBA y FCA lo incorporan a sus marcos (ICAAP/SREP; FG 20/1), y el informe BCBS Range of Practices (2017) documenta que dos tercios de las instituciones lo practican de forma complementaria (xseek.io). Los Stress Testing Principles de 2018 (BCBS d450) sustituyen a los de 2009 y exigen el stress testing como complemento obligado de los modelos internos, precisamente para cubrir lo que los supuestos del modelo no capturan (kosmoy.com).

FRTB: de VaR 99 % a ES 97,5 %. La Fundamental Review of the Trading Book (BCBS d352, 2016; revisada en d457, 2019) sustituye en el enfoque de modelos internos el VaR 99 % a 10 días por el ES 97,5 % calibrado sobre un periodo de estrés, con cinco horizontes de liquidez (10/20/40/60/120 días), un conjunto reducido de factores modelables y capital aditivo para los no modelables (NMRF) (kosmoy.com). La calibración es deliberadamente continua bajo normalidad (Holiday Landmark):

VaR99%=2,326 σES97,5%=σ φ(1,960)0,025=0,05840,025 σ=2,338 σ\mathrm{VaR}_{99\%} = 2{,}326\,\sigma \qquad \mathrm{ES}_{97{,}5\%} = \sigma\,\frac{\varphi(1{,}960)}{0{,}025} = \frac{0{,}0584}{0{,}025}\,\sigma = 2{,}338\,\sigma

— casi idénticos (2,338σ≈2,326σ2{,}338\sigma \approx 2{,}326\sigma) cuando los retornos son normales, pero con el ES creciendo mucho más rápido que el VaR en cuanto aparecen colas gordas: "mismo número en calma, número mayor precisamente en las exposiciones de cola gorda que el VaR históricamente subcapitalizó" (Holiday Landmark). El backtesting sigue haciéndose sobre VaR 99 % y 97,5 % con el semáforo sobre 250 días — porque el ES no es elicitable de forma clásica y su validación directa es estadísticamente más difícil —, complementado por el P&L Attribution Test (PLAT) a nivel de desk; un desk que falla backtesting o PLAT migra forzosamente del enfoque interno al estandarizado (kosmoy.com). Calendario de implementación: UE (CRR3) enero de 2026, Reino Unido (PRA) enero de 2027, EE. UU. pendiente (braintrust.dev).

Tabla 7.2 — FRTB (IMA) frente al enfoque interno anterior (Basel 2.5)

DimensiónMarco anterior (Basel 2.5, IMA)FRTB (IMA, d457)
Métrica de capitalVaR 99 %, 10 días (+ stressed VaR)ES 97,5 %, calibrado a periodo de estrés (braintrust.dev)
Horizonte10 días uniforme10/20/40/60/120 días según liquidez del factor (kosmoy.com)
Factores de riesgoTodos modelables por defectoNMRF con capital aditivo; conjunto reducido ≥ 75 % del ES total
DiversificaciónImplícita completaIMCC reconoce solo el 50 % del beneficio (ρ=0,5\rho = 0{,}5)
ValidaciónSemáforo sobre VaR 99 %Semáforo sobre VaR 99 % y 97,5 % + PLAT a nivel desk (kosmoy.com)
Consecuencia del falloMultiplicador de capitalMigración forzosa del desk al enfoque estandarizado (kosmoy.com)
Entrada en vigor2011 (Basel 2.5)UE ene-2026; UK ene-2027; EE. UU. pendiente (braintrust.dev)

7.3 El copiloto de riesgo con LangChain

7.3.1 Patrón canónico: la herramienta calcula, el LLM narra, el humano veta

La literatura 2024-2026 documenta una transición de "LLMs como analistas de texto" a agentes LLM con herramientas cuantitativas: el LLM razona y orquesta; los números los calcula código determinista (horizontrading.io). La taxonomía de agentes de trading de 2026 clasifica el control de riesgo como una capacidad nativa del agente — "riesgo como mecanismo de gating en la arquitectura de acción, no post-hoc" (horizontrading.io) — y el caso de referencia es FinCon (NeurIPS 2024): su alerta de riesgo intra-episodio se dispara por una caída súbita del CVaR, definido como la media del peor 1 % de P&L diarios, y al activarse "el agente gestor adopta una postura adversa al riesgo ese día, independientemente del estado de riesgo previo" (Github). En el ecosistema open source, servidores MCP como wraquant-mcp exponen 218 herramientas (módulos de riesgo, volatilidad, regímenes) a agentes Claude/LangChain; el patrón documentado de conversación es literalmente "VaR(95 %): −2,1 %, CVaR: −3,4 %" calculado por la herramienta y narrado por el agente (quodfinancial.com). LangChain mantiene además un repositorio de muestra oficial de agente de evaluación de riesgo (langchain-samples/risk-assessment-agent, LangGraph + LangSmith) con escenarios GRC y human-in-the-loop (TS Imagine), y proyectos como DART separan arquitectónicamente risk_manager.py (Monte Carlo VaR, Kelly, sizing) del analizador LLM (sanj.dev).

Capa 1: la herramienta determinista. Toda cifra de riesgo se produce en Python, con redondeo controlado y salida estructurada:

python
import numpy as np
from langchain_core.tools import tool

@tool
def compute_var_es(returns: list[float], confidence: float = 0.99) -> dict:
    """VaR y Expected Shortfall por simulación histórica (pérdidas positivas)."""
    r = np.asarray(returns, dtype=float)
    losses = np.sort(-r)                       # pérdidas positivas, ordenadas
    alpha = 1.0 - confidence
    var = float(np.quantile(losses, confidence))
    tail = losses[losses >= var]
    es = float(tail.mean()) if tail.size else var
    # Redondeo controlado: el LLM recibe la cifra ya fijada, nunca la recalcula
    return {"var": round(var, 6), "es": round(es, 6),
            "n_tail": int(tail.size), "alpha": alpha, "method": "historical"}

Capa 2: backtesting como herramienta de validación. El mismo principio se aplica al test de Kupiec:

python
import numpy as np
from scipy.stats import chi2
from langchain_core.tools import tool

@tool
def kupiec_pof(exceptions: int, n_days: int, p: float = 0.01) -> dict:
    """Test POF de Kupiec: H0 = la tasa de excepciones es la nominal p."""
    N, T = exceptions, n_days
    lr = -2.0 * (np.log((1 - p) ** (T - N) * p ** N)
                 - np.log((1 - N / T) ** (T - N) * (N / T) ** N))
    return {"lr_pof": round(float(lr), 4),
            "p_value": round(float(chi2.sf(lr, 1)), 4),
            "reject_5pct": bool(lr > chi2.ppf(0.95, 1))}

Capa 3: el agente copiloto con escalado humano. El LLM orquesta las herramientas y redacta la atribución basada en la descomposición de Euler que recibe como JSON; un interrupt detiene el flujo ante cualquier brecha de límite para que decida el risk manager:

python
from langchain.agents import create_agent
from langchain.agents.middleware import HumanInTheLoopMiddleware
from langgraph.checkpoint.memory import InMemorySaver

SYSTEM = (
    "Eres un copiloto de riesgo institucional. NUNCA calcules cifras de riesgo: "
    "usa SIEMPRE las herramientas compute_var_es, kupiec_pof y euler_attribution. "
    "Narra la atribución solo a partir del JSON que devuelvan las herramientas, "
    "citando cada número exactamente como lo recibiste."
)

copilot = create_agent(
    model="claude-sonnet-4-6",
    tools=[compute_var_es, kupiec_pof, euler_attribution],
    system_prompt=SYSTEM,
    middleware=[
        HumanInTheLoopMiddleware(
            interrupt_on={
                "escalate_limit_breach": True,   # approve / edit / reject / respond
                "compute_var_es": False,          # lectura segura
            },
        ),
    ],
    checkpointer=InMemorySaver(),  # en producción: PostgresSaver (audit log)
)

La arquitectura completa separa tres planos de responsabilidad:

Arquitectura en tres planos: código para VaR, Euler y backtesting; LLM para la narrativa; humano con veto que aprueba o rechaza ante brechas.Tool VaR/ES (histórico, MC, FHS) → Agente copiloto (create_agent); Tool Euler (Component VaR) → Agente copiloto (create_agent); Tool backtesting (Kupiec / Christoffersen) → Agente copiloto (create_agent); Agente copiloto (create_agent) → Atribución en lenguaje natural + contexto RAG de noticias; Agente copiloto (create_agent) → interrupt: brecha de límite (brecha detectada); interrupt: brecha de límite → Risk manager approve / reject; Risk manager approve / reject → Agente copiloto (create_agent) (approve/respond); Risk manager approve / reject → Cierre con log de auditoría (reject)brecha detectadaapprove/respondrejectPlano determinista (código)Plano LLM (narrativa)Plano humano (veto)Tool VaR/ES(histórico, MC, FHS)Tool Euler(Component VaR)Tool backtesting(Kupiec / Christoffersen)Agente copiloto(create_agent)Atribución en lenguaje natural+ contexto RAG de noticiasinterrupt:brecha de límiteRisk managerapprove / rejectCierre con log de auditoría
Diagrama 7.1. Arquitectura del copiloto de riesgo: las tools deterministas producen todas las cifras; el LLM narra la atribución basada en Euler; el interrupt escala al humano ante brechas.

Monitorización de límites con alertas en lenguaje natural. Un scheduler ejecuta el cálculo de VaR/ES/MDD contra límites; si hay brecha, el agente compone la alerta —qué límite, cuánto se excede, qué posiciones contribuyen según Component VaR, acción sugerida— y el interrupt la retiene hasta la decisión humana (TS Imagine):

En cada cierre se calcula VaR, ES y MDD; sin brecha se registra, con brecha el LLM redacta la alerta y el humano decide la acción.Scheduler diario (cierre de mercado) → Cálculo determinista: VaR 99% / ES 97.5% / MDD; Cálculo determinista: VaR 99% / ES 97.5% / MDD → ¿Brecha de límite?; ¿Brecha de límite? → Log de conformidad (checkpoint) (No); ¿Brecha de límite? → LLM redacta alerta NL: límite, exceso, contribución por Component VaR, acción sugerida (Sí); LLM redacta alerta NL: límite, exceso, contribución por Component VaR, acción sugerida → interrupt() escalado humano; interrupt() escalado humano → Risk manager; Risk manager → Reducción de posición vía tool de ejecución (Aprueba acción); Risk manager → Waiver documentado (audit log) (Acepta excepción); Risk manager → Escalado a comité de riesgo (Rechaza)NoSíAprueba acciónAcepta excepciónRechazaScheduler diario(cierre de mercado)Cálculo determinista:VaR 99% / ES 97.5% / MDD¿Brecha de límite?Log de conformidad(checkpoint)LLM redacta alerta NL:límite, exceso, contribuciónpor Component VaR, acción sugeridainterrupt()escalado humanoRisk managerReducción de posiciónvía tool de ejecuciónWaiver documentado(audit log)Escalado a comité de riesgo
Diagrama 7.2. Flujo de monitorización de límites: la detección es cuantitativa; el LLM aporta la narrativa de la alerta; el humano retiene la decisión.
python
from langgraph.types import interrupt

def breach_node(state):
    if state["var_99"] <= state["limit"]:
        return {"status": "compliant"}
    alert = llm.invoke(ALERT_PROMPT + json.dumps(state["euler_breakdown"]))
    decision = interrupt({"alert": alert, "state": state})  # pausa hasta el humano
    return {"status": decision["action"], "alert": alert}

7.4 Los límites del modelo y del LLM

7.4.1 Crítica estructural al VaR, alucinación numérica y model risk

La literatura anti-VaR. Nassim Taleb hizo campaña contra el VaR durante más de una década y lo calificó, literalmente, de "un fraude" (NYT Magazine, 4-ene-2009); David Einhorn lo describió como "relativamente inútil como herramienta de gestión de riesgo y potencialmente catastrófico cuando su uso crea una falsa sensación de seguridad… como un airbag que funciona siempre, excepto cuando tienes un accidente" (quodfinancial.com). La cuantificación del fallo es brutal: bajo normalidad, un evento de 5σ5\sigma debería ocurrir una vez cada ~14.000 años; los mercados de renta variable producen esos eventos aproximadamente una vez por década, y en 2008 libros con VaR 99 % "moderado" sufrieron pérdidas múltiples del VaR (🦜️🔗 LangChain). A la crítica empírica se suma el defecto matemático demostrado por Artzner et al. (1999): el VaR no es subaditivo, ignora la severidad más allá del cuantil y, calibrado con volatilidad reciente baja, subestima el riesgo en estrés — las tres razones documentadas del cambio regulatorio a ES (braintrust.dev). Y una advertencia de riesgo endógeno: una técnica de gestión adoptada masivamente se convierte en fuente de riesgo ("portfolio insurance" en 1987; correlaciones a 1,0 en el liquidity crunch de 2008) (latitude.so).

Model risk y el London Whale. En 2012, la Chief Investment Office de JPMorgan perdió 6,2 mil millones de dólares: la investigación interna reveló que el modelo de VaR había sido modificado para reducir a la mitad el riesgo reportado y que el cambio eludió la validación independiente (paperswithbacktest.com). El marco de referencia histórico fue SR 11-7 (Fed/OCC, 2011), que define "modelo" ampliamente y exige tres pilares — solidez conceptual, validación efectiva con outcomes analysis y backtesting, y gobernanza con inventario — extendidos explícitamente por los supervisores a modelos de IA/ML (paperswithbacktest.com). Actualización regulatoria (a 29-jul-2026): la carta SR 26-2 de la Reserva Federal (17-abr-2026) rescindió SR 11-7, dejó explícitamente fuera de su perímetro a la IA generativa y agéntica y se declaró no vinculante; sus principios — effective challenge, inventario, validación independiente — persisten como estándar de práctica, pero la gobernanza de agentes LLM queda hoy en un vacío normativo que las firmas cubren con observabilidad (trazas, checkpoints, audit logs) (United Fintech) (copia archivada). La implicación directa no cambia: un copiloto de riesgo con LangChain es, a efectos prácticos, un modelo (o usuario de modelos), y exige inventario, validación independiente, monitoreo de deriva y límites de uso documentados — con el humano reteniendo el veto final sobre cualquier acción consecuente (paperswithbacktest.com).

La síntesis del módulo es el insight rector del Bloque III: el LLM razona, la matemática decide, el humano veta. Las fórmulas de las secciones 7.1 y 7.2 son la capa que decide; el copiloto de la sección 7.3 es la capa que razona y narra; y el interrupt con audit log es la capa que veta. Debilitar cualquiera de las tres — dejar que el LLM calcule, prescindir del backtesting, o eliminar la aprobación humana — reproduce exactamente los fallos documentados en esta sección.


Ejercicios

  1. Tool de VaR/ES multi-método. Extienda la herramienta compute_var_es para soportar los tres métodos (delta-normal, histórico, FHS con GARCH(1,1) y remuestreo de residuos). Verifique sobre una serie sintética con colas Student-t que el delta-normal subestima el VaR 99 % frente a FHS, y documente el tamaño de la brecha.
  2. Backtesting completo de Kupiec y Christoffersen. Implemente como herramientas LangChain el test POF de Kupiec y el test de cobertura condicional de Christoffersen (LRcc=LRuc+LRindLR_{cc} = LR_{uc} + LR_{ind}). Sobre 500 días de un modelo EWMA aplicado al S&P 500, determine en qué ventanas el modelo se habría rechazado al 5 % y si las excepciones se agrupan en rachas.
  3. Cornish–Fisher con guardarraíles. Implemente el VaR modificado de Cornish–Fisher y el ES de Boudt como tool, con una validación previa que rechace el cálculo (y lo comunique al agente) cuando ∣S∣>2|S| > 2 o K>6K > 6, verificando además la monotonía de zCFz_{CF} en α\alpha.
  4. Copiloto de atribución narrativa. Construya el agente de la sección 7.3 con una herramienta euler_attribution que devuelva los Component VaR por posición (matriz de covarianzas EWMA). Exija en el system prompt que toda cifra narrada coincida exactamente con el JSON de la herramienta, y escriba una evaluación de exact-match numérico sobre 20 atribuciones generadas.
  5. Monitor de límites con interrupt. Implemente el Diagrama 7.2 como un StateGraph de LangGraph con checkpointer: un nodo determinista de cálculo, una edge condicional de brecha, redacción de la alerta por el LLM y interrupt() con decisiones approve/reject. Demuestre que el grafo pausado reanuda correctamente con Command(resume=...) y que el checkpoint registra la decisión para auditoría.
  6. Semáforo FRTB en miniatura. Simule 250 días de P&L frente a VaR 99 % y 97,5 %, clasifique el desk en verde/ámbar/rojo según el número de excepciones y discuta por qué el regulador mantiene el semáforo sobre VaR y no sobre ES (elicitaridad), contrastando su respuesta con la aritmética 2,338σ≈2,326σ2{,}338\sigma \approx 2{,}326\sigma.

Módulo 7 de 15 — LangChain para Trading Cuantitativo. Datos y versiones verificados a julio de 2026; precios y cifras de mercado sujetos a cambio. LangChain 1.3.14 / langchain-core 1.5.2.


// check

Comprueba lo aprendido

Autoevaluación con respuesta inmediata. No se guarda ninguna puntuación.

  1. Un modelo de VaR 99 % registra N = 7 excepciones en T = 250 días (esperadas: 2,5), con LR_POF ≈ 5,50. ¿Qué concluye el test de Kupiec al 5 %?

    Ver respuesta

    B. El test POF de Kupiec contrasta la tasa observada N/T contra la nominal p bajo H0; con LR_POF = 5,50 > 3,84 el modelo se rechaza al 5 %. El caso N = 6 ilustra lo afilado del umbral (3,56 < 3,84). Las rachas las evalúa el término de independencia de Christoffersen, que complementa a Kupiec pero no es requisito del test POF.

  2. EWMA de RiskMetrics es un IGARCH con ω = 0 y α + β = 1. ¿Qué implica eso para la predicción de volatilidad?

    Ver respuesta

    B. Con α + β = 1 no existe varianza incondicional finita: la recursión σ²_t = λσ²_{t−1} + (1−λ)r²_{t−1} trata cada choque como permanente, con memoria efectiva ≈ 1/(1−λ) ≈ 17 días. GARCH(1,1) con α + β < 1 sí revierte a σ̄² = ω/(1−α−β). Precisamente la versión multivariante de EWMA sí garantiza semidefinición positiva por construcción.

  3. Un hedge fund con valoraciones mensuales suavizadas anualiza su Sharpe con √12. Según Lo (2002), ¿cuál es el riesgo documentado?

    Ver respuesta

    B. La anualización con √252 o √12 solo es válida bajo i.i.d. El marcaje suavizado de activos ilíquidos crea autocorrelación serial positiva, que infla el Sharpe anualizado — Lo (2002) cuantifica la sobreestimación en hasta un 65 %. El módulo la califica como la advertencia metodológica más ignorada de la industria, y el sesgo siempre juega a favor del gestor.

  4. ¿Por qué FRTB calcula el capital con ES 97,5 % pero mantiene el backtesting con semáforo sobre VaR?

    Ver respuesta

    C. La calibración es deliberadamente continua bajo normalidad (2,338σ ≈ 2,326σ), pero el ES penaliza las colas gordas que el VaR subcapitalizó en 2008. El regulador mantiene el backtesting sobre VaR 99 % y 97,5 % porque el ES no es elicitable en sentido clásico: la validación se queda con el cuantil, complementada por el PLAT a nivel de desk.

  5. En la descomposición de Euler, ¿qué identifica la posición con mayor Marginal VaR?

    Ver respuesta

    B. MVaR_i = ∂VaR_p/∂x_i = z_α(Σx)_i/σ_p mide la sensibilidad del VaR total ante cada unidad monetaria de la posición i: es el «peor hedge» a revisar. El peso nominal no basta — en el ejemplo trabajado, la posición del 60 % del nominal concentra el 77,4 % del riesgo — y la propiedad de Euler garantiza que Σ CVaR_i = VaR_p.

  6. ¿Por qué el system prompt del copiloto de riesgo prohíbe al LLM calcular cifras y le obliga a citar el JSON de las herramientas?

    Ver respuesta

    B. FAITH (ICAIF 2025) mide la alucinación numérica intrínseca: ni el mejor modelo supera el 95,6 % de grounding, y los pequeños caen por debajo del 50 %. En riesgo la precisión es innegociable, así que la regla de oro del módulo es que la herramienta calcula (con redondeo controlado) y el LLM narra la atribución citando cada número exactamente como lo recibió.

  7. En el monitor de límites del Diagrama 7.2, ¿qué hace exactamente el interrupt ante una brecha detectada?

    Ver respuesta

    B. El interrupt detiene la ejecución en un checkpoint persistente: la detección es cuantitativa, el LLM solo redacta la alerta con el desglose de Component VaR, y el humano decide (approve / aceptar excepción con waiver / reject y escalar a comité). La reanudación con Command(resume=...) y el registro de la decisión en el audit log son el ejercicio 5 del módulo.

  8. Einhorn describió el VaR como «un airbag que funciona siempre, excepto cuando tienes un accidente». ¿Qué defecto matemático formaliza esa crítica?

    Ver respuesta

    B. Artzner et al. (1999) demostraron que el VaR no es una medida coherente: viola la subaditividad y es ciego a lo que ocurre más allá del cuantil. Sumado a la prociclicidad de calibrarlo con volatilidad reciente baja, son las tres razones documentadas del cambio regulatorio al ES 97,5 %, que sí es subaditivo y mira la media de la cola.