Lección 4.2.4 · 75 min

Stress testing y riesgos de correlación, liquidez, gap y contraparte

El VaR describe los días normales y malos; las pruebas de estrés preguntan qué pasa en los peores. Esta lección somete un fondo multiactivo a ocho escenarios (2008, 2020, 2022, un lunes negro como el de 1987 y cuatro hipotéticos), busca el choque más probable que le costaría un 20 %, mide cómo se pierde la diversificación cuando cambian las correlaciones y calcula cuánto cuesta salir, qué hace un stop ante un hueco y cuánto dinero está en manos de cada contraparte.

Fig. — Un fondo multiactivo (45 % acciones, 38 % renta fija, 10 % alternativos, 7 % materias primas) bajo los ocho escenarios de estrés del nivel; con asterisco, los hipotéticos
Lecciones del nivel 4
  1. 4.1 · Teoría y optimización de carteras

    1. 4.1.1 Markowitz: frontera eficiente y restricciones reales
    2. 4.1.2 Estimación de covarianzas: shrinkage, modelos factoriales y denoising
    3. 4.1.3 Black-Litterman: del equilibrio del mercado a las visiones
    4. 4.1.4 Risk parity, mínima varianza, HRP y HERC
    5. 4.1.5 Optimización con CVaR, drawdown, rotación y costes
    6. 4.1.6 Modelos factoriales: CAPM, Fama-French, PCA y atribución
    7. 4.1.7 Rebalanceo y carteras de estrategias
    8. 4.1.8 Herramientas de carteras: Riskfolio-Lib, PyPortfolioOpt, skfolio y bt
  2. 4.2 · Gestión del riesgo y tamaño de posición

    1. 4.2.1 Riesgo por operación, stops y riesgo de ruina
    2. 4.2.2 Criterio de Kelly y volatility targeting: cuánto arriesgar
    3. 4.2.3 VaR, Expected Shortfall y backtesting del VaR
    4. 4.2.4 Stress testing y riesgos de correlación, liquidez, gap y contraparte
    5. 4.2.5 Control del drawdown y kill switch
    6. 4.2.6 Riesgo de derivados: griegas de cartera, margen y liquidaciones
  3. 4.3 · Microestructura y ejecución

    1. 4.3.1 Implementation shortfall, VWAP, TWAP y Almgren-Chriss
    2. 4.3.2 Order flow imbalance, señales de microestructura y latencia
  4. 4.4 · Brokers y APIs

    1. 4.4.1 Elegir bróker desde España o la UE: regulación, activos, costes y API
    2. 4.4.2 Interactive Brokers: TWS e IB Gateway, ib_async, contratos, datos y órdenes
    3. 4.4.3 Alpaca, Tradier, MetaTrader 5 con Python y OANDA v20
    4. 4.4.4 APIs de exchanges cripto: ccxt, Binance, Bybit, Kraken y Coinbase
    5. 4.4.5 Credenciales seguras: variables de entorno, gestores de secretos y permisos mínimos
  5. 4.5 · Sistema de trading en vivo

    1. 4.5.1 Arquitectura de un sistema en vivo: de los datos a la reconciliación
    2. 4.5.2 Gestión de órdenes: estados, fills parciales, cancelaciones y reconexiones
    3. 4.5.3 Paper trading, shadow trading y seguimiento del slippage
    4. 4.5.4 Programación de tareas y alertas: cron, APScheduler, Prefect, Telegram, Slack y email
    5. 4.5.5 Tolerancia a fallos: idempotencia, estado persistente y reconciliación al arrancar
    6. 4.5.6 NautilusTrader o LEAN en real: del backtest a producción con el mismo código

Lo que el VaR no pregunta

El VaR de la lección 4.2.3 se estima con la historia reciente y dice cuánto se pierde un día malo de una distribución que se supone conocida. Una prueba de estrés hace otra pregunta: qué le pasa a la cartera si ocurre algo concreto y grave, haya o no ocurrido en la ventana de datos. Los principios del Comité de Basilea para pruebas de estrés (2018) lo resumen en una condición: los escenarios deben ser «suficientemente graves pero plausibles» y cubrir los riesgos materiales de la entidad, y deben revisarse para que sigan siendo relevantes (principio 4). Hay cuatro familias:

