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 diariosEvaluació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.
| Predicción | Spearman medio |
|---|---|
| Modelo entrenado | 0,0065 |
| Referencia aleatoria | 0,0054 |
| Primera variable pública | 0,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.
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
}'| Endpoint | Auth | Descripción |
|---|---|---|
| GET /health | — | Estado del worker |
| GET /ml/datasets | — | Particiones y metadatos públicos |
| POST /ml/datasets/{id}/predictions | JWT/qbt_ | Validar y seleccionar un CSV |
| GET /ml/leaderboard?dataset_id=… | — | Resultados tras el cierre |
| POST /backtest | JWT | Ejecuta backtest walk-forward |
| GET /marketplace | — | Lista estrategias publicadas |
| POST /marketplace/publish | JWT/qbt_ | Publica estrategia |
| GET /marketplace/{id}/comments | — | Comentarios de una estrategia |
| POST /tournament/submit | JWT/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-keys | JWT | Gestió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.