Skip to content

nobodyohm-web/Kairos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

107 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sillage

Système de trading algorithmique dual-asset (XAUUSD + BTCUSD) pour comptes FTMO. Reinforcement Learning (SAC + LSTM), news intelligence multi-LLM, et garde FTMO intégrée. Compatible Windows et macOS.

                       ┌──────────────┐
   News (RSS)  ─────►  │  Sentiment   │  ─►  current_signal.json
   Macro feeds ─────►  │  pipeline    │      btc_signal.json
                       │ (Groq/Gemini │
                       │   FinBERT)   │
                       └──────┬───────┘
                              │
                              ▼
   cTrader  ─── ZMQ:7777 ───► Sillage bridge XAU  ──┐
   cTrader  ─── ZMQ:7778 ───► Sillage bridge BTC  ──┤── SAC RL model (PyTorch)
                                                    │   FTMO guard
                                                    │   Kelly + Decay engines
                                                    ▼
                                              state.json / btc_state.json
                                              journal/, logs/

⚠️ Avertissement

  • Argent réel. Sillage a été conçu pour un compte FTMO $100K. Le code inclut une garde drawdown FTMO mais aucun système n'est infaillible. Vous êtes seul responsable de vos pertes.
  • Aucune garantie. Les performances historiques (cf. plus bas) ne préjugent pas des performances futures. Validez toujours sur OOS avant de passer en live.
  • Code as-is. Pas de support officiel. Le repo public est un partage technique, pas un produit fini.

