Modèle / jeu de données
shy3130/tick-stock-panel avatar
shy3130/tick-stock-panel

tick-stock-panel : un atelier quantitatif auto-hébergé pour les actions A, du criblage au backtest

TSP自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台 | LLM能力驱使策略定制+个股分析+复盘 | 自由接入第三方数据源与个性化扩展数据 | 个人开源 ,非第三方官方项目

4 717 étoiles1 158 forksPythonMIT
GitHub

En bref

De quoi s’agit-il ?
Le projet shy3130/tick-stock-panel assemble sous FastAPI, Polars et DuckDB une chaîne complète de criblage, de surveillance et de backtest sur le marché chinois. Voici ce que le dépôt décrit réellement, et où se situent les limites.
À qui s’adresse-t-il ?
À adopter si vous êtes déjà à l'aise avec Python, Docker et le vocabulaire du marché A股, et que vous voulez un socle local pour cribler, surveiller et backtester sans dépendre d'un service tiers. À éviter si vous cherchez un logiciel de cotation prêt à l'emploi ou un moteur de recommandations : le README indique explicitement que le projet ne vise ni 同花顺 ni 通达信 et n'intègre pas de prédiction de limite haute.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 1 jour.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le problème visé : recoller des données A股 éparpillées en une seule chaîne

Le marché chinois se caractérise par une fragmentation documentaire : les données de cotation, les données ajustées, le carnet d'ordres, les données intraday et les états financiers proviennent d'API distinctes, avec des calendriers de publication et des conventions de nommage qui ne coïncident pas. Un utilisateur qui veut cribler puis backtester doit donc souvent maintenir lui-même des scripts de collecte, des jointures et des conversions de formats. tick-stock-panel part de ce constat et propose un atelier unique où les jeux de données sont routés par capacité, c'est-à-dire que chaque source déclare ce qu'elle sait fournir et que le système choisit la source compétente pour chaque besoin. Le public visé est explicitement restreint : le README prévient que les débutants doivent passer leur chemin et que l'outil sert de support d'étude pour la quantification locale, pas de logiciel d'investissement. Le dépôt précise aussi qu'il s'agit d'un projet open source personnel, sans affiliation à un projet officiel, et que l'usage commercial est interdit par l'auteur.

Routage par capacité : le mécanisme central du projet

La fonctionnalité nommée 能力路由 (routage par capacité) est le point d'articulation. Le README énumère les familles de données concernées : 日K (K quotidien), 除权 (ajustements), 实时 (temps réel), 分钟 (intraday), 盘口 (carnet) et 财务 (états financiers), avec la mention « 持续扩展 » qui indique que la liste n'est pas figée. Chaque source branchée déclare les familles qu'elle couvre, et le système compose un ensemble cohérent à partir de plusieurs fournisseurs. Le dépôt cite trois connecteurs existants, TickFlow, fuyao et stock-sdk, plus la possibilité d'écrire une source personnalisée en YAML. La page 设置 expose une matrice de détection des capacités avec des badges par famille, ce qui laisse entendre que l'utilisateur voit quelles cases sont couvertes et lesquelles ne le sont pas. Cette conception a une conséquence pratique : la qualité d'un backtest dépend du connecteur utilisé pour chaque famille, et non d'un pipeline unique et homogène. Un utilisateur qui remplace une source par une autre peut donc voir ses résultats historiques changer sans avoir touché à sa stratégie.

Du scan Polars au backtest avec contraintes de marché

Le moteur de criblage s'appuie sur Polars et le README annonce un balayage de l'ensemble du marché A股 en millisecondes, les stratégies journalières et intraday partageant un même pool avec un routage automatique selon la période déclarée par la stratégie. Vingt-cinq stratégies sont fournies, auxquelles s'ajoutent des stratégies intraday, des signaux personnalisés et des stratégies générées par LLM. En aval, une étape d'enrichissement produit 68 colonnes d'indicateurs (MA, EMA, MACD, RSI, KDJ, bandes de Bollinger, ratio de volume) et écrit un fichier Parquet enrichi. Le backtest prend en compte les contraintes propres au marché chinois : T+1, frais, slippage et stop-loss, avec une progression en SSE. Le module de facteurs ajoute des tests IC, une analyse par couches, une correction de Newey-West et une attribution factorielle pour les stratégies de score. Le module de fouille (挖掘) utilise une recherche imbriquée hors échantillon avec réestimation de la direction des facteurs, déduplication par corrélation et recherche de combinaisons multi-facteurs ; les candidats sont publiés après confirmation explicite, jamais automatiquement. C'est un choix de conception sain, car il empêche qu'un résultat de recherche se transforme silencieusement en stratégie active.

Mise en route : Docker, puis la matrice de capacités

