Autonomous Quant Research System

AQRS

Un département de recherche quantitative de hedge fund, sur un PC portable. Dix agents posent l’hypothèse, testent, mesurent le risque et rédigent le rapport. Ils savent aussi dire non.

01 · le problème

Un backtest ment par défaut. Il faut lui apprendre à ne pas mentir.

BIAIS 01

Lire le futur

Le signal utilise le prix auquel on prétend acheter.

→ délai d’exécution ≥ 1, imposé par le moteur
BIAIS 02

Oublier les faillites

On ne teste que les titres qui existent encore aujourd’hui.

→ titres radiés gardés, univers daté
BIAIS 03

Torturer les données

Essayer 200 réglages et garder le meilleur.

→ walk-forward, Sharpe « dégonflé » (DSR)
BIAIS 04

Trader gratuitement

Ignorer commissions, spread et glissement.

→ coûts à chaque rotation, sensibilité ×0 à ×5

AQRS les traite comme des contrôles bloquants : une étude qui en déclenche un est mise en veto, quel que soit son rendement.

02 · essayez

démo simplifiée · série aléatoire générée dans le navigateur, pas le moteur AQRS

Réglez le délai et les coûts : la belle courbe fond.

SIGNAL TENDANCE 3 J · 1 500 SÉANCES · GRAINE 42stratégieachat-conservation
ValueError : execution_lag doit être ≥ 1
AQRS refuse ce backtest · courbe d’un moteur naïf
–Sharpe
–rendement total
–drawdown max
–coûts cumulés

Le moteur d’AQRS applique les mêmes règles : signal à la clôture de t, ordre exécuté en t + délai, coûts prélevés sur chaque rotation.

03 · le workflow

rejeu des résultats réels de aqrs demo · données synthétiques

Une question entre, 13 étapes plus tard : un rapport, ou un veto.

EN ATTENTE

Choisissez une étude puis lancez. L’orchestrateur LangGraph enchaîne les nœuds ; Risque et Conformité peuvent tout bloquer.

04 · vérifié, pas seulement affirmé

Relancé pour cette présentation : mêmes chiffres, même empreinte.

/82
tests réussis
pytest relancé · 0 échec
avertissement ruff · erreur TypeScript
ruff, tsc, next build relancés
b5b37527
54c8cd17
empreinte globale de la démo
identique ligne à ligne, autre base (SQLite)
%
couverture du code
selon DEMO_REPORT.md (non remesurée)

Retrouver des régimes de volatilité plantés dans les données

HMM lissé (voit tout, non causal)94,7 %
HMM filtré (causal)87,6 %
Règle de volatilité (causale)83,1 %

05 · garde-fous

Les LLM proposent. Le code décide.

  • LLM
    Aucun chiffre calculé par une IAUn LLM local choisit dans une liste fermée et commente, sous contrôle de Pydantic. Le système marche aussi sans IA.
  • VETO
    Limites de risque codéesElles sont lues dans risk_limits.yaml ; aucun agent ne peut les lever, et l’empreinte du fichier est journalisée.
  • STOP
    Arrêt généralWorkflows et ordres simulés refusés (423) tant qu’un humain ne relâche pas l’arrêt.
  • 403
    Pas de courtier réelPaper trading uniquement ; LiveBrokerDisabled.
  • SHA
    Audit chaînéChaque décision est inscrite dans une piste d’audit chaînée en SHA-256.
Interface AQRS : l'étude « lit le futur » bloquée par un veto
Capture réelle · Research Lab · veto sur le piège « lit le futur »

06 · ce que la revue a trouvé

Solide sur des données de laboratoire. À durcir avant le réel.

Important · testé

Calendriers mixtes

Une crypto (7 j/7) et un ETF dans le même univers : l’ETF est soldé chaque vendredi et reste à 0 93,6 % des jours ouvrés. Problème à corriger avant de brancher Yahoo.

Important · testé

Arrêt relâchable depuis un autre site

killswitch/release n’a ni corps, ni jeton, ni contrôle d’origine : un formulaire posté par une page web le relâche.

Moyen · testé

Entrées invalides → 500

Indice de référence, fréquence ou symbole inconnu : l’API plante au lieu de refuser proprement (422).

Par conception

Données synthétiques

Elles prouvent que les méthodes retrouvent ce qui a été planté, pas qu’une stratégie gagne sur les marchés. Yahoo et FRED n’ont jamais été appelés.

Selon la doc

Petites IA lentes

Modèles de 2 à 3 B : 1 à 5 min par appel sur CPU, une erreur d’unité relevée. Le modèle de 9 B n’a pas tenu en RAM avec Docker.

Constat

Aucun commit Git

Les expériences notent nogit comme version du code : la traçabilité s’arrête là.

07 · sous le capot

Tout tourne en local.

InterfaceNext.js 16 · React 19 · Tailwind 4 · Plotly · 15 pages
APIFastAPI sur 127.0.0.1 · tâches longues en threads
AgentsLangGraph · 10 agents · permissions par outil
Quantpandas · SciPy · statsmodels · arch · hmmlearn · cvxpy
MLscikit-learn · XGBoost · LightGBM · PyTorch (CPU)
DonnéesSQLite ou TimescaleDB · Redis · MLflow · Alembic
IAOllama · LM Studio · ou aucune
Interface AQRS : optimisation de portefeuille, frontière efficiente
Capture réelle · Portfolio Optimization · six méthodes d’allocation

fin de séance

Le meilleur résultat d’AQRS, c’est une stratégie refusée.

Le piège « lit le futur » affichait un Sharpe de 17. Il a été bloqué par trois contrôles, sans intervention humaine.