Pruebas de estrésHistóricasHipotéticasInversasSensibilidadRevalorar carteraChoque que causa L
Fuente Mermaid
flowchart TB
  E[Pruebas de estrés] --> H[Históricas]
  E --> P[Hipotéticas]
  E --> I[Inversas]
  E --> S[Sensibilidad]
  H --> R[Revalorar cartera]
  P --> R
  I --> C[Choque que causa L]
  S --> R
  • Históricas: se repiten los movimientos de una crisis real (2008, 2020, 2022). Son plausibles por definición, pero la siguiente crisis no será igual.
  • Hipotéticas: se inventa un choque coherente (los tipos suben 200 pb, el dólar un 10 %) y se traslada a cada activo con un modelo, aquí las cargas factoriales.
  • Inversas: se parte de la pérdida que no se puede tolerar y se busca qué escenario la produce.
  • Sensibilidad: se mueve un solo factor (un punto de volatilidad, 1 pb de tipos) para conocer la exposición. Las griegas de la lección 4.2.6 son eso para los derivados.

Los escenarios del nivel

riesgo4_escenarios.csv trae ocho escenarios como vectores de choques (rendimiento simple total) sobre los 38 activos del universo sintético del nivel. Cuatro son históricos y salen de los propios precios: la crisis de 2008 desde la quiebra de Lehman hasta el mínimo, el covid de febrero y marzo de 2020, la inflación de 2022 y el peor día de RV_EEUU en la muestra. Cuatro son hipotéticos: un lunes negro como el del 19 de octubre de 1987 (el universo empieza en 2006), una subida paralela de tipos de 200 pb, una apreciación del dólar del 10 % y una crisis de crédito.

IN [01]python
import numpy as np
import pandas as pd

esc = pd.read_csv("riesgo4_escenarios.csv")
choques = esc.pivot(index="activo", columns="escenario",
                    values="choque")
orden = ["crisis_2008", "covid_2020", "inflacion_2022", "peor_dia",
         "lunes_negro_1987", "tipos_mas_200pb", "dolar_mas_10",
         "crisis_credito"]
choques = choques[orden]
print(esc.groupby("escenario")["tipo"].first().loc[orden].to_string())
ver = ["RV_EEUU", "RV_EMG", "ALT_PRI", "RF_T710", "RF_T20", "RF_CHY",
       "MP_ORO"]
(100 * choques.loc[ver]).T.round(1)
OUT [01]Ocho escenarios sobre 38 activos
escenario
crisis_2008          historico
covid_2020           historico
inflacion_2022       historico
peor_dia             historico
lunes_negro_1987    hipotetico
tipos_mas_200pb     hipotetico
dolar_mas_10        hipotetico
crisis_credito      hipotetico
activo            RV_EEUU  RV_EMG  ALT_PRI  RF_T710  RF_T20  RF_CHY  MP_ORO
escenario
crisis_2008         -47.3   -59.8    -63.5     12.5    29.5   -24.6     8.5
covid_2020          -34.3   -41.0    -46.8      5.3    14.0   -20.9    -1.7
inflacion_2022      -25.9   -41.1    -29.9    -14.5   -33.5   -13.6    -1.5
peor_dia            -11.4   -14.0    -15.2     -0.3    -0.6    -2.0    -1.7
lunes_negro_1987    -19.8   -22.8    -28.3      2.0     4.6   -10.3     1.5
tipos_mas_200pb      -5.1    -4.5     -6.5    -14.0   -32.2    -4.2    -5.6
dolar_mas_10          0.0    -8.6      0.0      0.0     0.0     0.0    -6.4
crisis_credito      -15.0   -13.5    -25.5      3.0     6.9   -32.7     1.2

Las filas dicen lo que importa de cada escenario. En 2008 los bonos del Tesoro suben (12,5 % el de 7-10 años, 29,5 % el de más de 20 años) mientras las acciones caen un 47 %; en 2022 caen las dos cosas (−14,5 % y −33,5 %). El capital riesgo cotizado (ALT_PRI) cae más que el índice en todos los escenarios de acciones. El oro sube en 2008 y casi no se mueve en los demás. El lunes negro hipotético es un día del −19,8 % para RV_EEUU; el real de 1987, según la Reserva Federal, fue una caída del 22,6 % del Dow Jones en una sola sesión.

