Montar tu propio motor de backtest en Python, entendiendo cada linea, para que dejes de depender de "cajas negras" y puedas verificar CUALQUIER estrategia por tu cuenta — incluida esta misma herramienta.
import ccxt
exchange = ccxt.binance({"enableRateLimit": True})
velas = exchange.fetch_ohlcv("BTC/USDT", timeframe="1d", limit=1000)
ccxt te da acceso PUBLICO (sin API key, sin cuenta) a datos historicos de
decenas de exchanges. Para bolsa/acciones, la alternativa gratuita es
yfinance. Regla de oro: si no puedes verificar de donde salen los datos,
no confíes en el backtest.
Una señal es una columna de 0s y 1s (fuera/dentro del mercado). Ejemplo con cruce de EMAs:
df["ema_rapida"] = df["close"].ewm(span=12, adjust=False).mean()
df["ema_lenta"] = df["close"].ewm(span=26, adjust=False).mean()
df["signal"] = (df["ema_rapida"] > df["ema_lenta"]).astype(int)
df["posicion"] = df["signal"].shift(1).fillna(0)
df["retorno_estrategia"] = df["posicion"] * df["retorno_activo"] - comision_si_hay_cambio
Todo esto esta implementado y comentado en el repositorio de la herramienta:
- engine/estrategias.py — las señales
- engine/backtest.py — ejecucion + metricas + logica del veredicto
- engine/run_veredicto.py — orquestacion end-to-end
Puedes clonarlo, leerlo linea a linea y modificarlo para tus propias ideas. Es deliberadamente simple (sin apalancamiento, sin cortos, sin slippage complejo) porque el objetivo es que lo entiendas al 100%, no que sea la herramienta institucional mas sofisticada del mundo.
Añade una cuarta estrategia preset al motor (por ejemplo, Bandas de
Bollinger) siguiendo el mismo patron que estrategia_rsi_reversion o
estrategia_cruce_ema, y corre el Gauntlet completo para ver donde queda
rankeada.
Anterior: 02 — De la idea al codigo con IA. · Siguiente: 04 — Leer las metricas como un profesional.