Tickflow Stock Panel: Cómo Construir Tu Propia Terminal para Análisis Cuantitativo de Acciones
Cuando empiezas a profundizar en el trading algorítmico y el análisis de mercados, rápidamente te encuentras con el mismo muro. Las terminales listas para usar cuestan un ojo de la cara, o están vinculadas a nubes propietarias donde no puedes manipular los datos sin procesar tú mismo. Si intentas construir tu propio Frankenstein a partir de scripts de Python dispersos, todo termina como un zoológico de notebooks de Jupyter que se caen por agotamiento de memoria cuando intentas procesar un par de años de historial.
Hace poco me topé con un proyecto interesante llamado tickflow-stock-panel (TSP, por sus siglas en inglés). Es un panel de código abierto y autohospedado para selección de acciones, backtesting y monitoreo. El proyecto está inicialmente enfocado en el mercado chino de acciones A y TickFlow API, pero desde el punto de vista de la ingeniería está construido con mucho cuidado. En su interior encontrarás una sólida pila moderna: Polars para procesamiento rápido de tablas, DuckDB con Parquet para almacenamiento y consultas, FastAPI en el backend y React limpio en el frontend.
Qué puede hacer el panel
El autor del repositorio hace una advertencia clara desde el principio: el proyecto no intenta reemplazar las terminales de brokers como Tongdaxin o Thinkorswim, y no hay «botones mágicos de IA para ganancias garantizadas». Esta es una estación de trabajo para probar hipótesis y seguir señales.

Si desglosamos las capacidades, es un conjunto sólido de herramientas:
- Selección y filtrado de acciones. Viene con 18 estrategias integradas, además puedes configurar condiciones personalizadas o generar reglas mediante LLM (soporta cualquier API compatible con OpenAI, como DeepSeek u Ollama local). Gracias a Polars, escanear todo el mercado a través de una lista de indicadores se completa en fracciones de segundo.
- Pipeline de cálculo de indicadores técnicos. El sistema calcula métricas clásicas sobre la marcha (MA, EMA, MACD, RSI, KDJ, Bandas de Bollinger) y guarda los datos enriquecidos en archivos Parquet locales.
- Módulo de backtesting. El motor puede ejecutar pruebas históricas en múltiples modos (análisis de factores con métricas IC/IR y backtesting completo de estrategias). Calcula curvas de capital, drawdowns, ratio de Sharpe, tasa de ganancia considerando comisiones, slippage y stop-losses. El progreso de ejecución se transmite al cliente en tiempo real mediante Server-Sent Events.
- Monitoreo y alertas. Puedes vincular reglas a estrategias, niveles de precio o anomalías del mercado. Soporta señales de voz en el navegador y notificaciones mediante webhooks.

Pila técnica bajo el capó
La arquitectura del proyecto merece especial atención. No hay bases de datos relacionales infladas ni colas de mensajes pesadas aquí.
┌─────────────────────────────────────────────────────────┐
│ React 18 UI │
│ (Vite, Tailwind, Lightweight Charts, ECharts, dnd) │
└────────────────────────────┬────────────────────────────┘
│ REST / SSE
┌────────────────────────────▼────────────────────────────┐
│ FastAPI Backend │
│ (Pydantic v2, APScheduler, sse-starlette) │
└──────────────┬───────────────────────────┬──────────────┘
│ │
┌──────────────▼──────────────┐ ┌──────────▼──────────────┐
│ Вычисления │ │ Хранение │
│ Polars / vectorbt │ │ DuckDB + Parquet │
└─────────────────────────────┘ └─────────────────────────┘
El desarrollador apostó por el rendimiento de la máquina local:
- Polars maneja todas las transformaciones pesadas de tablas. Utiliza todos los núcleos de CPU y no se ahoga con millones de filas, a diferencia de Pandas vanilla.
- DuckDB y Parquet cubren las consultas analíticas. Los datos residen localmente en formato binario compacto, leídos al instante sin necesidad de un PostgreSQL o ClickHouse en ejecución.
- vectorbt se utiliza estrictamente en la etapa de backtesting, como una biblioteca vectorial probada para simulación de operaciones.
- Docker con builds multi-stage empaqueta el frontend y backend compilados en un único contenedor ligero.

Cómo ejecutar localmente
Puedes desplegar el sistema de dos maneras. Si quieres profundizar en el código fuente y agregar algo propio, el modo desarrollo es el más fácil.
Necesitarás Python 3.11+, Node 20+, gestores de paquetes uv y pnpm:
# Клонируем проект и настраиваем переменные окружения
git clone https://github.com/shy3130/tickflow-stock-panel.git
cd tickflow-stock-panel
cp .env.example .env
# Запуск dev-скрипта (поднимет фронтенд на :3011 и бэкенд на :3018)
./dev.sh
La segunda opción es Docker Compose plano:
cp .env.example .env
docker compose up --build
Después del inicio, la interfaz web está disponible en http://localhost:3018.

La configuración base en .env es mínima:
TICKFLOW_API_KEY= # Ключ данных (можно оставить пустым для базовой истории)
AI_API_KEY= # Ключ LLM (OpenAI-compatible) для автогенерации стратегий
PORT=3018 # Порт веб-сервера
Si no operas en el mercado chino, el proyecto sigue siendo interesante. La arquitectura para conectar fuentes de datos personalizadas está documentada en docs/custom-data-source.md. Puedes alimentar tus propios CSV, JSON, o escribir un adaptador para MOEX / Yahoo Finance / exchanges de criptomonedas, reutilizando la interfaz de selección lista, gráficos y motor de pruebas vectoriales.


Para quién es este proyecto
En primer lugar, el repositorio será apreciado por desarrolladores interesados en fintech y trading algorítmico.
Por un lado, es una herramienta lista para usar para quienes buscan un sistema de monitoreo autohospedado ligero sin la molestia de infraestructura adicional. Por otro lado, la base de código sirve como un ejemplo claro de cómo integrar correctamente FastAPI, Polars y DuckDB en una única aplicación responsiva con respuestas en streaming y gráficos interactivos.
Si has estado pensando en escribir tu propio screener o backtester, vale la pena revisar el repositorio shy3130/tickflow-stock-panel al menos por sus enfoques de manejo de datos.
Proyectos relacionados