Acceder
Cómo vencer al mercado con la Fórmula Mágica de Joel Greenblatt (y cómo programarlo en Python)

Introducción
¿Existe una fórmula matemática capaz de batir consistentemente al mercado bursátil? Joel Greenblatt, inversor de éxito y profesor en Columbia, asegura que sí. En su famoso libro "El pequeño libro que vence al mercado", presenta una estrategia simple: comprar empresas buenas que estén baratas. 

Pero, ¿funciona realmente en la era de la Inteligencia Artificial y los bancos centrales imprimiendo dinero? Para comprobarlo, no nos quedamos en la teoría. Hemos construido un motor cuantitativo en Python que descarga estados financieros, selecciona las mejores acciones según la fórmula de Greenblatt, y les hace un backtest frente a los principales índices mundiales. Los resultados te sorprenderán.

¿Qué es la Fórmula Mágica? La belleza de esta estrategia radica en su simplicidad. Olvídate de predecir el precio del petróleo a 10 años o de leer informes trimestrales de 200 páginas. La fórmula se reduce a dos preguntas:

  1. ¿Es un negocio rentable? Calculamos el Rendimiento sobre el Capital (ROC). Queremos empresas que generen mucho beneficio con poco capital físico.
  2. ¿Está barata hoy? Calculamos el Rendimiento de Ganancias (Earnings Yield), el inverso del PER, pero ajustado por la deuda y la caja de la empresa.

Nuestro código en Python rankea miles de empresas por estas dos métricas y selecciona las ganadoras. 

El Experimento: EE. UU. vs Europa (2020-2024)
Hemos puesto a prueba la fórmula en el periodo más convulso de la historia reciente: desde el crash del COVID-19 en 2020 hasta el boom de la IA en 2024. 

Prueba 1: El error del principiense (Cartera de 5 acciones) Primero, seleccionamos solo las 5 mejores acciones de EE. UU. El resultado fue un +111.87%, superando al S&P 500 (+81.31%). Sin embargo, la volatilidad de nuestra cartera (23.9%) fue superior a la del mercado. Estábamos ganando más, pero sufriendo más baches en el camino.

Prueba 2: El poder de la diversificación (Cartera de 20 acciones) Aquí aplicamos la regla de oro de Greenblatt: diversificar. Ampliamos la selección a 20 acciones. El resultado fue demoledor: la rentabilidad subió al +118.22% y, milagrosamente, la volatilidad bajó al 20.53%, situándose por debajo del mercado. Más rentabilidad asumiendo menos riesgo. La definición perfecta de una buena inversión.


Prueba 3: Devastando al mercado europeo Queríamos ir más allá, así que analizamos 20 empresas de la Eurozona (Santander, LVMH, SAP, Inditex...) y seleccionamos las 10 mejores. Mientras el Euro Stoxx 500 lograba un respetable +29.04% en estos 4 años, nuestra cartera de Greenblatt europea disparó un +73.44%. Más del doble de rentabilidad.

La lección definitiva (El lado psicológico) Si la fórmula es tan buena, ¿por qué no todo el mundo es millonario con ella? Los datos nos dan la respuesta: el Drawdown (la máxima caída desde un pico). En todas nuestras pruebas, la cartera sufrió caídas de entre el -32% y el -36%.

Imagina que aplicas esta estrategia y al mes siguiente ves cómo tu cartera cae un 35% porque hay una pandemia. El 90% de los inversores entra en pánico, vende, y jura nunca volver a invertir. Ese es el filtro natural del mercado. La Fórmula Mágica de Greenblatt funciona matemáticamente, pero requiere algo que no se puede programar en Python: paciencia extrema y disciplina para aguantar los años malos.

## 6. Archivos y Recursos de Descarga

