CFaR — Cobertura Óptima h*

1. Visión General

El módulo de Cash-Flow-at-Risk (CFaR) del Dashboard FX Risk calcula el ratio óptimo de cobertura h* que un importador o exportador necesita contratar en forwards para mantener su flujo de caja dentro de una tolerancia de pérdida definida por el usuario, dada la distribución de probabilidad del tipo de cambio a futuro.

Pregunta que responde: ¿Qué porcentaje mínimo de mi nominal debo cubrir con un forward para que, incluso en el peor escenario al 95% de confianza, mi tipo efectivo no se desvíe más del X% de mi tipo contable?

El pipeline completo fluye así:

Modelo HARσ̂annual
Motor AnalíticoP5 / P95 CF
Forward CIPF(H)
CFaR Engineh*
OutputEscenarios

2. Inputs del Motor Analítico

El CFaR no ejecuta simulaciones MC independientes. Consume directamente las salidas del motor analítico log-normal descrito en la Metodología General (sección 6). Los inputs relevantes son:

ParámetroFuenteDescripción
σ̂HARModelo HAR-YZ OOSForecast de volatilidad anualizado. Fuente primaria de riesgo. Se convierte a horizonte: σH = σ̂HAR / √252 × √H
F(H)FRED (CIP)Forward teórico por paridad cubierta: F = S × exp((rq − rb) × H/252). Tasas interbancarias: SOFR, ESTR, SONIA, TIIE.
κ̂Log-returns T-1Exceso de curtosis muestral. Alimenta el ajuste Cornish-Fisher para colas pesadas.
S0Precio spotÚltimo cierre observado (T-1 lagged).
P5, P95Motor analíticoPercentiles Cornish-Fisher ajustados de la distribución log-normal centrada en F(H).

2.1 Qué NO entra en el cálculo

ComponenteRol
Régimen (stress/normal/complacent)Informativo. No multiplica ni modifica h*.
Señal Z-ScoreInformativo. Contexto direccional, no entra en la fórmula.
P(up) / P(down)Informativo. Se muestra al usuario pero no participa en h*.

3. Percentiles Cornish-Fisher

La distribución de precios futuros se modela como log-normal centrada en el forward CIP. Los cuantiles se ajustan por curtosis mediante la expansión de Cornish-Fisher:

z*α = zα + (zα³ − 3 · zα) · κ̂ / 24
Donde κ̂ = exceso de curtosis muestral (acotado 0–20)
Percentilα = F(H) × exp(z*α × σH)

Percentiles calculados para cada horizonte (21d, 63d, 126d):

Percentilz normalUso en CFaR
P5−1.645Peor caso exportador (spot baja)
P15−1.04TC referencia exportador
P25−0.674Banda inferior 50%
Mediana0Forward center F(H)
P75+0.674Banda superior 50%
P85+1.04TC referencia importador
P95+1.645Peor caso importador (spot sube)
Anti look-ahead: κ̂ se calcula sobre log-returns históricos hasta T-1, nunca incluye el día actual. Los percentiles se calculan en backend (Python) y se consumen en frontend sin recomputación.

4. Fórmula Analítica de h*

4.1 Intuición

Un tesorero que cubre una fracción h de su nominal con un forward obtiene un tipo efectivo que es la mezcla lineal entre el forward contratado y el spot futuro:

TCefectivo(h) = h × F + (1 − h) × ST

En el peor escenario (P95 para importador, P5 para exportador), queremos que esa mezcla no supere el umbral de tolerancia del usuario.

4.2 Inputs del usuario

ParámetroDescripciónEjemplo
TC contableTipo presupuestado o contable del usuario1.1808
Pérdida máxima (%)Tolerancia de desviación sobre TC contable3%
PerspectivaCobrador (importador) o Pagador (exportador)Cobrador
NominalMonto de la operación$100K USD

4.3 Cálculo del umbral

Importador: threshold = TCcontable × (1 + maxLoss%)
Exportador: threshold = TCcontable × (1 − maxLoss%)

4.4 Derivación de h*

Importador (cobrador — compra divisa, riesgo: spot sube):

El peor caso es P95. Necesitamos:

h × F + (1 − h) × P95 ≤ threshold

Resolviendo para h:

h* = (P95 − threshold) / (P95 − F)
Si P95 ≤ threshold ⇒ h* = 0 (cola ya dentro de tolerancia)

Exportador (pagador — recibe divisa, riesgo: spot baja):

El peor caso es P5. Necesitamos:

h × F + (1 − h) × P5 ≥ threshold

Resolviendo para h:

h* = (threshold − P5) / (F − P5)
Si P5 ≥ threshold ⇒ h* = 0 (cola ya dentro de tolerancia)

En ambos casos, h* se acota al rango [0, 1].

4.5 Verificación de alcanzabilidad

Si ni siquiera cubriendo el 100% se alcanza el threshold (porque el propio forward ya supera la tolerancia), el sistema marca el resultado como no alcanzable:

Importador: alcanzable = F ≤ threshold
Exportador: alcanzable = F ≥ threshold

5. Ejemplo Numérico

Cobrador (importador) EUR/USD — 3 meses

Datos: Spot = 1.1800, Forward 63d = 1.1851, P95 = 1.2200, TC contable = 1.1800, Tolerancia = 3%

Paso 1 — Threshold: 1.1800 × (1 + 0.03) = 1.2154

Paso 2 — P95 vs threshold: 1.2200 > 1.2154 ⇒ cobertura necesaria

Paso 3 — h*: (1.2200 − 1.2154) / (1.2200 − 1.1851) = 0.0046 / 0.0349 = 13.2%

