QuantBattle

Documentación

Protocolo de los torneos ML, evidencia de la evaluación técnica y herramientas para reproducir experimentos. QuantBattle es un prototipo de investigación del semillero DeepFin de la Universidad EIA.

La evaluación documentada cubre los torneos ML sintéticos. Las secciones de backtesting, marketplace y API describen módulos experimentales con un alcance distinto al piloto del semillero.

Torneos semanales con retornos reales

Cuatro rondas, de lunes a jueves, publicadas a partir de las 00:30 de Colombia con datos hasta el día anterior. El plazo termina a las 23:59 y se predice el retorno completo del día siguiente. Todos los scores, símbolos y precios se retienen hasta terminar el torneo completo, desde el sábado a las 00:30 y solo tras verificar la fuente.

El CSV id,prediction contiene retornos decimales, incluidos negativos: 0.025 equivale a +2,5 %. La puntuación compara el error absoluto con predecir cero y el ranking requiere cuatro rondas válidas. Esta modalidad tiene protocolo independiente daily_return_mae_v1; su score no se compara con Spearman.

Las variables públicas están ofuscadas, los retornos históricos redondeados y los originales cifrados. No se garantiza anonimato criptográfico de los datos derivados. Los precios reales y la fuente verificable se revelan al cierre general. Una semana real solo puede acreditarse después de observar los días objetivo; el piloto sintético de abajo conserva su alcance original.

Reglas y notebook de retornos diarios

Evaluación técnica con datos sintéticos

Emilio Cardona Lopez · DeepFin / Universidad EIA. Este piloto recorre la API desplegada, autenticación, base de datos y almacenamiento reales con un mercado artificial y una cuenta técnica del proyecto. Fue completado el 19 de octubre de 2026 a las 11:32 p. m., hora de Colombia.

Datos
160 activos artificiales · 100 eras · 20 variables
Particiones
9.600 filas de entrenamiento · 3.200 de validación · 3.200 de prueba
Comprobaciones
15 completadas: descargas, autenticación, validación, privacidad, selección, cierre y puntuación
Versión
v1-e4bbe9a1f40c

Resultado de la ronda artificial

HistGradientBoostingRegressor entrenado únicamente con train. Se escogió entre dos configuraciones usando validation; las etiquetas de prueba se leyeron después del cierre real.

Spearman medio por era sobre el holdout sintético
PredicciónSpearman medio
Modelo entrenado0,0065
Referencia aleatoria0,0054
Primera variable pública0,0057

El score del modelo está cerca de cero; una ronda no establece superioridad estadística. Estos resultados no demuestran rentabilidad, capacidad de pronosticar mercados reales ni adopción externa. Spearman mide orden relativo y no incluye costos de trading.

El autor reporta el uso de Hermes Agent, subagentes y memoria persistente durante el desarrollo. Esta versión de evaluación también recibió cambios y pruebas asistidos por Codex. Estudiar la contribución de cada herramienta requiere analizar sus sesiones y el historial del código por separado.

Cómo funciona una ronda ML

Abre Torneos para consultar el estado y la fecha de cierre de la ronda vigente. La demostración técnica es una ronda cerrada distinta de la práctica semanal; sus resultados no representan usuarios externos.

Descarga train y validation con target, y live sin target. Cada envío debe incluir exactamente las columnas id,prediction, todos los IDs de live una sola vez y números finitos entre 0 y 1. Cada era debe tener predicciones con variación.

El servidor valida y guarda el archivo con un recibo SHA-256. Solo el último envío válido antes del cierre queda seleccionado. La puntuación y el ranking se publican después del plazo; la métrica oficial es la media de Spearman por era, versión spearman_era_v1.

Las rondas de práctica usan datos totalmente artificiales, son gratuitas y no otorgan QP. Las variables se renombran y discretizan: la ofuscación no es cifrado. Este protocolo de práctica se conserva separado del torneo semanal de retornos reales.

Walk-forward out-of-sample

Un backtest clásico entrena y evalúa sobre los mismos datos: eso premia estrategias sobreajustadas. QuantBattle separa entrenamiento (IS) y evaluación (OOS) en cada fold, con ventanas rodantes: la estrategia se ajusta solo con el pasado y se mide sobre datos que nunca vio.