Para facilitar la replicación, el estudio y la ejecución de esta estrategia, se han preparado los siguientes archivos. 


     📄  Manual_estrategia_JoelGreenblatt_v1.md: Documento completo con la teoría, desarrollo, código y conclusiones empíricas. 
    👉 Recomendación: Es altamente recomendable leer este archivo .md a fondo antes de ejecutar cualquier código. Comprender la filosofía de Greenblatt, la importancia de la diversificación (20+ acciones) y la gestión psicológica de las caídas es indispensable para el éxito de la estrategia.

     🐍 entorno_importacion_v2.py y formula_magica.py: Scripts de Python con las clases y funciones listas para importar. Contienen el motor de descarga/limpieza de precios y el motor de cálculo de fundamentales.

     📓 estrategia_joel_greenblatt_v1.ipynb: Jupyter Notebook con el flujo de trabajo completo paso a paso. Permite ejecutar la selección de la cartera, descargar los datos y visualizar los gráficos de seguimiento frente al S&P 500.

⚠️ Aviso legal: Este artículo tiene fines puramente educativos y de análisis. No constituye asesoramiento financiero ni recomendación de compra/venta. Los resultados pasados no garantizan rentabilidades futuras. Los backtests no contemplan costes de transacción ni fiscalidad individual. Consulta siempre con un asesor regulado antes de tomar decisiones de inversión.

¿Te ha gustado mi artículo?
Si quieres saber más y estar al día de mis reflexiones, suscríbete a mi blog y sé el primero en recibir las nuevas publicaciones en tu correo electrónico
  1. #2
    23/08/26 23:03
    Hemos mejorado el código implementando las posibles mejoras ya comentadas.  acceso a las nuevas revisiones 

    Descarga todos los ficheros en un mismo directorio. Os recomiendo leer el manual.
  2. #1
    22/08/26 09:45
    Esto trabajando para implementar estas mejoras.


    1. Exclusión de Bancos y Aseguradoras (El fallo teórico actual)


    La fórmula matemática de Greenblatt (ROC = EBIT / Capital de Explotación + Activo Fijo) no funciona para entidades financieras. 

    • ¿Por qué? Para un banco, el "inventario" o activo circulante es el dinero de los clientes, y los pasivos son los depósitos. El cálculo de su capital de explotación no tiene sentido. Lo mismo ocurre con las aseguradoras.
    • Solución: En el universo de 40 empresas que probamos, metimos JPMorgan, Bank of America, AXA, Allianz, BBVA y Santander. En la vida real, el código debería llevar un filtro automático que elimine los tickers pertenecientes a los sectores Financial Services e Insurance usando la API de Yahoo Finance (ticker.info['sector']).

    2. Rotación Anual (Rebalancing)


    Nuestro backtest actual compra las acciones el 1 de enero de 2020 y las deja durmiendo durante 4 años. 

    • La regla de Greenblatt: Él exige vender las acciones que cumplan un año y volver a pasar la fórmula para comprar las nuevas ganadoras. Esto se hace por dos motivos: (1) ventajas fiscales y (2) capturar empresas que hoy son baratas pero que dentro de un año ya se hayan encarecido.
    • Solución en código: Habría que programar un bucle (loop) que ejecute fm.calcular_ratios() cada 365 días, venda las posiciones antiguas y compre las nuevas del Top 20.

    3. Costes de Transacción y Slippage


    Actualmente, nuestro backtest asume que comprar y vender es gratis y que puedes comprar exactamente al precio de cierre.

    • La realidad: Los brokers cobran comisiones (aunque hoy sean bajas, un 0.1% aplica), y hay un "slippage" (deslizamiento): si la acción cierra a 100€ y tú pones la orden de compra, te la ejecutan a 100.05€. 
    • Solución en código: Restar un 0.1% o 0.2% a la rentabilidad de la cartera cada vez que se hace un rebalanceo (rotación anual).

    4. Ampliación Real del Universo (El reto de los Datos)


    Greenblatt recomienda pasar la fórmula por las 3.500 empresas más grandes de EE. UU. Nosotros la hemos pasado por 40.

    • El problema: La API gratuita de yfinance bloquea tu IP si intentas descargar los estados financieros de 3.500 empresas de golpe. Además, como vimos en Europa, los datos contables a menudo vienen vacíos o con formatos distintos.
    • Solución: Para llevar esto a nivel profesional, no nos queda otra que cambiar la fuente de datos. En lugar de yfinance, el código debería conectar con APIs profesionales como Financial Modeling Prep (FMP), Alpha Vantage o Polygon.io, que sí ofrecen endpoints masivos de datos fundamentales estandarizados.