Le dépôt fournit un Dockerfile et un workflow GitHub Actions nommé docker.yml, ce qui indique que l'image est construite automatiquement. Le README renvoie à une section 快速开始 et à une section 配置, mais le contenu de ces sections n'est pas repris dans l'extrait fourni : je ne peux donc pas donner ici les commandes exactes de démarrage ni les clés de configuration. Ce que l'extrait permet d'affirmer, c'est que la configuration des sources de données passe par des fichiers YAML décrits dans docs/custom-data-source.md, que les paramètres d'interface IA, de surveillance temps réel et de pages d'extension se trouvent dans la page 设置, et que la documentation interne est répartie entre docs/strategy.md, docs/features.md, docs/factor-platform-plan.md, docs/mining.md et docs/market-phase.md. La page 设置 sert de point de contrôle : c'est là que la détection des capacités confirme si chaque famille de données est bien couverte avant de lancer un criblage ou un backtest. Pour un premier essai, cette vérification précède logiquement toute autre manipulation, puisque le comportement du système dépend entièrement de ce que les connecteurs déclarent savoir fournir.

Ce que le projet ne fera pas, et les cas où il est le mauvais outil

Le README est net sur les exclusions : pas d'alignement sur 同花顺 ou 通达信, pas de recommandation d'actions par IA, pas de prédiction de limite haute. Un utilisateur qui cherche un terminal de cotation quotidien ou un générateur de signaux d'achat se trompe de projet. Deuxième limite, plus structurelle : la qualité dépend des connecteurs. Le dépôt mentionne par exemple que le scan d'enchères complet est une « 待采集任务 », c'est-à-dire une tâche de collecte encore à réaliser, ce qui signifie que cette brique n'est pas opérationnelle en l'état selon la documentation. Troisième point, l'interface est décrite comme partiellement en version Beta (个股分析, 复盘), ce qui suggère une stabilité moindre sur ces pages. Enfin, le projet est présenté comme auto-hébergé et sans exploitation à charge de l'auteur : l'utilisateur assume l'hébergement, la collecte et la cohérence de ses données. Sur un marché où les conventions d'ajustement et les calendriers diffèrent d'une source à l'autre, cette responsabilité n'est pas anodine.

Alternatives : bibliothèques de backtest contre atelier intégré

L'alternative la plus directe n'est pas un autre atelier clé en main mais une combinaison de bibliothèques : un cadre de backtest en Python couplé à une bibliothèque de collecte de données chinoises, que l'utilisateur assemble lui-même. La différence d'approche est nette. Dans ce montage, l'utilisateur écrit son propre pipeline : il choisit sa source, définit ses conventions d'ajustement, code ses indicateurs et gère lui-même la persistance. Il obtient un contrôle total et une surface de dépendances réduite, au prix d'un travail d'ingénierie qui n'est pas mutualisé. tick-stock-panel prend le chemin inverse : il fournit un pipeline déjà assemblé (routage, enrichissement Parquet, criblage, backtest, surveillance, interface React) et demande en échange d'accepter ses conventions et son architecture. Le choix se joue donc sur ce que l'on veut posséder : la logique de recherche, ou la plomberie qui la fait tourner. Pour quelqu'un dont le travail consiste à tester des idées de facteurs, la plomberie est un coût ; pour quelqu'un qui veut comprendre et contrôler chaque étape du calcul, elle est le sujet.

Maintenance, licence et coût de mise à jour

Le dépôt est publié sous licence MIT, ce qui autorise la modification et la redistribution sous réserve de conserver la notice de licence ; l'auteur précise toutefois dans le README que l'usage commercial est interdit. Cette mention ajoute une restriction qui ne figure pas dans le texte standard de la MIT, et un utilisateur qui envisage un usage professionnel doit lire le fichier LICENSE et le README ensemble plutôt que de se fier au seul identifiant de licence. Sur la maintenance, le dernier push est daté du 9 septembre 2026, le dépôt n'est pas archivé, et aucun release n'a été récupéré : il n'existe donc pas de version étiquetée sur laquelle s'appuyer, ce qui signifie que le suivi se fait sur la branche main. Un déploiement basé sur main implique de relire les changements avant chaque mise à jour, d'autant que le projet dépend de connecteurs tiers (TickFlow, fuyao, stock-sdk) dont l'évolution peut casser le routage. La pile technique (FastAPI, Polars, DuckDB, React) est répandue, ce qui limite le coût de recrutement ou de reprise, mais la documentation interne est dispersée dans plusieurs fichiers et partiellement en chinois, ce qui allonge la prise en main pour un lecteur non sinophone.

Conclusion éditoriale

À adopter si vous êtes déjà à l'aise avec Python, Docker et le vocabulaire du marché A股, et que vous voulez un socle local pour cribler, surveiller et backtester sans dépendre d'un service tiers. À éviter si vous cherchez un logiciel de cotation prêt à l'emploi ou un moteur de recommandations : le README indique explicitement que le projet ne vise ni 同花顺 ni 通达信 et n'intègre pas de prédiction de limite haute. Avant tout déploiement, vérifiez le fichier docs/custom-data-source.md et la matrice de détection des capacités dans la page 设置, car c'est de cette matrice que dépend le bon fonctionnement de chaque jeu de données.

Sources officielles

  1. Issues
  2. License: MIT
  3. README
  4. shy3130/tick-stock-panel on GitHub
Notes de la communauté

Notes de la communauté