Como Construir um Terminal Pessoal de Análise Quantitativa com Polars e DuckDB
Qualquer desenvolvedor que já tentou analisar cotações de ações com código inevitavelmente passou pelo mesmo cenário. Primeiro, você abre um Jupyter Notebook, conecta o Pandas e puxa velas históricas através de alguma API gratuita aleatória. Em poucos dias, o notebook cresce para centenas de células ilegíveis, os cálculos de indicadores começam a travar por minutos, e em vez de uma interface adequada você precisa entrecerrar os olhos para gráficos do Matplotlib.
Recentemente, encontrei o projeto shy3130/tick-stock-panel no GitHub. O autor construiu uma plataforma open-source completa para análise quantitativa, backtesting e monitoramento de ações que você pode rodar localmente em um único container Docker. O projeto é inicialmente direcionado para o mercado chinês de ações A, mas suas decisões arquiteturais e stack tecnológico merecem uma análise separada, independentemente de quais ativos você negoceia.
O Que Tem Dentro e Como Funciona
O principal problema com a maioria dos screeners caseiros é o desempenho. Se você calcula médias móveis, MACD, RSI e Bandas de Bollinger para milhares de tickers em um loop através do Pandas, a máquina rapidamente trava.
No tick-stock-panel, esse problema foi resolvido com uma stack de dados moderna:
- Polars lida com cálculos paralelos de indicadores e screening em todo o mercado em frações de segundo.
- Parquet é usado como o formato de armazenamento local para tabelas enriquecidas.
- DuckDB executa consultas analíticas rápidas sobre Parquet diretamente no disco sem subir bancos de dados pesados.
- vectorbt é usado em um módulo isolado de backtesting.
- FastAPI e sse-starlette servem dados e transmitem o progresso de cálculos pesados via Server-Sent Events.
- React 18 com as bibliotecas Lightweight Charts e ECharts formam um painel de controlo limpo.
A arquitetura é compacta: o backend e o frontend bundled são empacotados em um Dockerfile de dois estágios. A aplicação não precisa de PostgreSQL ou Redis externos—todo o banco de dados é mantido local.
Principais Funcionalidades da Plataforma
O desenvolvedor dividiu a funcionalidade em quatro blocos principais: filtragem, teste de hipóteses, rastreamento de mercado e análise de ativos individuais.
| Dashboard | Strategy Screener |
![]() |
![]() |
| Backtesting | Factor Search |
![]() |
![]() |
Screener e Estratégias Embutidas
O sistema inclui 18 estratégias de seleção de ações prontas. O mecanismo de filtragem roda no Polars: após o fechamento do mercado, o pipeline calcula um dataset enriquecido, e a consulta do usuário verifica condições em toda a tabela de tickers. Você pode combinar indicadores padrão, volumes e padrões de velas ou escrever seus próprios sinais.
Backtesting e Busca de Fatores Alfa
O teste é dividido em dois modos:
- Avaliação individual de fatores com cálculos de métricas IC e IR, retornos quantílicos e spreads long-short. Isso ajuda a filtrar ruído antes de construir um sistema de trading.
- Backtesting completo de estratégia com regras de liquidação T+1, slippage, comissões de corretagem e stop-losses.
O módulo de mineração de fatores é implementado de forma interessante. O sistema busca combinações de ranks no conjunto de treinamento, filtra métricas correlacionadas e valida resultados em dados out-of-sample. No entanto, as regras descobertas não são aplicadas cegamente: o candidato é salvo em rascunhos e requer confirmação manual antes de ser adicionado ao pool de trabalho.
| Monitoring Center | Limit Ladder |
![]() |
![]() |
| Sector Analysis | Watchlists |
![]() |
![]() |
Monitoramento em Tempo Real e Anomalias
O dashboard inclui um módulo de monitoramento ao vivo. Você pode definir regras de gatilho baseadas em níveis de preço, indicadores ou desvios das médias. Quando um evento ocorre, o painel envia um webhook, mostra uma notificação no navegador e até fala o ticker em voz alta via Web Speech API.
Integração com Modelos de Linguagem
O projeto adicionou integração com LLMs via uma interface compatível com OpenAI. Você pode conectar Ollama, DeepSeek ou APIs fechadas. Os modelos cumprem dois papéis práticos: gerar código de regras de screener a partir de descrições em texto e compor um relatório noturno com análise de movimento setorial após o fechamento do mercado.
Como Implantar e Executar
A forma mais rápida de iniciar o projeto é via Docker Compose:
cp .env.example .env
docker compose up --build
Após o build, o painel abre em http://localhost:3018.
Para desenvolvimento local, você precisará de Python 3.11+, Node.js 20, gerenciadores de pacotes uv e pnpm:
cp .env.example .env
./dev.sh
O script verificará o ambiente, instalará as dependências do backend via uv e do frontend via pnpm, e então iniciará o FastAPI na porta 3018 e o servidor de desenvolvimento Vite na 3011.
A configuração é feita no arquivo .env:
TICKFLOW_API_KEY= # Ключ источника данных TickFlow (можно оставить пустым для базового режима)
AI_API_KEY= # Ключ LLM-провайдера для генерации стратегий
PORT=3018 # Порт приложения
Conectando Suas Próprias Fontes de Dados
O projeto base está configurado para o SDK do serviço chinês TickFlow, porém o desenvolvedor tornou a camada de dados plugável. O repositório inclui um plugin Node.js stock-sdk e exemplos de descrições declarativas de fontes via YAML.
Se você quiser adaptar o painel para MOEX, exchanges de criptomoedas ou Yahoo Finance, basta implementar a interface do provedor de barras diárias e alimentá-las em formato Parquet. Todo o restante da mecânica—cálculos de médias móveis, motor de backtesting, gráficos do Lightweight Charts e sistema de alertas—continuará funcionando sem alterações.
Vale a Pena Experimentar
O projeto tick-stock-panel é interessante principalmente por sua limpeza arquitetural. O autor abandonou bancos de dados relacionais pesados em favor de Polars + DuckDB + Parquet, o que faz o sistema voar em um laptop comum.
Se você negoceia no mercado chinês, o projeto pode ser usado como uma ferramenta de trabalho pronta para uso. Se seu interesse está em outras bolsas, o código do repositório servirá como um excelente template para construir seu próprio terminal de análise.
Projetos relacionados







