Setup complet de A à Z : VM cloud hardened, Interactive Brokers TWS/Gateway, Python stack production-grade, bases de données time-series, monitoring, sécurité, et comment faire 90% du travail avec Claude Code.
Cette série est conçue pour un profil quant/dev/ops/data analyst/trader avec 30+ ans d'expérience en hedge fund. L'objectif est clair : transformer 100 000€ en 1 000 000€ en moins de 24 mois, sans levier, uniquement en positions longues sur actions et ETF multi-régions (US, EU, APAC), avec un drawdown maximum de 25%.
Pour atteindre cet objectif, il faut N stratégies complémentaires avec rotation adaptative selon le régime de marché. Aucune stratégie seule ne peut fournir un CAGR de 216%. C'est la combinaison et la gestion dynamique de 8-12 stratégies qui rend l'objectif atteignable.
| Composant | Technologie | Rôle | Coût/mois |
|---|---|---|---|
| VM Cloud | Hetzner CPX41 (AMD, 8 vCPU, 16 GB) | Exécution 24/7, backtest, data pipeline | ~30€ |
| Broker | Interactive Brokers Pro | Exécution multi-marché, data feed gratuit | ~10€ (market data) |
| Language | Python 3.12 + Rust (extensions critiques) | Core framework, stratégies, ML | Gratuit |
| Database | TimescaleDB (PostgreSQL) + DuckDB | Stockage bars/features, analytics | Gratuit (self-hosted) |
| Orchestration | systemd + cron + healthcheck | Scheduling, monitoring, restart | Gratuit |
| AI Assistant | Claude Code (claude -p) | Génération de code, debug, analyse | ~$20 (API) |
| Alertes | Discord webhooks + email SMTP | Notifications trades, erreurs, P&L | Gratuit |
| Versionning | Git + GitHub (privé) | Code, configs, backtest results | Gratuit |
| Total | ~60€/mois |
Une VM cloud plutôt qu'un ordinateur local pour plusieurs raisons critiques : uptime 99.99%, pas de coupure de courant/internet, latence réseau réduite (datacenters proches des exchanges), et isolation de l'environnement de production.
| Provider | Config | Prix/mois | Datacenter | Latence NYSE | Verdict |
|---|---|---|---|---|---|
| Hetzner | CPX41 (8 vCPU, 16 GB, 240 GB NVMe) | ~28€ | Falkenstein/Nuremberg | ~80ms | ✅ Meilleur rapport qualité/prix |
| OVH | B2-30 (8 vCPU, 30 GB, 200 GB) | ~32€ | Gravelines/Strasbourg | ~85ms | ✅ Bon pour EU, backup |
| AWS EC2 | c6a.2xlarge (8 vCPU, 16 GB) | ~$200 | us-east-1 (Virginia) | ~5ms | ⚠️ Cher mais latence minimale |
| DigitalOcean | Premium (8 vCPU, 16 GB) | ~$96 | NYC/SFO | ~10ms | ⚠️ Bon mais cher pour ce qu'il offre |
# Prompt pour Claude Code :
claude -p "Configure une VM Ubuntu 24.04 pour le trading algo:
1. Hardening SSH (clé ED25519 only, no password, port 2222)
2. UFW firewall (2222, 4001-4002 pour IBKR, 5432 PostgreSQL local only)
3. fail2ban configuré pour SSH
4. Python 3.12 avec pyenv + venv dédié 'algo'
5. TimescaleDB (PostgreSQL 16 + extension timescale)
6. DuckDB 1.0
7. Redis pour le cache temps réel
8. systemd service templates pour les stratégies
9. Logrotate pour les logs trading
10. Monitoring: node_exporter + custom health endpoint
11. Cron job: daily backup DB vers S3-compatible (Hetzner Object Storage)
12. unattended-upgrades pour les patches de sécurité
Génère tous les scripts et configs, explique chaque étape."
Interactive Brokers Pro est le seul broker qui offre simultanément : accès à 150+ marchés mondiaux, API complète (TWS API / ib_insync), commissions ultra-compétitives, market data gratuit avec $10K+ d'equity, et le Securities Lending Program pour revenus passifs.
| Setting | Valeur | Pourquoi |
|---|---|---|
| Account Type | Individual Pro (pas Lite !) | Pro = routing direct vers les exchanges, pas d'internalisation PFOF |
| Base Currency | EUR | Évite les frais de conversion pour les achats EU |
| Market Data | US Securities Snapshot + NYSE/NASDAQ Level 1 | Gratuit avec > $10K equity. Suffisant pour notre stratégie daily |
| API Connection | IB Gateway (headless, pas TWS) | IB Gateway est plus stable et consomme moins de mémoire que TWS |
| API Port | 4001 (live) / 4002 (paper) | Standard IBKR. Configurer dans ibgateway.conf |
| Max Order Rate | 50 orders/second | Largement suffisant pour des stratégies daily/swing |
# Prompt Claude Code : Setup ib_insync + IB Gateway
claude -p "Crée un module Python pour la connexion IBKR:
1. Classe IBKRConnection avec reconnexion automatique
2. IB Gateway en mode headless sur VM Linux (Docker ou natif)
3. Heartbeat monitoring (ping toutes les 30s, alerte Discord si down)
4. Méthodes: get_positions(), place_order(), get_bars(), get_account_summary()
5. Rate limiting intelligent (max 45 req/s avec backoff)
6. Logging complet (chaque requête + réponse)
7. Mode paper trading toggle (port 4001 vs 4002)
8. Error handling: automatic reconnect, frozen market data, pacing violations
Utilise ib_insync 0.9.x avec asyncio. Teste avec paper trading."
| Catégorie | Package | Version | Rôle |
|---|---|---|---|
| Broker API | ib_insync | 0.9.86 | Interface IBKR asynchrone |
| Data | pandas, polars | 2.2, 1.x | DataFrames. Polars pour le backtest (10× plus rapide) |
| ML/Stats | scikit-learn, xgboost, statsmodels | 1.5, 2.1, 0.14 | Régimes, facteurs, classification |
| Backtest | vectorbt | 0.26 | Backtest vectorisé ultra-rapide (1000× plus rapide que event-driven) |
| Optimization | scipy, cvxpy | 1.14, 1.5 | Portfolio optimization, risk budgeting |
| Database | psycopg2, duckdb | 2.9, 1.0 | TimescaleDB + analytics locale |
| Monitoring | prometheus_client, structlog | 0.21, 24.x | Métriques + logging structuré JSON |
| Alertes | discord-webhook, aiohttp | 1.3, 3.9 | Notifications Discord |
| Scheduling | APScheduler | 3.10 | Cron-like scheduler en Python |
| Config | pydantic-settings, tomllib | 2.5, stdlib | Configuration typée et validée |
# Prompt Claude Code : Scaffold du projet
claude -p "Crée la structure d'un projet Python de trading algo:
algo_trader/
├── config/ # TOML configs (strategies, broker, alerts)
├── core/ # Engine principal (scheduler, event bus, state)
├── data/ # Data pipeline (fetchers, validators, stores)
├── strategies/ # N stratégies (interface commune + implémentations)
├── portfolio/ # Portfolio construction + risk management
├── execution/ # Order management, IBKR interface
├── monitoring/ # Health checks, Prometheus metrics, Discord
├── backtest/ # Backtesting engine (vectorbt wrapper)
├── ml/ # Machine learning models (regime, scoring)
├── scripts/ # CLI scripts (run, backtest, report)
└── tests/ # Unit + integration tests
Chaque module a un __init__.py avec les exports publics.
L'engine principal utilise un event bus asyncio pour découpler les composants.
Toutes les stratégies héritent de BaseStrategy avec les méthodes:
generate_signals(), calculate_positions(), on_fill(), on_cancel()
Génère le code complet avec typing strict et docstrings."
Claude Code est l'arme secrète de cette série. En tant que quant/dev avec 30 ans d'expérience, vous savez quoi construire — Claude Code s'occupe du comment. Voici le workflow optimal :
VOUS : Définissez l'architecture, les contraintes, les métriques cibles. Claude ne comprend pas votre alpha — c'est votre valeur ajoutée unique
CLAUDE : Écrit le code Python, les tests, les configs. Prompt détaillé → code production-grade. Itérez avec « corrige ceci, ajoute cela »
CLAUDE : Analyse les logs, identifie les bugs, optimise les performances. « Pourquoi ce backtest montre un Sharpe de 0.2 ? Analyse les trades perdants et propose des améliorations »
VOUS : Validez les résultats, prenez les décisions stratégiques. Claude ne trade pas à votre place — il accélère votre boucle de développement ×10
| Tâche | Prompt type |
|---|---|
| Nouvelle stratégie | claude -p "Implémente une stratégie momentum cross-section sur US+EU+APAC stocks, rebalancement hebdomadaire, top 20 par momentum 12-1 mois, filtre volume > $5M/jour, filtre de volatilité. Hérite de BaseStrategy, avec backtest vectorbt sur 5 ans." |
| Backtest | claude -p "Lance un walk-forward backtest de la stratégie momentum: train 252j, test 63j, 20 folds. Métriques: CAGR, Sharpe, MaxDD, Calmar, Win Rate, Avg Trade. Génère un rapport HTML avec charts." |
| Debug | claude -p "Le dernier run a eu 3 trades rejected par IBKR avec code 201. Lis les logs dans /var/log/algo/execution.log et diagnostique. Propose un fix." |
| Monitoring | claude -p "Crée un dashboard Discord qui poste chaque matin à 7h: P&L du jour/semaine/mois, positions ouvertes, drawdown actuel, prochains rebalancements, alertes si DD > 10%." |
| Mesure | Implémentation | Criticité |
|---|---|---|
| SSH | Clé ED25519 uniquement, port non standard, no password auth | 🔴 Critique |
| Firewall | UFW : seuls les ports nécessaires (SSH, IBKR 4001/4002) | 🔴 Critique |
| fail2ban | Ban après 3 tentatives, 24h de ban | 🟡 Important |
| Secrets | Variables d'environnement ou Vault (pas dans le code, pas dans git) | 🔴 Critique |
| 2FA IBKR | IBKR Mobile Auth obligatoire (complique le headless, mais nécessaire) | 🔴 Critique |
| Encryption | LUKS full-disk encryption + TLS pour toutes les connexions DB | 🟡 Important |
| Backups | Daily backup chiffré de la DB + configs vers S3 | 🔴 Critique |
| Updates | unattended-upgrades pour les patches de sécurité | 🟡 Important |
| Monitoring | Alerte Discord si le service tombe ou si CPU/RAM anomal | 🟡 Important |
| Kill switch | Script qui liquide TOUTES les positions en 1 commande si urgence | 🔴 Critique |