La segunda celda comprueba de dónde salen los dos tipos. Los históricos son el cociente de precios entre las dos fechas del escenario; los hipotéticos, las cargas verdaderas del modelo factorial (universo4_verdad.csv) multiplicadas por el choque de los factores, sin componente idiosincrático:

IN [02]python
precios = pd.read_parquet("universo4_precios.parquet")
precios = precios.set_index("fecha")
verdad = pd.read_csv("universo4_verdad.csv", index_col="activo")
B = verdad.filter(like="b_").rename(columns=lambda c: c[2:])

# histórico: precio al cierre de `fin` / al cierre de `inicio` − 1
ini, fin = "2008-09-12", "2009-03-09"
hist = precios.loc[fin] / precios.loc[ini] - 1
print("Histórico 2008, diferencia máxima:",
      f"{(hist - choques['crisis_2008']).abs().max():.1e}")

# hipotético: cargas verdaderas × choque de factores
lunes = pd.Series({"mercado": -0.20, "tamano": -0.02, "tipos": 0.02,
                   "credito": -0.03, "materias": -0.05,
                   "dolar": -0.02, "emergentes": -0.05,
                   "europa": -0.03, "japon": -0.03}
                  ).reindex(B.columns, fill_value=0.0)
print("Lunes negro, diferencia máxima:",
      f"{(B @ lunes - choques['lunes_negro_1987']).abs().max():.1e}")
OUT [02]De dónde sale cada tipo de escenario
Histórico 2008, diferencia máxima: 5.2e-06
Lunes negro, diferencia máxima: 5.6e-17

Un escenario hipotético es tan bueno como su modelo: si las cargas de un activo cambian en una crisis, o si el activo tiene un riesgo propio que el modelo no recoge, la revaloración se equivoca. En los datos, el modelo es el verdadero; en una cartera real, las cargas se estiman (lección 4.1.6).

Un fondo multiactivo bajo estrés

La cartera de la lección es un fondo de 500 millones de USD repartido entre catorce activos: un 45 % de acciones, un 38 % de renta fija, un 10 % de alternativos (capital riesgo cotizado, infraestructuras e inmobiliario) y un 7 % de materias primas. Su pérdida en cada escenario, por clase de activo, en puntos porcentuales del fondo:

IN [03]python
pesos = pd.Series({
    "RV_EEUU": .25, "RV_EUR": .08, "RV_EMG": .07, "RV_EEUU_P": .05,
    "ALT_PRI": .03, "INFRA": .03, "INM_EEUU": .04,
    "RF_T710": .15, "RF_T20": .05, "RF_CIG": .08, "RF_CHY": .07,
    "RF_EMG": .03, "MP_ORO": .04, "MP_AMP": .03})
capital = 500e6
activos = pd.read_csv("universo4_activos.csv", index_col="activo")
clase = activos["clase"].replace({"inmobiliario": "alternativo"})

aporte = choques.loc[pesos.index].mul(pesos, axis=0)   # en tanto por 1
por_clase = 100 * aporte.groupby(clase.loc[pesos.index]).sum()
por_clase.loc["total"] = por_clase.sum()
print("Pesos por clase:",
      pesos.groupby(clase.loc[pesos.index]).sum().round(2).to_dict())
por_clase.T.round(2)
OUT [03]Un fondo multiactivo de 500 millones bajo los ocho escenarios
Pesos por clase: {'alternativo': 0.1, 'materias_primas': 0.07, 'renta_fija': 0.38, 'renta_variable': 0.45}
clase             alternativo  materias_primas  renta_fija  renta_variable  total
escenario
crisis_2008             -5.52            -0.78        1.62          -23.09 -27.78
covid_2020              -3.81            -0.68       -0.41          -16.42 -21.31
inflacion_2022          -2.88             0.32       -6.56          -12.22 -21.35
peor_dia                -1.22            -0.12       -0.28           -5.75  -7.37
lunes_negro_1987        -2.06            -0.06       -0.41           -9.26 -11.79
tipos_mas_200pb         -1.06            -0.22       -5.30           -2.18  -8.76
dolar_mas_10            -0.13            -0.45       -0.02           -1.40  -2.01
crisis_credito          -1.90             0.05       -2.68           -6.60 -11.14