Sommaire

  1. Ce qui est dans le repo (et ce qui n'y est pas)
  2. Prérequis
  3. Installation
  4. Configuration des API (.env)
  5. cTrader + cBot ZMQ
  6. Données historiques et modèles
  7. Premier lancement
  8. Monitoring
  9. Backtests OOS
  10. Re-entraînement hebdomadaire
  11. Personnaliser le LLM (votre IA)
  12. Garde FTMO et urgences
  13. Dépannage
  14. Architecture interne (référence)
  15. Licence

1. Ce qui est dans le repo

Inclus

  • Bridges Python (kairos_bridge_v15.py XAU, kairos_bridge_v15_btc.py BTC)
  • Modèle SAC + environnement training (vast_training/sac_v15_elite.py)
  • Pipeline news multi-source (mistral_finetune/news_collector_v2.py, news_collector_btc.py)
  • Engines : Kelly sizing, Performance Decay, Portfolio Coordinator, Risk Budget
  • Scripts de backtest OOS (XAU + BTC, "bridge-parity")
  • Scripts de re-entraînement hebdomadaire
  • Launchers .bat (Windows) et .sh (macOS / Linux)

Pas inclus (vous devrez les obtenir/générer)

  • .env : vos clés API (cf. .env.example)
  • Modèles entraînés (*.pt) : trop lourds pour GitHub (>100 MB chacun). Deux options :
    • Re-entraîner depuis zéro avec scripts/monday_retrain.py --force (nécessite des données historiques + GPU recommandé)
    • Demander un transfert privé à l'auteur du repo
  • Données historiques (tia/data/, tia/data_btc/) : parquets OHLC + features. À générer via scripts/update_data_btc.py et équivalent XAU.
  • Le cBot cTrader (C#) : Sillage est un bridge Python ; il faut un cBot côté cTrader qui parle ZMQ. Voir section 5.

2. Prérequis

Composant Min Recommandé
Python 3.11 3.12 / 3.13
RAM 8 GB 16 GB
GPU (training) aucun (CPU lent) NVIDIA 4 GB+ VRAM (Windows) ou Apple Silicon (Mac, MPS)
Espace disque 5 GB 20 GB (avec parquets historiques)
Compte broker cTrader (FTMO ou autre) FTMO $100K
OS Windows 10/11 ou macOS 12+

cTrader : téléchargez depuis ctrader.com (Windows ou macOS). Sur Mac, le client desktop existe mais le support cBot peut être plus restreint que sur Windows — vérifiez avec votre broker.


3. Installation

3.1 Cloner le repo

git clone https://github.com/<votre-fork>/Sillage.git
cd Sillage

3.2 Créer un venv

macOS / Linux :

python3 -m venv .venv
source .venv/bin/activate

Windows (PowerShell) :

python -m venv .venv
.venv\Scripts\Activate.ps1

3.3 Installer les dépendances

pip install --upgrade pip
pip install -r requirements.txt

PyTorch + GPU : si vous avez une carte NVIDIA sur Windows et voulez CUDA, installez torch séparément AVANT le pip install -r :

pip install torch --index-url https://download.pytorch.org/whl/cu121

Sur Apple Silicon, le pip install torch standard active automatiquement Metal/MPS.


4. Configuration des API

Copiez le template :

cp .env.example .env

Puis éditez .env et remplissez :

Variable Obligatoire ? Comment l'obtenir
TELEGRAM_BOT_TOKEN non (fortement recommandé) Parlez à @BotFather sur Telegram, /newbot
TELEGRAM_CHAT_ID non (idem) Envoyez un message à votre bot, puis https://api.telegram.org/bot<TOKEN>/getUpdates
GROQ_API_KEY recommandé (gratuit, rapide) https://console.groq.com → API Keys
GEMINI_API_KEY optionnel (fallback) https://aistudio.google.com/app/apikey

Si aucune clé LLM n'est fournie, le pipeline news bascule sur FinBERT local uniquement (suffisant mais moins riche). Sillage ne plantera pas.

⚠️ Ne committez jamais .env. Il est dans .gitignore.


5. cTrader + cBot ZMQ

Sillage n'est pas autonome : c'est le cerveau Python qui prend les décisions, mais c'est un cBot côté cTrader qui exécute les ordres. Le cBot et Sillage communiquent via ZMQ (TCP localhost).

Ports utilisés

Asset Port Direction
XAUUSD 7777 cBot ↔ Python
BTCUSD 7778 cBot ↔ Python

Le cBot cTrader (C#)

Un cBot qui parle au bridge doit :

  1. Ouvrir un socket ZMQ REQ (ou REP) côté cTrader
  2. Envoyer à chaque tick / nouvelle bougie : OHLC, spread, équité, positions ouvertes
  3. Recevoir les commandes du bridge : BUY, SELL, CLOSE_ALL, MODIFY_SL, etc.
  4. Exécuter ces commandes via l'API cTrader (ExecuteMarketOrder, ClosePosition, etc.)

Le contrat de message est défini dans kairos_bridge_v15.py (recherchez recv_pyobj / send_pyobj). Le format pickle est utilisé.

📦 Le cBot C# n'est pas open-source dans ce repo. Si vous voulez l'utiliser tel quel, vous devez écrire le vôtre selon le contrat ZMQ ci-dessus, ou contacter l'auteur. Une stub cBot pourra être ajoutée dans une release future.

Configuration cTrader

  1. Ajoutez la paire XAUUSD (chart M5) — attachez votre cBot, port 7777
  2. Ajoutez la paire BTCUSD (chart M15) — attachez votre cBot, port 7778
  3. Activez "Allow live trading" dans cTrader
  4. Lancez le bridge avant de démarrer le cBot

6. Données historiques et modèles

6.1 Données

Sillage attend des parquets dans tia/data/ (XAU) et tia/data_btc/ (BTC), aux timeframes M5, M15, H1, H4, D1.

Pour BTC, un script de mise à jour existe :

python scripts/update_data_btc.py

Pour XAU, vous devrez fournir vos propres parquets OHLC ou adapter scripts/update_data.py.

Vérifiez le format attendu en lisant les premières lignes de vast_training/sac_v15_elite.py (fonction build_features).

6.2 Modèles SAC

Les fichiers .pt (poids du réseau) sont gitignorés car >100 MB. Deux chemins :

A. Re-entraîner localement (long mais reproductible)

# XAU
python scripts/monday_retrain.py --force --dry-run    # vérifier que tout charge
python scripts/monday_retrain.py --force              # vrai retrain (~1-3 h sur GPU)

# BTC
python scripts/monday_retrain_btc.py --force

B. Récupérer un modèle pré-entraîné : ce n'est pas distribué publiquement. Si l'auteur met à disposition une release, vous trouverez les .pt dans GitHub Releases.

Sans modèle, le bridge crash au démarrage. Le check des fichiers est dans le launcher (launch_kairos_v15.bat / .sh).


7. Premier lancement

Avant de lancer en live

  1. .env rempli
  2. pip install -r requirements.txt OK
  3. ✅ Modèles .pt présents dans models/sac_v15_elite/
  4. ✅ cTrader ouvert avec votre cBot attaché aux deux paires
  5. Backtest OOS validé (cf. section 9)
  6. Mode démo d'abord ! Pas de live tant que vous n'avez pas vu une session complète sans crash.

Lancer

macOS / Linux :

chmod +x *.sh                    # première fois seulement
./LAUNCH_SILLAGE.sh              # lance les deux moteurs (XAU + BTC)
# ou séparément :
./launch_sillage_xau.sh
./launch_sillage_btc.sh

Windows :

.\LAUNCH_KAIROS.bat              # lance les deux moteurs
# ou séparément :
.\launch_kairos_v15.bat
.\launch_kairos_v15_btc.bat

Les noms KAIROS / kairos_* dans les fichiers internes correspondent au nom de code historique. Ils n'affectent pas le fonctionnement et seront harmonisés progressivement vers Sillage.

Pour arrêter

  • Stop propre : créez un fichier standby.flag à la racine → le bridge ferme ses positions et s'arrête
    • macOS : touch standby.flag
    • Windows : echo. > standby.flag
  • Reprendre : supprimez standby.flag (rm / del)
  • Stop dur : Ctrl+C dans la fenêtre, ou fermer la fenêtre

8. Monitoring

Logs

Fichier Rôle
logs/kairos_v15.log Bridge XAU
logs/kairos_v15_btc.log Bridge BTC
logs/crash_history.log Historique des crashs/restart

Suivi temps réel :

macOS / Linux :

tail -f logs/kairos_v15_btc.log

Windows (PowerShell) :

Get-Content logs\kairos_v15_btc.log -Wait -Tail 30

Telegram

Si vous avez configuré TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID, vous recevrez :

  • 🟢 Démarrage / arrêt
  • 📊 Heartbeat horaire (équité, P&L journalier)
  • 💰 Chaque entrée / sortie de trade
  • ⚠️ Alertes drawdown FTMO

Le bot répond aussi aux commandes /status, /positions, /equity (voir bridges pour la liste complète).

State files

  • state.json (XAU) et btc_state.json (BTC) : crash recovery. Ne jamais éditer à la main pendant que le bridge tourne.
  • portfolio_state.json : coordination cross-asset.

9. Backtests OOS

Obligatoire avant tout déploiement.

# XAU — 306 derniers jours, OOS
python scripts/backtest_v15.py --no-ftmo --no-plot --sl-mode baseline

# BTC — bridge-parity (mirror le state machine du live)
python scripts/oos_backtest_btc_realistic.py

Baselines actuels (à battre pour valider une modif) :

  • XAU : +$3,088 sur 275 trades, WR 68.4%, PF 1.29, DD 1.5%
  • BTC : +$30,546, WR 59.5%, PF 1.35, DD 4.30%

10. Ré-entraînement hebdomadaire

Le modèle SAC dérive avec le temps. Sillage prévoit un retrain hebdo (~1 h GPU) :

python scripts/monday_retrain.py --force        # XAU
python scripts/monday_retrain_btc.py --force    # BTC

Automatisation :

  • Windows : Task Scheduler → tâche hebdo Lundi 06:00 → action monday_retrain.bat
  • macOS / Linux : crontab -e0 6 * * 1 cd /path/to/Sillage && ./monday_retrain.sh

Le script :

  1. Télécharge les nouvelles données
  2. Fait un fine-tune sur les 45 derniers jours
  3. Garde le meilleur seed (anti-overfit guard : refuse le déploiement si val_score ≤ 0)
  4. Backup l'ancien modèle dans models/backup_champion/
  5. Notifie via Telegram

11. Personnaliser le LLM (votre IA)

Sillage utilise un stack LLM modulaire. Par défaut :

  1. Groq (cloud, rapide, gratuit) — primaire
  2. Gemini (cloud, fallback)
  3. FinBERT (local, toujours actif pour le sentiment)

Changer le modèle Groq

Dans mistral_finetune/news_collector_v2.py cherchez groq_model et modifiez :

groq_model = "llama-3.3-70b-versatile"  # défaut
# alternatives : "mixtral-8x7b-32768", "llama-3.1-8b-instant", etc.

Utiliser un LLM local (Ollama / llama.cpp / LM Studio)

Le code historique a un mode "Mistral local". Si vous tournez Ollama localement :

# dans news_collector_v2.py, remplacez l'appel Groq par :
import requests
def call_ollama(prompt):
    r = requests.post("http://localhost:11434/api/generate",
                      json={"model": "mistral", "prompt": prompt, "stream": False})
    return r.json()["response"]

Plugger un autre cloud (Anthropic / OpenAI)

Ajoutez une nouvelle classe dans le pipeline (cf. la classe LLMClient existante) et chaînez-la avant Groq dans la fallback chain. Le contrat de retour est un dict avec les clés direction, strength, categories, etc. — voir current_signal.json pour le schéma.

💡 Le pipeline ne dépend d'aucun provider en dur ; tout passe par des clients abstraits dans news_collector_*.py. Lisez ces fichiers pour comprendre l'agrégation et le tie-breaking.


12. Garde FTMO et urgences

Sillage embarque une garde FTMO stricte :

  • Daily DD max : 4.5% (buffer 0.5% sous le 5% officiel)
  • Total DD max : 9% (buffer 1% sous le 10%)
  • Friday close : positions fermées d'office à 21h UTC le vendredi (pas de weekend hold)
  • Floor d'équité : pas de nouveau trade si équité < $90,500

Procédures d'urgence

Problème Action
Stopper immédiatement touch standby.flag (Mac) / echo. > standby.flag (Windows)
Reprendre Supprimer standby.flag
FTMO locked, positions ouvertes Fermer manuellement dans cTrader UI
Reset du flag FTMO après close manuel Éditer state.json"ftmo_locked": false (bridge arrêté)
Rollback modèle Copier de models/backup_champion/ vers models/sac_v15_elite/

13. Dépannage

[CRITICAL] SAC V15 Model NOT FOUND

Vous n'avez pas de fichier .pt dans models/sac_v15_elite/. Voir section 6.2.

Address already in use: 7777

Une instance précédente du bridge tourne. Les launchers tuent normalement le process automatiquement. Manuellement :

  • Mac : lsof -i :7777 puis kill -9 <PID>
  • Windows : netstat -ano | findstr :7777 puis taskkill /PID <PID> /F

[ERROR] No LLM API available

Aucune des GROQ_API_KEY / GEMINI_API_KEY n'est dans .env. Le système fonctionne quand même (FinBERT seul) mais les signals news seront moins riches.

cBot ne reçoit rien

  1. Le cBot est-il attaché au bon symbole et au bon port ?
  2. Le bridge tourne-t-il avant le cBot ?
  3. Firewall : autoriser Python sur les ports 7777 / 7778 (localhost-only normalement OK).

RuntimeError: CUDA out of memory lors du retrain

GPU trop petit (T400 4GB). Soit ajouter du swap, soit retraîner sur CPU (--device cpu), soit utiliser une instance cloud (Vast.ai, Lambda Labs).

Modèle qui ne trade plus

Lisez .claude/rules/debugging-playbook.md — diagnostic step-by-step pour les cas "won't trade" / "good WR but losing money" / "FTMO locked".


14. Architecture interne (référence)

Fichier Rôle
kairos_bridge_v15.py Engine XAU (port 7777, BUY-only, SL $100, risk 0.6%)
kairos_bridge_v15_btc.py Engine BTC (port 7778, bi-directional, SL 2.5×ATR, risk 2.5%)
vast_training/sac_v15_elite.py Réseau SAC (LSTM 256 + GRN 768) + env curriculum
kelly_engine.py Half-Kelly per-confidence-bucket (asset-aware)
performance_decay.py Anti-tilt 4 modes (OPTIMAL → CAUTION → DEFENSIVE → SURVIVAL)
portfolio_coordinator.py Coordination cross-asset XAU+BTC via portfolio_state.json
risk_budget.py Cap pire-cas à 40% du DD FTMO restant
mistral_finetune/news_collector_v2.py Pipeline news XAU
mistral_finetune/news_collector_btc.py Pipeline news BTC
kairos_config.yaml Config (ports, FTMO, sessions)
KAIROS.md Modlog complet + intelligence système
.claude/rules/ Règles de safety / debugging / code-quality

Rules d'or (sont coûteuses si violées)

Voir .claude/rules/trading-safety.md. Les principales :

  • Pas de SELL sur XAU (BUY-only mode, prouvé OOS)
  • Risk max 0.6% XAU / 2.5% BTC
  • Pas de copy.deepcopy() sur modèles PyTorch (utiliser v.cpu().clone())
  • Pas de reset LSTM pendant cooldown BTC
  • Toujours backtest OOS avant déploiement

15. Licence

Ce repo est partagé pour usage personnel et éducatif. Pas de redistribution commerciale sans autorisation. Aucune garantie, ni de fonctionnement ni de profit. Trader des marchés à effet de levier comporte un risque de perte totale.

"Le sillage trahit le navire — pas le navire qui se trompe en suivant son sillage."

About

Trading IA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors