Tickflow Stock Panel: Como Construir Seu Próprio Terminal para Análise Quantitativa de Ações
Quando você começa a se aprofundar em trading algorítmico e análise de mercado, rapidamente esbarra na mesma barreira. Terminais prontos ou custam um absurdo, ou estão atrelados a nuvens proprietárias onde você não consegue manipular os dados brutos. Se você tentar construir seu próprio Frankenstein a partir de scripts Python espalhados, tudo termina em um zoológico de Jupyter notebooks que travam por exaustão de memória quando você tenta processar alguns anos de histórico.
Recentemente me deparei com um projeto interessante chamado tickflow-stock-panel (TSP para abreviar). É um painel auto-hospedado e open-source para triagem de ações, backtesting e monitoramento. O projeto é inicialmente focado no mercado chinês de A-shares e na API TickFlow, mas de um ponto de vista de engenharia é construído com muito cuidado. Por dentro você encontra uma stack moderna sólida: Polars para processamento rápido de tabelas, DuckDB com Parquet para armazenamento e consultas, FastAPI no backend, e React limpo no frontend.
O que o painel pode fazer
O autor do repositório deixa claro desde o início: o projeto não tenta substituir terminais de corretagem como Tongdaxin ou Thinkorswim, e não há "botões mágicos de IA para lucros garantidos". Esta é uma estação de trabalho para testar hipóteses e acompanhar sinais.

Se detalharmos as funcionalidades, é um conjunto sólido de ferramentas:
- Triagem e filtragem de ações. Vem com 18 estratégias integradas, além de poder configurar condições personalizadas ou gerar regras via LLM (suporta qualquer API compatível com OpenAI, como DeepSeek ou Ollama local). Graças ao Polars, escanear todo o mercado através de uma lista de indicadores é concluído em frações de segundo.
- Pipeline de cálculo de indicadores técnicos. O sistema calcula métricas clássicas em tempo real (MA, EMA, MACD, RSI, KDJ, Bollinger Bands) e salva dados enriquecidos em arquivos Parquet locais.
- Módulo de backtesting. O motor pode executar testes históricos em múltiplos modos (análise de fatores com métricas IC/IR e backtesting completo de estratégias). Ele calcula curvas de capital, drawdowns, índice de Sharpe, taxa de acerto considerando comissões, slippage e stop-losses. O progresso da execução é transmitido ao cliente via Server-Sent Events em tempo real.
- Monitoramento e alertas. Você pode vincular regras a estratégias, níveis de preço ou anomalias de mercado. Suporta sinais de voz no navegador e notificações via webhooks.

Stack técnica por trás do capô
A arquitetura do projeto merece atenção especial. Não há bancos de dados relacionais inchados ou filas de mensagens pesadas aqui.
┌─────────────────────────────────────────────────────────┐
│ React 18 UI │
│ (Vite, Tailwind, Lightweight Charts, ECharts, dnd) │
└────────────────────────────┬────────────────────────────┘
│ REST / SSE
┌────────────────────────────▼────────────────────────────┐
│ FastAPI Backend │
│ (Pydantic v2, APScheduler, sse-starlette) │
└──────────────┬───────────────────────────┬──────────────┘
│ │
┌──────────────▼──────────────┐ ┌──────────▼──────────────┐
│ Вычисления │ │ Хранение │
│ Polars / vectorbt │ │ DuckDB + Parquet │
└─────────────────────────────┘ └─────────────────────────┘
O desenvolvedor apostou no desempenho da máquina local:
- Polars cuida de todas as transformações pesadas de tabelas. Ele utiliza todos os núcleos da CPU e não trava com milhões de linhas, diferentemente do Pandas vanilla.
- DuckDB e Parquet cobrem consultas analíticas. Os dados ficam localmente em formato binário compacto, lidos instantaneamente sem precisar de um PostgreSQL ou ClickHouse em execução.
- vectorbt é usado estritamente na fase de backtesting, como uma biblioteca vetorial comprovada para simulação de trades.
- Docker com builds multi-stage empacota frontend compilado e backend em um único container leve.

Como executar localmente
Você pode fazer o deploy do sistema de duas formas. Se quiser mergulhar no código-fonte e adicionar algo próprio, o modo desenvolvimento é o mais fácil.
Você vai precisar de Python 3.11+, Node 20+, gerenciadores de pacotes uv e pnpm:
# Клонируем проект и настраиваем переменные окружения
git clone https://github.com/shy3130/tickflow-stock-panel.git
cd tickflow-stock-panel
cp .env.example .env
# Запуск dev-скрипта (поднимет фронтенд на :3011 и бэкенд на :3018)
./dev.sh
A segunda opção é Docker Compose direto:
cp .env.example .env
docker compose up --build
Após a inicialização, a interface web está disponível em http://localhost:3018.

A configuração base em .env é mínima:
TICKFLOW_API_KEY= # Ключ данных (можно оставить пустым для базовой истории)
AI_API_KEY= # Ключ LLM (OpenAI-compatible) для автогенерации стратегий
PORT=3018 # Порт веб-сервера
Se você não opera no mercado chinês, o projeto ainda é interessante. A arquitetura para conectar fontes de dados customizadas está documentada em docs/custom-data-source.md. Você pode alimentar com seus próprios CSV, JSON, ou escrever um adaptador para MOEX / Yahoo Finance / exchanges de cripto, reutilizando a interface pronta de triagem, gráficos e motor de testes vetoriais.


Para quem é este projeto
Antes de mais nada, o repositório será apreciado por desenvolvedores interessados em fintech e trading algorítmico.
Por um lado, é uma ferramenta pronta para uso para quem procura um sistema de monitoramento auto-hospedado leve sem a complicação de infraestrutura extra. Por outro lado, a base de código serve como um exemplo claro de como integrar corretamente FastAPI, Polars e DuckDB em uma única aplicação responsiva com respostas em streaming e gráficos interativos.
Se você estava pensando em escrever seu próprio screener ou backtester, vale a pena conferir o repositório shy3130/tickflow-stock-panel pelo menos pelas suas abordagens de manipulação de dados.
Projetos relacionados