La figura de la cabecera ordena el resultado. La peor pérdida es la de 2008 (−27,8 %, 139 millones), con la renta fija sumando 1,6 puntos. En el covid (−21,3 %) la renta fija ya resta 0,4: el crédito de alto rendimiento cae más de lo que suben los bonos del Tesoro. Y en la inflación de 2022 (−21,4 %) la renta fija resta 6,6 puntos: el fondo pierde casi lo mismo que en el covid con una caída de las acciones mucho menor, porque la pata que debía protegerlo cae con ellas. La subida de tipos hipotética (−8,8 %) lo confirma: la renta fija es aquí la mayor fuente de pérdida.

¿Qué habría dicho el VaR? Con los 20 años de datos, el VaR histórico de la cartera:

IN [04]python
rend = precios / precios.shift(1).fillna(100) - 1
r_cartera = rend[pesos.index] @ pesos         # rendimientos simples
mes = (1 + r_cartera).rolling(21).apply(np.prod, raw=True) - 1
print(f"VaR 99 % a 1 día (histórico 20 años): "
      f"{-r_cartera.quantile(0.01):.2%}")
print(f"VaR 99 % a 21 días (histórico 20 años): "
      f"{-mes.quantile(0.01):.2%}")
print(f"Peor día: {r_cartera.min():.2%} ({r_cartera.idxmin().date()})")
print(f"Peor mes móvil: {mes.min():.2%} ({mes.idxmin().date()})")
OUT [04]VaR frente a estrés
VaR 99 % a 1 día (histórico 20 años): 2.27%
VaR 99 % a 21 días (histórico 20 años): 15.62%
Peor día: -7.44% (2008-09-04)
Peor mes móvil: -21.62% (2011-10-24)

El VaR al 99 % a un día es del 2,27 % y el peor día de la muestra, del −7,44 %; el lunes negro hipotético costaría un 11,8 %. A un mes, el VaR es del 15,6 % y el peor mes móvil de la historia, del −21,6 % (en 2011). Los escenarios de 2008 y 2022 duran meses y pierden más que cualquier VaR mensual. Esto no hace inútil al VaR: describe la distribución de los días normales y malos; los escenarios describen los peores. Un límite de riesgo serio necesita las dos cosas, como se vio con la venta de prima en la lección 3.6.1.

El escenario inverso

Un escenario inverso parte de la pérdida inaceptable, por ejemplo un 20 % del fondo en un mes, y busca qué la produce. Hay infinitas combinaciones; la más probable, con una covarianza Σ\Sigma de los factores, es la de menor distancia de Mahalanobis. Si b=B⊤wb = B^\top w es la exposición de la cartera a cada factor (las cargas ponderadas por los pesos), el choque que pierde LL con la menor distancia es

f∗=−L Σbb⊤Σb,d=Lb⊤Σb.f^* = -L\,\frac{\Sigma b}{b^\top \Sigma b}, \qquad d = \frac{L}{\sqrt{b^\top \Sigma b}}.

La celda usa la covarianza verdadera de los factores en el régimen de estrés, escalada a un mes (21 sesiones), y compara el resultado con el movimiento acumulado de los factores en el covid (20 de febrero a 23 de marzo de 2020):

IN [05]python
fv = pd.read_csv("universo4_factores_verdad.csv")


def cov_factores(regimen):
    t = fv[fv.regimen == regimen].set_index("factor")
    corr = t.filter(like="corr_").rename(columns=lambda c: c[5:])
    vol = t["vol_anual"]
    return corr.loc[B.columns, B.columns] * np.outer(vol, vol)


S = cov_factores("estres") * 21 / 252        # un mes de estrés
b = B.loc[pesos.index].T @ pesos             # exposición a factores
perdida = 0.20
f_inv = -perdida * (S @ b) / (b @ S @ b)     # mínima distancia
d = perdida / np.sqrt(b @ S @ b)             # en desviaciones típicas

