/ Proyectos / Negocio / Predicción de rendimientos de bonos

Predicción de rendimientos de bonos del Tesoro de EE.UU.: indicadores técnicos y redes recurrentes

Reconstrucción de la curva completa de rendimientos, de 3 meses a 30 años, combinando selección de variables macro, indicadores técnicos e ingeniería de características con modelos RNN, LSTM y GRU.

12 min de lectura Python · TensorFlow · statsmodels · scikit-learn Datos: indicadores macroeconómicos y curva de bonos del Tesoro de EE.UU. Aplicable a tesis y proyectos aplicados de finanzas cuantitativas
Curva de rendimientos de bonos del Tesoro de Estados Unidos analizada con indicadores técnicos y modelos de machine learning

El objetivo era predecir la curva completa de rendimientos del Tesoro de EE.UU., los 8 plazos que van de 3 meses a 30 años, a partir de indicadores macroeconómicos y del comportamiento reciente de cada serie. El problema real: cerca de 20 variables macro correlacionadas entre sí, series no estacionarias y una relación entre variables y rendimiento que cambia según el plazo.

Antes de entrar en detalle conviene ser honestos: predecir el rendimiento de un bono es difícil por naturaleza. Hay variables sociales, políticas y de expectativa de mercado que ninguna columna del dataset captura. Cuando hay menos volatilidad es más fácil acertar, pero justamente porque el activo se mueve poco, no porque el modelo haya "entendido" la economía. Este proyecto no promete anticipar el próximo giro de política monetaria; muestra cómo construir, con criterio, el mejor pronóstico posible a partir de la señal disponible.


Mapa del casoContenido


Estructura de alto nivelDiagrama de la solución

Fuente Indicadores macroeconómicos Fuente Curva de rendimientos Selección Información mutua Estacionaridad ADF + diferenciación Variables seleccionadas Serie diferenciada Indicadores técnicos SMA · Bollinger · RSI · lag-1 Escalamiento por variable StandardScaler Modelos secuenciales RNN · LSTM · GRU por plazo Predicción de la curva

Pasa el cursor sobre cada bloque para ver qué hace ese paso.

La rama de variables macro y la rama de indicadores técnicos se calcularon por separado antes de escalarlas juntas, porque cada una responde a una lógica distinta: una describe el entorno económico, la otra el comportamiento reciente del propio rendimiento.


Cómo se construyóConstrucción de la solución

Condiciones del proyecto

RestricciónDato
Objetivo inicialNo exigía llevar el modelo a producción, con margen para comparar varios enfoques de forecasting
Variables macro disponiblesCerca de 20 indicadores, muchos correlacionados entre sí
Plazos a predecir8 puntos de la curva, de 3 meses a 30 años, cada uno con dinámica propia
Naturaleza de las seriesNo estacionarias, con volatilidad muy distinta entre plazos cortos y largos
OpciónPor qué se descartó
Usar las ~20 variables macro sin filtrar como entrada directaAñade ruido y colinealidad sin aportar señal extra al modelo
Modelar los rendimientos en niveles, sin probar estacionariedadInfla artificialmente el desempeño reportado, la serie no es estable en el tiempo
Resolver la predicción con un modelo de lenguaje o foundation model de series de tiempoEl problema es demasiado específico y numérico; un LLM no aporta ventaja sobre indicadores técnicos bien diseñados
Selección de variables por información mutua + indicadores técnicos + modelos secuenciales por plazoReduce ruido, corrige la no estacionariedad y deja que cada plazo aprenda su propia dinámica

Pasos

1

Selección de variables macro por información mutua

Agente: propuso usar las ~20 variables macro completas como entrada.
Criterio aplicado: calcular información mutua entre cada variable y los 8 rendimientos, y quedarse solo con las 10 más informativas, para reducir ruido y colinealidad antes de tocar cualquier modelo.

2

Prueba de estacionariedad y diferenciación

Agente: sugirió entrenar directamente sobre los niveles de cada rendimiento.
Criterio aplicado: aplicar la prueba ADF a cada serie, confirmar que no eran estacionarias, y diferenciarlas de primer orden antes de modelar, para no inflar el desempeño reportado.

