Lab · banc de recherche quant

Un banc de recherche à côté du desk, pas un second desk de trading

Trading Intelligence lit un marché et écrit une opinion. Voici l'autre moitié : un agent qui transforme une thèse en code, la confronte à 478 facteurs alpha et rend le Sharpe, le drawdown, le turnover et les coûts. J'ai installé HKUDS Vibe-Trading comme banc d'évaluation — isolé de tout le reste du serveur. Il ne passe aucun ordre, et n'en passera pas tant qu'un résultat n'aura pas survécu à l'out-of-sample, puis à un compte papier.

Ouvrir le banc Espace privé, authentification requise
01 · Ce que c'est

La bibliothèque de facteurs d'un autre, ma discipline

En amont, HKUDS/Vibe-Trading, sous licence MIT, développé par le laboratoire de science des données de HKU : un cadre multi-agents à personas où analystes, chercheur haussier et baissier, débat sur le risque et gérant de portefeuille travaillent un instrument, avec un serveur MCP pour que d'autres agents appellent ses outils. Trois parties méritent mon temps :

01

Alpha Zoo

478 facteurs dans un registre unique — WorldQuant Alpha101, Qlib158, familles académiques et GTJA — avec un contrat explicite : un facteur dont une entrée déclarée manque sur une barre ne renvoie rien, plutôt qu'un nombre plausible.

02

Backtest avec frictions

Des règles par marché plutôt qu'un moteur générique : T+1 et lots A-share, pas de négociation Hong Kong, demi-séances américaines, funding crypto, modèles de commission et de slippage.

03

Comptes papier

Un compte enregistré confronte des ordres ou une stratégie à des barres clôturées et n'avance que dans un sens. Il ne touche jamais un courtier — le but est de savoir ce qui casse avant le capital.

02 · Hébergement

Installé en quelques minutes, parce que je ne l'ai pas compilé

Le serveur a un vCPU, 3,9 Go de RAM, et fait déjà tourner cinq piles. Compiler l'image sur place, c'est 388 paquets npm et 197 paquets Python — numpy, scipy, pandas, scikit-learn, matplotlib — sur ce seul cœur, avec un pic mémoire autour de 1,5 Go et un swap déjà à moitié consommé. Une demi-heure de CPU monopolisé, et une vraie chance que l'OOM killer choisisse un voisin.

J'ai donc récupéré l'image publiée, épinglée par digest plutôt que par le tag edge qui suit la branche : 0,53 Go compressé, 26 secondes, 2,3 Go sur disque. Le conteneur a son propre réseau bridge, ne publie aucun port, tourne sur un système de fichiers en lecture seule avec toutes les capacités retirées, et plafonne à 1,6 Go et un CPU. Au repos, il occupe environ 220 Mo. Une seule entrée : Traefik termine le TLS avec un certificat Let's Encrypt et demande un mot de passe avant même d'atteindre l'application.

0

Compilation locale

Image pré-construite, épinglée par digest.

26 s

Pour la récupérer

0,53 Go compressé, 13 couches.

2,3 Go

Sur disque

Aucun cache de build laissé derrière.

220 Mo

Au repos

L'inférence est distante, pas locale.

03 · Ce que j'en fais vraiment

Écrire la thèse, puis essayer de la tuer

01

De la thèse au code

Une idée en langage courant devient une stratégie modulaire en Python : univers, signal, sizing, rebalancement. Le code est lisible, donc une mauvaise idée se voit avant d'être mesurée.

02

Criblage de facteurs

Lesquels, parmi les 478, portent de l'information sur cet univers, et avec combien d'observations. Un facteur qui manque de points d'IC est écarté avec sa raison, pas présenté comme un signal.

03

Backtests avec coûts

Sharpe, CAGR, drawdown maximal, taux de réussite, turnover et estimation du slippage — parce qu'une stratégie qui meurt sur les frais n'a jamais été une stratégie.

04

Ombre, puis arrêt

Découpage out-of-sample, drawdown Monte-Carlo, puis un compte papier. Si l'avantage ne survit pas aux deux premiers, il n'y a pas de troisième étape.

Ce que ce banc ne fera pas
  • Aucun courtier connecté, aucune clé avec droit de passer un ordre, aucun capital.
  • Aucune affirmation qu'un backtest est un avantage. C'est une hypothèse avec des barres d'erreur.
  • Aucune exécution autonome — jamais. Un ordre proposé serait formaté, présenté, et laissé en attente d'un humain.
  • Aucun chiffre de performance publié depuis un run qui n'a pas été testé hors échantillon.
Pourquoi un second outil

Un desk qui lit un marché, un banc qui essaie de falsifier cette lecture. Les garder séparés force la question intéressante : quand les deux sont en désaccord, lequel a tort, et comment le saurais-je ?

Tourne sur son propre sous-domaine de ce serveur, derrière une authentification, hors du site public. L'inférence passe par une API distante facturée à l'usage ; chaque run a un coût avant d'avoir une opinion.

Regarder le banc, pas le marketing

L'espace de travail est privé, mais l'architecture, les contraintes d'hébergement et les règles ci-dessus sont toute l'histoire. Le travail de stratégie vient ensuite, par incréments publics.

Ouvrir le banc Retour au Lab