fd = pd.read_parquet("universo4_factores_diarios.parquet")
fd = fd.set_index("fecha")
f20 = fd.loc["2020-02-20":"2020-03-23"].filter(like="f_").sum()
f20.index = [c[2:] for c in f20.index]
print(f"Exposición a mercado {b['mercado']:.2f}, "
      f"tipos {b['tipos']:.2f}, crédito {b['credito']:.2f}; "
      f"distancia {d:.2f} desv. típicas")
pd.DataFrame({"inverso_%": 100 * f_inv,
              "covid_2020_%": 100 * f20}).round(1)
OUT [05]Escenario inverso: el choque más probable que cuesta un 20 %
Exposición a mercado 0.55, tipos 0.43, crédito 0.35; distancia 2.54 desv. típicas
            inverso_%  covid_2020_%
mercado         -32.6         -42.0
tamano           -2.3          -7.3
valor            -1.2          -9.1
tipos             2.2           5.5
credito          -3.9          -6.8
materias        -12.4         -22.8
dolar             3.5           4.6
emergentes       -5.6          -9.1
europa           -0.2           1.7
japon            -0.0          -4.5

El fondo tiene una exposición de 0,55 al mercado, 0,43 a los tipos (por los bonos) y 0,35 al crédito. El choque más probable que le cuesta un 20 % en un mes de estrés es una caída del 32,6 % del factor de mercado acompañada de las materias primas (−12,4 %), los emergentes (−5,6 %) y el crédito (−3,9 %), con el dólar subiendo un 3,5 % y los bonos un 2,2 %: está a 2,54 desviaciones típicas de un mes de estrés. Es una crisis como la del covid, que en el factor de mercado fue peor (−42,0 %). El escenario inverso no dice que eso vaya a pasar; dice que la pérdida inaceptable está a un covid de distancia y que la cobertura de los bonos apenas cambia la cifra.

Correlaciones que cambian en las crisis

Las correlaciones estimadas con toda la muestra son, sobre todo, las de la calma: 4.367 de las 5.031 sesiones. Por régimen, en la muestra y en la verdad del modelo:

IN [06]python
exceso = rend.sub(fd["rf"], axis=0)
cov = pd.read_csv("universo4_cov_verdad.csv")


def cov_verdad(regimen, nombres):
    c = cov[cov.regimen == regimen].set_index("activo")
    return c.loc[nombres, nombres]


pares = [("RV_EEUU", "RF_T710"), ("RV_EEUU", "RF_CHY"),
         ("RV_EEUU", "MP_ORO"), ("RV_EEUU", "RV_EMG")]
filas = {}
for reg in ("calma", "estres", "inflacion"):
    dias = fd.index[fd["regimen"] == reg]
    m = exceso.loc[dias].corr()
    for a, b_ in pares:
        c = cov_verdad(reg, [a, b_])
        filas[(f"{a}-{b_}", reg)] = {
            "muestra": m.at[a, b_],
            "verdad": c.iat[0, 1] / np.sqrt(c.iat[0, 0] * c.iat[1, 1])}
print("Sesiones por régimen:", fd["regimen"].value_counts().to_dict())
pd.DataFrame(filas).T.unstack().round(2)
OUT [06]Correlaciones por régimen: muestra frente a verdad
Sesiones por régimen: {'calma': 4367, 'estres': 469, 'inflacion': 195}
                muestra                  verdad
                  calma estres inflacion  calma estres inflacion
RV_EEUU-MP_ORO     0.08   0.14      0.26   0.06   0.15      0.19
RV_EEUU-RF_CHY     0.62   0.71      0.75   0.62   0.73      0.75
RV_EEUU-RF_T710   -0.23  -0.41      0.53  -0.24  -0.46      0.51
RV_EEUU-RV_EMG     0.84   0.96      0.85   0.84   0.96      0.88
Fig. — Correlación de 63 sesiones entre la renta variable de EE. UU. (RV_EEUU) y el bono de 7-10 años (RF_T710) del universo, a fin de mes, 2006-2025; sombreados, los tramos de estrés y de inflación

La correlación entre RV_EEUU y el bono de 7-10 años es de −0,23 en calma, −0,41 en estrés (huida a la calidad) y +0,53 en el régimen de inflación. La de las acciones con el alto rendimiento sube de 0,62 a 0,75; la de EE. UU. con emergentes, de 0,84 a 0,96 en estrés: en una crisis, la diversificación geográfica de las acciones casi desaparece. La figura enseña la correlación móvil acciones-bonos de 2006 a 2025: casi siempre negativa, más en las crisis, y positiva solo en 2022. Las cifras de la muestra se parecen a las verdaderas porque el régimen se conoce; en la realidad, el régimen se sabe después.