3

Ingeniería de indicadores técnicos

Agente: propuso alimentar el modelo solo con el rendimiento suavizado por una media móvil.
Criterio aplicado: construir explícitamente cuatro indicadores sobre cada serie de rendimiento, porque el nivel crudo no describe ni el momentum ni la volatilidad reciente que sí capturan estas variables.

Las ecuaciones detrás de cada indicador

SMA de 20 días, promedio móvil que suaviza el ruido de corto plazo:

\[ \text{SMA}_{20}(t) = \frac{1}{20} \sum_{i=0}^{19} y_{t-i} \]

Bandas de Bollinger, que miden la volatilidad alrededor de la SMA:

\[ \text{BB}_{upper}(t) = \text{SMA}_{20}(t) + k\,\sigma_{20}(t), \qquad \text{BB}_{lower}(t) = \text{SMA}_{20}(t) - k\,\sigma_{20}(t) \]

RSI de 14 días, que compara ganancias contra pérdidas recientes:

\[ \text{RSI}(t) = 100 - \frac{100}{1 + RS(t)}, \qquad RS(t) = \frac{\text{ganancia media}_{14}}{\text{pérdida media}_{14}} \]

Autocorrelación lag-1, que mide cuánto se parece el rendimiento de hoy al de ayer:

\[ \rho_1 = \text{corr}(y_t,\, y_{t-1}) \]

4

Un modelo por plazo, no un modelo único para toda la curva

Agente: propuso entrenar un solo LSTM genérico y aplicarlo a los 8 plazos.
Criterio aplicado: entrenar RNN, LSTM y GRU de forma independiente para cada plazo, porque el tramo corto de la curva (3M, 6M) y el tramo largo (10Y, 30Y) responden a dinámicas distintas y comparten poco patrón entrenable.

Proceso de iteración

Ajuste documentado, no forzado

El enfoque de indicadores técnicos más modelos secuenciales funcionó mejor en los plazos cortos (3M, 6M, 12M), donde la volatilidad es menor y el patrón reciente pesa más. En los plazos largos (10Y, 30Y) el error creció de forma consistente: ahí influyen expectativas de política monetaria y factores macro de largo plazo que ninguna variable del dataset captura. También se probó ARIMA como punto de comparación clásico; funcionó de forma razonable en el corto plazo, pero no superó a los modelos secuenciales en ningún plazo largo.

Descargables

Nota: el dataset del repositorio es sintético, generado para fines demostrativos. Replica la estructura y el comportamiento general de la curva de rendimientos y de los indicadores macro, pero no son datos reales de mercado.


CierreLecciones importantes

La ingeniería de características no está muerta, aunque existan modelos de lenguaje capaces de razonar sobre casi cualquier texto. Cuando el problema es lo suficientemente específico, predecir un número a partir de su propia serie de tiempo, un LLM no tiene ventaja frente a un puñado de indicadores técnicos bien diseñados y una arquitectura recurrente entrenada para esa tarea puntual. Vale la pena preguntarse, antes de reachar por el modelo más grande disponible, si el problema en realidad pide algo más simple y más específico.

La segunda lección es de honestidad con el resultado: ningún modelo de este tipo predice el rendimiento de un bono con certeza. Hay variables sociales, políticas y de expectativa que no están en ningún dataset. Lo que sí se puede hacer, y es lo que se hizo aquí, es aprovechar al máximo la señal disponible sin fingir que el problema es más simple de lo que es.

Si quieres ver un enfoque publicado con una idea similar, selección de variables y modelos de machine learning aplicados a series financieras, este paper es una buena referencia del nivel de la contribución: Markowitz Mean-Variance Portfolio Optimization with Predictive Stock Selection Using Machine Learning.

Termina ya tu proyecto

¿Tienes un proyecto similar y no sabes por dónde empezar? Yo te ayudo a diseñarlo.

El 92% de los profesionales de datos desbloquea sus proyectos al ver ejemplos completos resueltos.

53
proyectos
8
sectores
100%
aplicado

Sin registro. Acceso inmediato