Bot de criptomonedas. Proyecto separado del bot de acciones: otro mercado, otra estrategia.
Fase actual: medir si hay algo que construir. Todavía no hay estrategia ni ejecución de órdenes, a propósito. Primero hay que saber en qué parte del mercado es económicamente posible operar; si no hay dónde, mejor saberlo antes de gastar semanas.
Las reglas del proyecto están en CLAUDE.md.
| Módulo | Qué hace |
|---|---|
cripto/alpaca.py |
Cliente de solo lectura: barras, cotizaciones, activos operables. |
cripto/costes.py |
Coste de ida y vuelta: comisión por lado + spread. |
cripto/medicion.py |
Movimiento, eficiencia, razón de varianzas, cobertura del universo. |
cripto/hipotesis.py |
Evalúa las hipótesis preregistradas con sus umbrales. |
cripto/mercados.py |
Adaptadores a Alpaca, Binance, Coinbase y Kraken (libros públicos). |
cripto/comparador.py |
Muestrea el spread de todos los mercados a la vez y compara costes. |
pruebas/ |
Suite sobre series sintéticas, nunca sobre datos descargados. |
pruebas/mutaciones.py |
Apaga cada mecanismo y exige que rompa las pruebas declaradas. |
python3 -m unittest discover -s pruebas -t . # suite
python3 -m pruebas.mutaciones # verificación por mutación
Sin dependencias: biblioteca estándar de Python 3.11+.
Un sistema rápido en cripto paga ~0.5 % por ida y vuelta en comisiones (0.15 % creador / 0.25 % tomador por lado en Alpaca), más el spread. En acciones era 0 %. Así que la primera pregunta no es «qué señal usar» sino dónde el movimiento típico supera ese coste con margen.
Con una trampa que conviene tener delante:
El movimiento crece con el horizonte; el coste no. En un paseo aleatorio sin ninguna estructura, el desplazamiento típico sobre H barras crece como √H. La razón movimiento/coste mejora al subir de marco temporal por aritmética, no por información.
Por eso esa razón solo sirve para descartar: por debajo de 1, capturar un movimiento típico entero deja pérdida y ninguna señal lo arregla; por encima de 1 no significa que sea rentable, solo que no es imposible. Lo que sí lleva información es cuánto se desvía de √H, que es la razón de varianzas.
/status, /kill, /resume son comandos que ejecuta
el propio bot con su estado real.Se descartó montar el bot en un Worker de Cloudflare; los motivos y los
contraargumentos están en CLAUDE.md, sección «Despliegue». El
resumen: el panel se genera y no hay nada que ejecutar al servirlo, y el estado
es un SQLite que un Worker no puede guardar sin replicarlo.
El entorno de desarrollo no alcanza Alpaca (el proxy responde 403 a CONNECT), así que toda medición con datos reales corre en Actions.
Modo simulado por defecto. Las credenciales van como secretos del repositorio o
en un .env ignorado por git, nunca en el código ni en el chat. La clave de
trading no llega al navegador.
Generado desde el commit 8bc83abe2572ab2ef84a13c7405f5c05e2411d20