Construyendo un Sistema de Trading Cuantitativo en Python: La Estrategia Momentum Multi-Asset
¿Es posible proteger el capital durante los crashes bursátiles sin tener que estar pegado a la pantalla todo el día? La respuesta del trading sistemático es el Momentum.
En este artículo, no solo vamos a desglosar la filosofía detrás de una de las estrategias más utilizadas por los hedge funds, sino que te mostraré los resultados reales de un motor cuantitativo desarrollado íntegramente en Python, capaz de rotar capital entre diferentes clases de activos para minimizar el riesgo.
La Filosofía: ¿Por qué funciona el Momentum?
La estrategia de Momentum se basa en una premisa simple pero estadísticamente probada: los activos que han tenido un buen comportamiento en los últimos meses tienden a seguir comportándose bien en los próximos meses.
Pero, ¿por qué ocurre esto? La respuesta está en las finanzas conductuales (Behavioral Finance):
- Ineficiencia Conductual: Los seres humanos procesamos la información de forma lenta. Cuando hay buenas noticias, los inversores iniciales compran, pero la masa tarda en asimilarla. Luego, el rendimiento pasado atrae a nuevos inversores por el efecto manada o FOMO (miedo a quedarse fuera), extendiendo la tendencia.
- La Tendencia es tu Amiga: Asumimos que los precios tienen "memoria" a corto/medio plazo. La lealtad es hacia la tendencia, no hacia el activo.
- Asimetría y Gestión del Riesgo: El mayor enemigo del Momentum son los mercados laterales y los crashes. Por ello, la filosofía dicta que debemos cortar las pérdidas rápidamente y dejar correr las ganancias. Aceptamos pequeñas derrotas mecánicas para estar presentes en las grandes tendencias.
Las Reglas del Juego: Un Enfoque Institucional
Para que la estrategia funcione y elimine el sesgo emocional humano, el sistema opera bajo reglas matemáticas estrictas:
- Filtro de Régimen de Mercado: El índice de referencia (ej. Euro Stoxx 50) debe estar por encima de su Media Móvil Simple (SMA) de 200 días. Si el mercado general entra en tendencia bajista, el sistema liquida toda la cartera y pasa a efectivo (cash).
- Señal de Entrada: El sistema mide el rendimiento de los activos en los últimos 6 meses (excluyendo el último mes para evitar ruido a corto plazo) y selecciona el "Top N" de los mejores. Además, aplica un filtro de sobrecompra (RSI < 75) para no comprar activos que estén a punto de corregir.
- Gestión de Salidas: Si un activo cae por debajo de su Media Móvil Exponencial (EMA) de 50 días, o si sufre una caída de un 10% desde el precio de compra, se vende automáticamente. Cortar pérdidas es innegociable.
Los Resultados: El Experimento Multi-Asset Europeo
El paso final fue ampliar el universo. En lugar de usar solo acciones, configuramos el sistema para rotar entre cuatro ETFs globales: Renta Variable Europa (IEV), Renta Fija Euro (IGOV), Oro (GLD) y Tecnología USA (QQQ).
El resultado de este backtest largo plazo (2016-2024) nos deja datos fascinantes:
- Rentabilidad Total: 32.74%
- Máximo Drawdown: -10.57% (Una protección extrema en un periodo de 8 años que incluyó el crash del COVID y la crisis de tipos de interés).
- El Oro y los Bonos como Refugio: El activo más rentable para el sistema fue el Oro, con un Profit Factor de 7.85 (por cada euro perdido, ganó casi 8), seguido de la Renta Fija Euro con un 8.19. Cuando la renta variable temblaba, el sistema movía el capital a estos refugios.
- Saliendo de Europa a tiempo: La Renta Variable Europea tuvo un Profit Factor de 0.60 (perdió dinero en sus operaciones). Lejos de ser un fallo, esto demuestra que el sistema detectó que el mercado europeo no tenía fuerza y rotó el capital fuera de él, evitando arrastrar la cartera en caídas.
¿Qué le decimos a un Inversor Conservador?
Si observamos la curva de capital de la estrategia frente al Buy & Hold del Euro Stoxx 50, veremos que el índice europeo gana en rentabilidad absoluta, pero su línea está llena de "dientes de sierra" (caídas bruscas del 30% o 40%). La línea de nuestra estrategia es mucho más suave y estable.
A un inversor conservador le debemos decir esto:
"No busco la máxima rentabilidad, busco no perder su dinero en los crashes. En los últimos 8 años, mientras el mercado sufrió caídas brutales, esta cartera solo tuvo una caída máxima histórica del -10.57%. Cambiamos un 3% extra de rentabilidad anual por dormir tranquilo. El sistema detecta el peligro y mueve su dinero a activos refugio o efectivo de forma automática, evitando que el pánico le haga vender en el peor momento. Ese es el coste de la tranquilidad."
📂 Archivos y Código Fuente (Descarga)
Todo el framework de este proyecto está disponible para su estudio y replicación. Debes alojar los siguientes archivos en la misma carpeta para su correcto funcionamiento:
Enlace a la descarga: Codeberg
-
Estrategia_momentum_manual.md
El manual completo en formato Markdown. Contiene la filosofía detallada, las reglas matemáticas y el análisis profundo de todas las simulaciones realizadas. -
entorno_importacion_v2.py
Script de Python con la clase EntornoImportacion. Gestiona la descarga automática de cotizaciones desde Yahoo Finance, la limpieza de datos y un menú interactivo para configurar carteras. -
estrategia_momentum.py
El motor matemático. Contiene la clase EstrategiaMomentum (cálculo de medias móviles, RSI, ejecución del backtest, comisiones y métricas de diagnóstico) y la clase OptimizadorMomentum (Grid Search para encontrar los mejores parámetros). -
estrategia_momentum_1.ipynb
El Jupyter Notebook principal. Importa los archivos .py y contiene el flujo de ejecución completo: Validación In-Sample, validación Out-of-Sample, backtest Multi-Asset y la exportación del reporte a Excel. -
Reporte_Momentum_MultiAsset_EU.xlsx
Archivo Excel generado automáticamente por el notebook tras la simulación. Contiene el resumen de métricas, la curva de capital diaria y el log detallado de todas las operaciones con sus motivos de compra/venta.
⚠️ Exención de Responsabilidades (Disclaimer)
La información, el código, los análisis y los resultados expuestos en este artículo y en los archivos de código fuente adjuntos se proporcionan exclusivamente con fines educativos y de investigación cuantitativa. En ningún caso constituyen asesoramiento financiero, recomendación de inversión, ni una oferta o solicitud de compra o venta de ningún instrumento financiero.
Los mercados financieros conllevan un riesgo inherente de pérdida de capital. Las estrategias de backtesting (simulación histórica) tienen limitaciones inherentes. El rendimiento histórico pasado —ya sea simulado o real— no garantiza ni predice resultados futuros. Las condiciones del mercado, la liquidez, los costes de transacción reales y la ejecución técnica pueden variar drásticamente respecto a los supuestos utilizados en este modelo.
El autor o los creadores de este código no asumen ninguna responsabilidad legal ni patrimonial por cualquier pérdida financiera, directa o indirecta, que el usuario o terceros puedan sufrir como consecuencia de la utilización, modificación o implementación de este software o de las ideas aquí descritas. Cualquier decisión de inversión debe ser tomada por el usuario bajo su propia responsabilidad, preferiblemente tras consultar con un asesor financiero autorizado y regulado.