Blog
Arliax Nexus y Bot: un experimento open source de trading cripto
Un proyecto de vacaciones que terminó siendo un agregador de datos de mercado en tiempo real y un bot de trading, y por qué decidí dejar de usarlo para operar.
Durante el último año he dedicado partes de mis vacaciones a construir un experimento de trading cripto llamado Arliax. Con el tiempo acabó convirtiéndose en 2 proyectos: Arliax Nexus, un agregador de datos de mercado, y Arliax Bot, el bot que consume esos datos para investigar, hacer paper trading, backtests y, cuando se configura explícitamente, ejecutar operaciones reales.
Ahora he publicado los 2 proyectos como open source bajo la licencia GNU GPLv3. El código está disponible para cualquiera que tenga curiosidad, quiera aprender de él o quiera construir algo encima manteniendo las mismas libertades para la siguiente persona.
Esto no es consejo de inversión ni una recomendación de ejecutar un bot de trading con dinero real. Es un pequeño proyecto personal de software que me ha enseñado mucho, incluida una lección muy práctica sobre el riesgo.
Por qué lo construí
Me gustan los sistemas que convierten un flujo ruidoso de eventos en algo comprensible. Los mercados cripto son una versión especialmente intensa de ese problema: las operaciones llegan continuamente desde varios exchanges, los símbolos se nombran de forma diferente, los datos pueden estar incompletos o llegar tarde y cada decisión tiene un coste.
La idea original era sencilla: recopilar actividad de mercado de varios exchanges, normalizarla en una vista útil de un par y dar a un motor de estrategias acceso a datos en tiempo real e históricos. Quería aprender hasta dónde podía llevar todo el pipeline por mi cuenta: desde los feeds de los exchanges y el almacenamiento en SQLite hasta dashboards de terminal, backtests, optimización de parámetros, un journal y finalmente la ejecución de órdenes.
Empecé con Go porque parecía la elección sensata para servicios de red concurrentes. En algún momento, por diversión, moví el proyecto a TypeScript y Bun. Bun hacía que el ciclo de iteración se sintiera rápido y agradable, y TypeScript facilitaba mantener el modelo de dominio, las herramientas, los dashboards y el bot dentro del mismo ecosistema. Era un side project, así que disfrutar de las herramientas era un requisito técnico perfectamente válido.
El ciclo completo de datos, ejecución e investigación de Arliax. Las líneas continuas muestran los flujos de las ramas main actuales; la línea discontinua representa el control de suscripciones dinámicas disponible en la rama subscription de Nexus. Pulsa el diagrama para verlo a tamaño completo.
Arliax Nexus: la capa de datos
Nexus observa streams de operaciones en directo de varios exchanges, combina los mercados que pertenecen al mismo par lógico, los agrega en velas y guarda las velas cerradas en SQLite. Después expone datos históricos y en tiempo real mediante sockets Unix. El bot puede pedir velas previas y, al mismo tiempo, suscribirse a la vela que todavía se está formando.
Esa separación acabó siendo importante. Nexus puede centrarse en ingerir, normalizar, agregar y persistir datos; el bot puede centrarse en indicadores, estrategias, controles de riesgo y ejecución. Los 2 pueden evolucionar de forma independiente sin convertir la lógica de trading en una colección de casos especiales de cada exchange.
Open source · GPLv3sergi-io/arliax-nexusArliax Nexus agrega datos de mercado en tiempo real de varios exchanges. Puedes consultar o descargar el código en GitHub.Nexus monitorizando los workers de los exchanges, sus símbolos y si los datos están llegando.
Las herramientas de terminal no eran solo decorativas. Permitían ver qué exchanges estaban activos, inspeccionar las velas y los datos de flujo actuales, y detectar rápidamente cuándo un feed se comportaba de forma distinta al resto. Esa visibilidad importa más de lo que parece al principio cuando la entrada es un sistema en directo que no controlas.
La vista en tiempo real para inspeccionar una vela en curso, el histórico reciente y los eventos que pasan por Nexus.
Arliax Bot: investigación, ejecución y journal
Arliax Bot se apoya sobre Nexus. Tiene un pipeline modular de estrategias, gestores de análisis técnico y riesgo, paper trading, backtests históricos y optimización de parámetros. También puede generar un journal estático a partir de las posiciones registradas, una forma mucho mejor de revisar decisiones que leer un log de terminal interminable.
El proyecto permitía ejecución real, pero traté el paper trading y los backtests como flujos de trabajo de primera clase. Que una estrategia parezca prometedora en un gráfico no significa automáticamente que sea resistente cuando entran en juego comisiones, slippage, cambios de régimen de mercado y la simple presión del dinero real.
138 parámetros y un algoritmo genético
La configuración del bot contiene 138 valores configurables de estrategia y riesgo: periodos de indicadores, umbrales, ratios riesgo-beneficio, reglas de stop loss, tamaño de posición e interruptores para activar o desactivar módulos concretos. En la configuración que usé, 23 de esos valores están marcados para que el optimizador los explore. Cada uno tiene un rango o un conjunto de valores posibles, así que el número total de combinaciones es demasiado grande para probarlo de forma exhaustiva.
Por eso añadí un algoritmo genético. Empieza con una población de configuraciones candidatas, ejecuta un backtest para cada una, puntúa los resultados, conserva las candidatas más fuertes y crea otras nuevas mediante cruces y mutaciones. La configuración actual usa una población de 1.000 configuraciones durante 20 generaciones. La puntuación puede equilibrar factores como pérdidas y ganancias, profit factor, porcentaje de aciertos y máxima excursión adversa, en lugar de perseguir únicamente el mayor retorno.
La idea me la introdujo mi amigo Roberto. Me sugirió que un algoritmo genético podía buscar una buena configuración sin tener que probar por fuerza bruta todas las combinaciones posibles, algo que deja de ser práctico muy rápidamente a medida que crece el número de parámetros.
En mi cabeza, parecía una forma muy buena de encontrar la mejor configuración para un backtest concreto. En la práctica es bastante más difícil. Un backtest puede premiar una configuración sobreajustada y una puntuación mejor con datos pasados no convierte una estrategia en robusta ante un mercado que cambia. No soy un quant trader; la gente que se dedica profesionalmente a esto sabe mucho más que yo sobre las preguntas estadísticas, de mercado y de riesgo que hay detrás. Aun así, me lo pasé muy bien construyéndolo y fue una forma estupenda de entender por qué el problema es difícil.
Open source · GPLv3sergi-io/arliax-botArliax Bot investiga, hace backtests y paper trading de estrategias con los datos de mercado de Nexus. Puedes consultar o descargar el código en GitHub.El journal generado hacía más fácil revisar cada pequeño experimento que los logs sin procesar.
Por qué lo dejé
Sí conseguí ganar una pequeña cantidad de dinero con él, pero también perdí. Al final me quedé más o menos igual. Es satisfactorio después de tanto tiempo construyendo pipelines de datos y probando ideas durante las vacaciones, pero también es la parte que podría contar una historia equivocada con facilidad.
El posible coste era mucho mayor que el beneficio. Los mercados cripto son volátiles, la superficie operativa es amplia, las estrategias pueden dejar de funcionar sin aviso y una ganancia pequeña no demuestra que un sistema sea seguro o duradero. No quería que un side project se convirtiera silenciosamente en una fuente de estrés financiero, así que decidí dejar de usarlo para trading real.
Eso no convierte el proyecto en un fracaso. Hizo exactamente lo que quería que hiciera: aprendí mucho, me divertí construyéndolo y acabé con 2 proyectos completos de código abierto. Arliax Nexus y Arliax Bot están disponibles bajo GPLv3 para cualquiera que quiera inspeccionar el código, ejecutarlo con cuidado o llevarlo en otra dirección.
Thanks for reading, Hack the Planet!