¿Cuánto riesgo añade el cambio de correlaciones? La celda calcula la volatilidad verdadera del fondo en cada régimen y la que tendría con las volatilidades de ese régimen y las correlaciones de la calma:

IN [07]python
nombres = list(pesos.index)
w = pesos.values
filas = {}
Cc = cov_verdad("calma", nombres).values
corr_calma = Cc / np.outer(np.sqrt(np.diag(Cc)), np.sqrt(np.diag(Cc)))
for reg in ("calma", "estres", "inflacion"):
    C = cov_verdad(reg, nombres).values
    vol = np.sqrt(np.diag(C))
    mixta = np.outer(vol, vol) * corr_calma   # vols del régimen,
    filas[reg] = {                            # correlación de calma
        "vol_cartera": np.sqrt(w @ C @ w),
        "vol_con_corr_calma": np.sqrt(w @ mixta @ w),
        "suma_vols": w @ vol,
        "ratio_diversif": (w @ vol) / np.sqrt(w @ C @ w)}
pd.DataFrame(filas).T.round(3)
OUT [07]La diversificación que desaparece
           vol_cartera  vol_con_corr_calma  suma_vols  ratio_diversif
calma            0.093               0.093      0.131           1.398
estres           0.273               0.259      0.327           1.198
inflacion        0.158               0.136      0.192           1.218

En calma, el fondo tiene una volatilidad del 9,3 % y la suma ponderada de las volatilidades de sus activos es del 13,1 %: un ratio de diversificación de 1,40. En estrés, 27,3 % (ratio 1,20): con las correlaciones de la calma serían 25,9 %, así que casi todo el aumento viene de las volatilidades. En inflación, 15,8 % frente a 13,6 % con las correlaciones de la calma: aquí las correlaciones explican un tercio del aumento (2,2 de los 6,5 puntos), porque cambia de signo la correlación entre las dos patas más grandes. Un modelo de riesgo estimado en calma subestima los dos efectos; la prueba de estrés debe mover volatilidades y correlaciones a la vez.

Liquidez: cuánto cuesta salir

Las pérdidas de un escenario suponen que la cartera se puede valorar y vender a esos precios. Con una cartera grande o activos poco líquidos no es así: venderla lleva días y cada venta mueve el precio. riesgo4_liquidez.csv da, para cada activo (como ETF ficticio), el volumen medio diario (ADV), la horquilla normal y en estrés, cuánto cae el ADV en una crisis y el coeficiente de la ley de la raíz cuadrada, que la lección 4.3.1 estudia con las órdenes de una mesa:

undefined

Respuesta plegada en cada pregunta

