Comment créer un terminal d'analyse quantitative personnel avec Polars et DuckDB
Tout développeur qui a déjà essayé d'analyser des cours boursiers avec du code a inévitablement traversé le même scénario. D'abord, vous ouvrez un Jupyter Notebook, connectez Pandas et récupérez des chandeliers historiques via une API gratuite prise au hasard. En quelques jours, le notebook grandit jusqu'à des centaines de cellules illisibles, les calculs d'indicateurs commencent à geler pendant des minutes, et au lieu d'une interface correcte, vous devez plisser les yeux devant des graphiques Matplotlib.
Récemment, je suis tombé sur le projet shy3130/tick-stock-panel sur GitHub. L'auteur a construit une plateforme open-source complète pour l'analyse quantitative, le backtesting et la surveillance des actions, exécutable localement dans un seul conteneur Docker. Le projet est initialement conçu pour le marché chinois des actions A, mais ses choix architecturaux et sa pile technologique méritent une review séparée, quel que soit le marché sur lequel vous négociez.
Ce qu'il y a dedans et comment ça fonctionne
Le problème principal avec la plupart des screeners maison, c'est la performance. Si vous calculez des moyennes mobiles, le MACD, le RSI et les Bandes de Bollinger pour des milliers de tickers dans une boucle Pandas, la machine s'étouffe rapidement.
Dans tick-stock-panel, ce problème a été résolu avec une pile de données moderne :
- Polars gère les calculs parallèles d'indicateurs et le screening à l'échelle du marché en fractions de seconde.
- Parquet est utilisé comme format de stockage local pour les tables enrichies.
- DuckDB effectue des requêtes analytiques rapides sur Parquet directement sur le disque sans démarrer de bases de données lourdes.
- vectorbt est utilisé dans un module de backtesting isolé.
- FastAPI et sse-starlette servent les données et diffusent la progression des calculs lourds via Server-Sent Events.
- React 18 avec les bibliothèques Lightweight Charts et ECharts forment un panneau de contrôle épuré.
L'architecture est compacte : le backend et le frontend intégré sont packagés dans un Dockerfile en deux étapes. L'application n'a pas besoin de PostgreSQL externe ni de Redis — toute la base de données est conservée en local.
Fonctionnalités principales de la plateforme
Le développeur a divisé les fonctionnalités en quatre blocs clés : filtrage, test d'hypothèses, suivi de marché et analyse d'actifs individuels.
| Tableau de bord | Screener de stratégies |
![]() |
![]() |
| Backtesting | Recherche de facteurs |
![]() |
![]() |
Screener et stratégies intégrées
Le système comprend 18 stratégies de sélection d'actions prêtes à l'emploi. Le mécanisme de filtrage fonctionne sur Polars : après la clôture du marché, le pipeline calcule un dataset enrichi, et la requête de l'utilisateur vérifie les conditions sur l'ensemble de la table des tickers. Vous pouvez combiner des indicateurs standards, des volumes et des patterns de chandeliers ou écrire vos propres signaux.
Backtesting et recherche d'alpha-facteurs
Les tests sont divisés en deux modes :
- Évaluation individuelle des facteurs avec calculs des métriques IC et IR, rendements par quantile et spreads long-short. Cela aide à filtrer le bruit avant de construire un système de trading.
- Backtesting complet de stratégie avec règles de règlement T+1, slippage, commissions de broker et stop-loss.
Le module de recherche de facteurs est implémenté de manière intéressante. Le système recherche des combinaisons de rangs sur l'échantillon d'entraînement, filtre les métriques corrélées et valide les résultats sur des données hors échantillon. Cependant, les règles découvertes ne sont pas appliquées aveuglément : le candidat est sauvegardé en brouillon et nécessite une confirmation manuelle avant d'être ajouté au pool de travail.
| Centre de surveillance | Échelle des limites |
![]() |
![]() |
| Analyse sectorielle | Listes de surveillance |
![]() |
![]() |
Surveillance en temps réel et anomalies
Le tableau de bord inclut un module de surveillance en direct. Vous pouvez définir des règles de déclenchement basées sur les niveaux de prix, les indicateurs ou les écarts par rapport aux moyennes. Lorsqu'un événement se produit, le panneau envoie un webhook, affiche une notification dans le navigateur et prononce même le ticker à voix haute via l'API Web Speech.
Intégration des modèles de langage
Le projet a ajouté une intégration LLM via une interface compatible OpenAI. Vous pouvez connecter Ollama, DeepSeek ou des API fermées. Les modèles jouent deux rôles pratiques : générer du code de règles de screener à partir de descriptions textuelles et composer un rapport du soir avec analyse des mouvements sectoriels après la clôture du marché.
Comment déployer et exécuter
Le moyen le plus rapide de lancer le projet est via Docker Compose :
cp .env.example .env
docker compose up --build
Après la construction, le panneau s'ouvre à http://localhost:3018.
Pour le développement local, vous aurez besoin de Python 3.11+, Node.js 20, des gestionnaires de paquets uv et pnpm :
cp .env.example .env
./dev.sh
Le script vérifiera l'environnement, installera les dépendances backend via uv et frontend via pnpm, puis démarrera FastAPI sur le port 3018 et le serveur de développement Vite sur 3011.
La configuration se fait dans le fichier .env :
TICKFLOW_API_KEY= # Ключ источника данных TickFlow (можно оставить пустым для базового режима)
AI_API_KEY= # Ключ LLM-провайдера для генерации стратегий
PORT=3018 # Порт приложения
Connexion de vos propres sources de données
Le projet de base est configuré pour le SDK du service chinois TickFlow, cependant le développeur a rendu la couche de données enfichable. Le dépôt inclut un plugin Node.js stock-sdk et des exemples de descriptions déclaratives de sources via YAML.
Si vous voulez adapter le panneau pour MOEX, les exchanges de crypto ou Yahoo Finance, vous avez juste besoin d'implémenter l'interface du fournisseur de barres quotidiennes et de les fournir au format Parquet. Tous les autres mécanismes — calculs de moyennes mobiles, moteur de backtesting, graphiques Lightweight Charts et système d'alertes — continueront de fonctionner sans modification.
Cela vaut-il le coup d'essayer
Le projet tick-stock-panel est intéressant principalement pour sa propreté architecturale. L'auteur a abandonné les bases de données relationnelles lourdes au profit de Polars + DuckDB + Parquet, ce qui fait que le système vole sur un simple ordinateur portable.
Si vous négociez sur le marché chinois, le projet peut être utilisé comme un outil de travail prêt à l'emploi dès le départ. Si votre intérêt se porte sur d'autres places boursières, le code du dépôt servira d'excellent modèle pour construire votre propre terminal d'analyse.
Projets similaires