Paso 4 — Verificar: 0.132 × 1.1851 + 0.868 × 1.2200 = 1.2154 ≈ threshold ✓

Paso 5 — Coste: ((1.1851 − 1.1800) / 1.1800) × 100 = +0.43% premium

Resultado: Forward del 13% del nominal ($13.2K de $100K) al 1.1851. Incluso en el escenario P95, el TC efectivo no supera 1.2154.

6. Tabla de Escenarios

Para cada horizonte, el sistema genera una tabla de sensibilidad con niveles de cobertura estándar (0%, 25%, 50%, 75%, 100%) más el h* óptimo:

hTC peor casoTC esperadoTC mejor caso
0%P95 (sin protección)MedianaP5
25%0.25F + 0.75·P950.25F + 0.75·Med0.25F + 0.75·P5
50%0.50F + 0.50·P950.50F + 0.50·Med0.50F + 0.50·P5
75%0.75F + 0.25·P950.75F + 0.25·Med0.75F + 0.25·P5
100%F (certeza total)FF
h*≈ thresholdh*·F + (1-h*)·Medh*·F + (1-h*)·P5

La propiedad clave de h* es que su peor caso coincide exactamente con el threshold. Cualquier h < h* viola la tolerancia; cualquier h > h* es cobertura superior a la necesaria (mayor coste de oportunidad).

7. Semántica de Perspectivas

TérminoPerspectivaRiesgoCola peor casoThreshold
Cobrador (importador)impSpot subeP95 (precio alto)TC × (1 + loss%)
Pagador (exportador)expSpot bajaP5 (precio bajo)TC × (1 − loss%)

8. Mark-to-Market

El módulo MtM evalúa la posición actual del spot respecto al TC contable del usuario:

desviación = (S0 − TCcontable) / TCcontable
P&L = nominal × |S0 − TCcontable| / S0

Semáforo MtM:

|desviación|ColorInterpretación
< 0.1%VerdePosición neutra, spot alineado con TC contable
0.1% – 2%VerdeDesviación menor, ganancia/pérdida manejable
2% – 5%AmarilloDesviación significativa, atención recomendada
> 5%RojoDesviación crítica, acción urgente

9. Análisis Break-Even

Para horizontes donde h* = 0 (no se necesita cobertura aún), el sistema calcula el nivel de spot a partir del cual la cobertura se activaría:

Sbreakeven = threshold / (tailRate / S0)

Esto permite al tesorero monitorear: “si el spot se mueve hasta X, mi h* dejará de ser cero”.

10. Coste del Forward

Coste (%) = ((F − S0) / S0) × 100

Un coste positivo indica premium (forward más caro que spot). Un coste negativo indica discount. Este coste se muestra junto al h* para que el tesorero valore si el coste de la cobertura es razonable vs el riesgo eliminado.

11. Análisis Narrativo Automático

El sistema genera un análisis en lenguaje natural estructurado en dos preguntas:

11.1 “¿Cuánto estoy perdiendo ya?”

Evalúa la desviación actual del spot respecto al TC contable: dirección, porcentaje y P&L nominal.

11.2 “¿Cuánto cubro para no perder más del X%?”

Resume el h* por horizonte con nominal a cubrir y tasa forward. Incluye niveles de urgencia:

h*UrgenciaAcción recomendada
≥ 70%AltaForward inmediato. Considerar 60% ahora + 40% en 30d.
30% – 70%MediaCobertura significativa. Ejecutar con urgencia media.
< 30%BajaCobertura parcial 25–50% recomendada.
0%NingunaSin cobertura CFaR necesaria en este horizonte.

12. Resumen de Fórmulas

ComponenteFórmula
Volatilidad horizonteσH = σdaily × √H
Centro distribuciónF(H) = S × exp((rq − rb) × H/252)
Ajuste Cornish-Fisherz* = z + (z³ − 3z) · κ̂ / 24
Tail rateP95 (imp) o P5 (exp) = F(H) × exp(z* × σH)
ThresholdTCcontable × (1 ± maxLoss%)
h* importador(P95 − threshold) / (P95 − F)
h* exportador(threshold − P5) / (F − P5)
TC efectivoh × F + (1 − h) × ST
Coste forward((F − S0) / S0) × 100%

13. Garantías de Integridad

  • Anti look-ahead: Log-returns, κ̂, y todos los estadísticos usan datos hasta T-1 exclusivamente.
  • Cornish-Fisher consistente: Los percentiles se calculan una sola vez en backend (Python) y se consumen en frontend (JavaScript) sin recomputación.
  • Perspectiva consistente: Cobrador/Pagador → imp/exp mapea correctamente a P95/P5 y dirección del threshold.
  • Sin dependencias circulares: Backend produce mcResults → Frontend consume analíticamente. Sin feedback loop.
  • Solución cerrada: h* es analítico (no iterativo). Reproducible y determinista para los mismos inputs.

Referencias

  • Corsi, F. (2009). A simple approximate long-memory model of realized volatility. Journal of Financial Econometrics, 7(2), 174–196.
  • Yang, D., & Zhang, Q. (2000). Drift-independent volatility estimation based on high, low, open, and close prices. Journal of Business, 73(3), 477–491.
  • Cornish, E.A., & Fisher, R.A. (1938). Moments and cumulants in the specification of distributions. Revue de l'Institut International de Statistique, 5(4), 307–320.
  • Stulz, R.M. (1996). Rethinking Risk Management. Journal of Applied Corporate Finance, 9(3), 8–25.
  • Stein, J.C., Usher, S.E., LaGattuta, D., & Youngen, J. (2001). A comparables approach to measuring Cashflow-at-Risk for non-financial firms. Journal of Applied Corporate Finance, 13(4), 100–109.