Fold 1IS 1–140OOS 141–175
Fold 2IS 36–175OOS 176–210
Fold 3IS 71–210OOS 211–245

Ejemplo con 245 velas y 3 folds (config por defecto). El split 70/30 controla cuánto es IS vs OOS en cada ventana.

La métrica final de ranking es el promedio de los tramos OOS. Si tu estrategia solo funciona en-sample, aquí se nota de inmediato — y eso es exactamente lo que queremos revelar.

Cómo leer tus métricas de estrategias

Sharpe OOS
Retorno ajustado por riesgo medido solo fuera de muestra. Referencia orientativa: < 0 negativo, 0–0.5 débil, 0.5–1 aceptable, > 1 notable (con datos reales y costes, > 1 sostenido es raro).
Deflated Sharpe
Corrección del Sharpe por pruebas múltiples: si pruebas muchas variantes, alguna saldrá bien por azar. El deflated penaliza esa suerte estadística dentro del módulo experimental de backtesting.
Max Drawdown
La peor caída pico-a-valle del equity OOS. Mide dolor, no rentabilidad.
Win Rate
% de operaciones ganadoras. Alto win rate con drawdowns brutales suele indicar estrategias que no cortan pérdidas.

Ninguna métrica garantiza rendimiento futuro. QuantBattle mide integridad metodológica, no predice mercados.

API programática

Base URL del worker: https://quantlab2.onrender.com — autenticación opcional con JWT de Supabase o clave API qbt_… (créala en Tu cuenta → Claves API). Los endpoints públicos de lectura no requieren clave.

# Health check (público)
curl https://quantlab2.onrender.com/health

# Listar marketplace (público)
curl https://quantlab2.onrender.com/marketplace

# Torneos activos
curl https://quantlab2.onrender.com/tournament/list
# Con clave API qbt_: publicar una estrategia
curl -X POST https://quantlab2.onrender.com/marketplace/publish \
  -H "Authorization: Bearer qbt_TU_CLAVE" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "SMA BTC diaria",
    "asset_type": "crypto",
    "symbol": "BTCUSDT",
    "timeframe": "1d",
    "code": "def indicator(data): ...",
    "config": {},
    "price_qp_week": 0
  }'
EndpointAuthDescripción
GET /health—Estado del worker
GET /ml/datasets—Particiones y metadatos públicos
POST /ml/datasets/{id}/predictionsJWT/qbt_Validar y seleccionar un CSV
GET /ml/leaderboard?dataset_id=…—Resultados tras el cierre
POST /backtestJWTEjecuta backtest walk-forward
GET /marketplace—Lista estrategias publicadas
POST /marketplace/publishJWT/qbt_Publica estrategia
GET /marketplace/{id}/comments—Comentarios de una estrategia
POST /tournament/submitJWT/qbt_Envía estrategia a torneo
GET /tournament/{id}/leaderboard—Ranking + reputation_score
GET /social/activity—Feed global de actividad
GET|POST|DELETE /account/api-keysJWTGestión de claves qbt_

MCP — QuantBattle desde tu asistente IA

QuantBattle ofrece un servidor MCP local compatible con cualquier agente que admita herramientas MCP por stdio. Sirve para descubrir torneos ML, consultar datasets, validar CSV y enviar predicciones.

[mcp_servers.quantbattle]
command = "python"
args = ["/ruta/a/QuantBattle/mcp-server/mcp_server.py"]
env = { QUANTBATTLE_TOKEN = "qbt_tu_clave" }

El servidor usa tu clave qbt_ vía variable de entorno QUANTBATTLE_TOKEN. Ejemplos de uso natural:

  • “¿Qué torneos ML y rondas están abiertos?”
  • “Dame los enlaces de train, validation y live de esta ronda”
  • “Valida y envía mi CSV de predicciones”

Detalles completos en mcp-server/README.md del repositorio.

¿Algo falta o está desactualizado? El changelog refleja qué cambió y cuándo: ver changelog.