Autoevaluación

  1. En el escenario de inflación de 2022 el fondo pierde un 21,4 %, casi lo mismo que en el covid (−21,3 %), aunque las acciones caen menos (−26 % frente a −34 % en RV_EEUU). ¿Por qué?

    • APorque en 2022 el fondo tenía más acciones
    • BPorque la renta fija, que en 2008 y 2020 amortiguaba, cae a la vez que las acciones: aporta −6,6 puntos en lugar de sumar
    • CPor las materias primas
    • DPorque el escenario de 2022 es más largo y acumula costes
    Ver respuesta

    Respuesta B. Porque la renta fija, que en 2008 y 2020 amortiguaba, cae a la vez que las acciones: aporta −6,6 puntos en lugar de sumar

    La correlación acciones-bonos pasa de negativa a +0,5 en el régimen de inflación. La cobertura en la que se apoyaba la cartera desaparece justo en ese escenario.

  2. ¿Qué es un escenario inverso (reverse stress test)?

    • AUn escenario en el que el mercado sube
    • BRepetir un escenario histórico al revés
    • CPartir de una pérdida inaceptable y buscar qué combinación de movimientos la produce; con una covarianza, la más probable es la de menor distancia de Mahalanobis
    • DUn escenario sin correlaciones
    Ver respuesta

    Respuesta C. Partir de una pérdida inaceptable y buscar qué combinación de movimientos la produce; con una covarianza, la más probable es la de menor distancia de Mahalanobis

    En lugar de preguntar cuánto se pierde en un escenario dado, se pregunta qué escenario hace perder lo que no se puede perder. Con la covarianza de los factores en estrés, el choque más probable es f = −L·Σb/(b′Σb).

  3. En el régimen de estrés la volatilidad verdadera del fondo es del 27,3 %; con las volatilidades del estrés pero las correlaciones de la calma sería del 25,9 %. ¿Qué dice esa diferencia?

    • AQue las correlaciones no importan nunca
    • BQue el modelo está mal
    • CQue la cartera está mejor diversificada en estrés
    • DQue en este fondo la mayor parte del aumento de riesgo en estrés viene de las volatilidades; las correlaciones añaden 1,4 puntos. En el régimen de inflación su parte es mayor (13,6 % frente a 15,8 %), por la correlación acciones-bonos
    Ver respuesta

    Respuesta D. Que en este fondo la mayor parte del aumento de riesgo en estrés viene de las volatilidades; las correlaciones añaden 1,4 puntos. En el régimen de inflación su parte es mayor (13,6 % frente a 15,8 %), por la correlación acciones-bonos

    Separar volatilidades y correlaciones dice qué cobertura falla. En estrés suben las dos; en inflación cambia el signo de la que más pesa en una cartera mixta.

  4. Un stop de venta un 1 % por debajo del cierre previo salta 276 veces en los datos de KAPA; 18 de ellas en la apertura. ¿Qué precio obtiene en esas 18?

    • AEl de la apertura, peor que el stop: el hueco lo atraviesa sin negociar en su precio; el peor caso cuesta 87,6 pb más de lo previsto
    • BEl del stop
    • CEl cierre del día
    • DNo se ejecuta
    Ver respuesta

    Respuesta A. El de la apertura, peor que el stop: el hueco lo atraviesa sin negociar en su precio; el peor caso cuesta 87,6 pb más de lo previsto

    Un stop es una orden que se vuelve de mercado al tocarse el precio. Si el precio abre por debajo, se ejecuta al primer precio disponible. Un stop limita la pérdida esperada, no la máxima.

  5. Kestrel Exchange tiene 2,3 millones en efectivo y 0,9 de margen no segregado: una exposición de 3,2 millones frente a un límite de 1,5. ¿Por qué cuenta todo el margen?

    • APorque no está segregado: si la entidad quiebra, ese dinero está en su balance y el cliente es un acreedor más; el margen segregado de Corredora Atlas no cuenta
    • BPorque el margen siempre cuenta
    • CPorque es un exchange de cripto
    • DPorque no tiene rating
    Ver respuesta

    Respuesta A. Porque no está segregado: si la entidad quiebra, ese dinero está en su balance y el cliente es un acreedor más; el margen segregado de Corredora Atlas no cuenta

    La exposición a una contraparte es lo que se pierde si quiebra mañana: efectivo, margen en cuentas no segregadas y valor neto a favor de los derivados no cubierto por colateral.

Ideas clave

  • Una prueba de estrés revalora la cartera en escenarios graves pero plausibles: históricos, que salen de los precios, e hipotéticos, que salen de un choque de factores y de las cargas.
  • El fondo multiactivo de la lección pierde un 27,8 % en 2008 y un 21,4 % en la inflación de 2022, frente a un VaR al 99 % a un mes del 15,6 %: el VaR no es un límite de pérdidas.
  • El escenario inverso busca el choque más probable que causa una pérdida inaceptable: para un 20 % en un mes de estrés, una caída del mercado del 33 % con las materias primas, a 2,5 desviaciones típicas.
  • Las correlaciones cambian con el régimen: la de acciones y bonos pasa de −0,24 en calma a +0,51 en inflación. En una cartera mixta, la cobertura que falla es justo la que más pesa.
  • La liquidez se mide en días y en coste: 15 millones en un ETF poco líquido tardan 6 días en venderse en estrés y cuestan 468 pb; en un año normal, 58.
  • Un stop no limita la pérdida máxima (un hueco lo atraviesa) y la exposición a contrapartes se agrega por entidad: dos de las seis superan su límite.

Recursos