Architecture Docker (8 services), FastAPI, TimescaleDB, Redis, Streamlit. Stratégies : scalping, intraday, swing. MLEngine + RegimeDetector (HMM). BacktestEngine + WalkForwardAnalyzer + Optuna optimizer. Routes API complètes dont /optimize async. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
435 lines
11 KiB
YAML
435 lines
11 KiB
YAML
# Configuration Sources de Données - Trading AI Secure
|
|
# Copier ce fichier vers data_sources.yaml
|
|
|
|
# ============================================================================
|
|
# SOURCES DE DONNÉES GRATUITES (Phase Développement)
|
|
# ============================================================================
|
|
|
|
# Yahoo Finance (Gratuit, Illimité)
|
|
yahoo_finance:
|
|
enabled: true
|
|
priority: 1 # Priorité 1 = source principale
|
|
description: "Yahoo Finance - Données EOD + intraday limitées"
|
|
|
|
capabilities:
|
|
historical_data: true
|
|
intraday_data: true # Limité à 7 jours
|
|
real_time: false
|
|
fundamental_data: true
|
|
|
|
limits:
|
|
rate_limit: null # Pas de limite officielle
|
|
max_requests_per_minute: 60 # Limite recommandée
|
|
max_symbols_per_request: 1
|
|
|
|
timeframes:
|
|
- "1m"
|
|
- "5m"
|
|
- "15m"
|
|
- "30m"
|
|
- "1h"
|
|
- "1d"
|
|
- "1wk"
|
|
- "1mo"
|
|
|
|
retry_policy:
|
|
max_retries: 3
|
|
backoff_factor: 2
|
|
timeout: 30
|
|
|
|
# Alpha Vantage (Gratuit, 500 calls/jour)
|
|
alpha_vantage:
|
|
enabled: true
|
|
priority: 2
|
|
description: "Alpha Vantage - Données temps réel et historiques"
|
|
api_key: "YOUR_API_KEY_HERE" # Obtenir sur https://www.alphavantage.co/support/#api-key
|
|
|
|
capabilities:
|
|
historical_data: true
|
|
intraday_data: true
|
|
real_time: true
|
|
fundamental_data: true
|
|
technical_indicators: true
|
|
|
|
limits:
|
|
rate_limit: 500 # 500 calls par jour
|
|
max_requests_per_minute: 5
|
|
max_symbols_per_request: 1
|
|
|
|
timeframes:
|
|
- "1min"
|
|
- "5min"
|
|
- "15min"
|
|
- "30min"
|
|
- "60min"
|
|
- "daily"
|
|
- "weekly"
|
|
- "monthly"
|
|
|
|
retry_policy:
|
|
max_retries: 3
|
|
backoff_factor: 2
|
|
timeout: 30
|
|
|
|
# Twelve Data (Gratuit, 800 calls/jour)
|
|
twelve_data:
|
|
enabled: false # Activer si besoin
|
|
priority: 3
|
|
description: "Twelve Data - Alternative robuste"
|
|
api_key: "YOUR_API_KEY_HERE" # Obtenir sur https://twelvedata.com/
|
|
|
|
capabilities:
|
|
historical_data: true
|
|
intraday_data: true
|
|
real_time: true
|
|
fundamental_data: true
|
|
technical_indicators: true
|
|
|
|
limits:
|
|
rate_limit: 800 # 800 calls par jour
|
|
max_requests_per_minute: 8
|
|
max_symbols_per_request: 1
|
|
|
|
timeframes:
|
|
- "1min"
|
|
- "5min"
|
|
- "15min"
|
|
- "30min"
|
|
- "1h"
|
|
- "1day"
|
|
- "1week"
|
|
- "1month"
|
|
|
|
retry_policy:
|
|
max_retries: 3
|
|
backoff_factor: 2
|
|
timeout: 30
|
|
|
|
# Polygon.io (Gratuit, 5 calls/minute)
|
|
polygon_io:
|
|
enabled: false
|
|
priority: 4
|
|
description: "Polygon.io - Données US premium"
|
|
api_key: "YOUR_API_KEY_HERE" # Obtenir sur https://polygon.io/
|
|
|
|
capabilities:
|
|
historical_data: true
|
|
intraday_data: true
|
|
real_time: true
|
|
fundamental_data: false
|
|
|
|
limits:
|
|
rate_limit: 5 # 5 calls par minute (gratuit)
|
|
max_requests_per_minute: 5
|
|
max_symbols_per_request: 1
|
|
|
|
timeframes:
|
|
- "1min"
|
|
- "5min"
|
|
- "15min"
|
|
- "1hour"
|
|
- "1day"
|
|
|
|
retry_policy:
|
|
max_retries: 3
|
|
backoff_factor: 2
|
|
timeout: 30
|
|
|
|
# FRED API (Réserve Fédérale - Données Macro)
|
|
fred_api:
|
|
enabled: true
|
|
priority: 5
|
|
description: "FRED - Données macroéconomiques"
|
|
api_key: "YOUR_API_KEY_HERE" # Obtenir sur https://fred.stlouisfed.org/docs/api/api_key.html
|
|
|
|
capabilities:
|
|
economic_indicators: true
|
|
interest_rates: true
|
|
inflation_data: true
|
|
|
|
limits:
|
|
rate_limit: null # Pas de limite
|
|
max_requests_per_minute: 120
|
|
|
|
retry_policy:
|
|
max_retries: 3
|
|
backoff_factor: 2
|
|
timeout: 30
|
|
|
|
# ============================================================================
|
|
# SOURCES CRYPTO (Pour Tests)
|
|
# ============================================================================
|
|
|
|
# Binance Public API
|
|
binance:
|
|
enabled: false # Activer pour tests crypto
|
|
priority: 6
|
|
description: "Binance - Données crypto gratuites"
|
|
|
|
capabilities:
|
|
historical_data: true
|
|
intraday_data: true
|
|
real_time: true
|
|
orderbook: true
|
|
|
|
limits:
|
|
rate_limit: null # Illimité (public API)
|
|
max_requests_per_minute: 1200
|
|
weight_limit: 1200 # Weight-based rate limiting
|
|
|
|
timeframes:
|
|
- "1m"
|
|
- "5m"
|
|
- "15m"
|
|
- "30m"
|
|
- "1h"
|
|
- "4h"
|
|
- "1d"
|
|
|
|
retry_policy:
|
|
max_retries: 3
|
|
backoff_factor: 2
|
|
timeout: 30
|
|
|
|
# CoinGecko API
|
|
coingecko:
|
|
enabled: false
|
|
priority: 7
|
|
description: "CoinGecko - Backup crypto"
|
|
|
|
capabilities:
|
|
historical_data: true
|
|
market_data: true
|
|
fundamental_data: true
|
|
|
|
limits:
|
|
rate_limit: 50 # 50 calls par minute
|
|
max_requests_per_minute: 50
|
|
|
|
retry_policy:
|
|
max_retries: 3
|
|
backoff_factor: 2
|
|
timeout: 30
|
|
|
|
# ============================================================================
|
|
# IG MARKETS (Production)
|
|
# ============================================================================
|
|
|
|
ig_markets:
|
|
enabled: false # Activer en Phase 5
|
|
priority: 0 # Priorité 0 = source principale en prod
|
|
description: "IG Markets - Trading réel"
|
|
|
|
# Environnements
|
|
environments:
|
|
demo:
|
|
api_url: "https://demo-api.ig.com/gateway/deal"
|
|
lightstreamer_url: "https://demo-apd.marketdatasys.com"
|
|
api_key: "" # À configurer
|
|
username: ""
|
|
password: ""
|
|
account_id: ""
|
|
|
|
live:
|
|
api_url: "https://api.ig.com/gateway/deal"
|
|
lightstreamer_url: "https://apd.marketdatasys.com"
|
|
api_key: "" # À configurer
|
|
username: ""
|
|
password: ""
|
|
account_id: ""
|
|
|
|
capabilities:
|
|
historical_data: true
|
|
real_time_streaming: true
|
|
order_execution: true
|
|
account_management: true
|
|
|
|
limits:
|
|
rate_limit: 60 # 60 requêtes par minute
|
|
max_requests_per_minute: 60
|
|
max_positions: 200
|
|
|
|
retry_policy:
|
|
max_retries: 3
|
|
backoff_factor: 2
|
|
timeout: 30
|
|
|
|
# ============================================================================
|
|
# CONFIGURATION CACHE
|
|
# ============================================================================
|
|
|
|
cache:
|
|
enabled: true
|
|
description: "Cache local pour réduire appels API"
|
|
|
|
# Backend cache
|
|
backend: "redis" # redis, memory, disk
|
|
|
|
# Redis configuration (si backend = redis)
|
|
redis:
|
|
host: "localhost"
|
|
port: 6379
|
|
db: 0
|
|
password: null
|
|
|
|
# TTL par type de données
|
|
ttl:
|
|
intraday_1min: 60 # 1 minute
|
|
intraday_5min: 300 # 5 minutes
|
|
intraday_15min: 900 # 15 minutes
|
|
intraday_1hour: 3600 # 1 heure
|
|
daily: 86400 # 1 jour
|
|
weekly: 604800 # 1 semaine
|
|
fundamental: 2592000 # 30 jours
|
|
|
|
# Politique de cache
|
|
policy:
|
|
max_size_mb: 1000 # 1 GB max
|
|
eviction_policy: "lru" # lru, lfu, fifo
|
|
compression: true
|
|
|
|
# ============================================================================
|
|
# FAILOVER ET REDONDANCE
|
|
# ============================================================================
|
|
|
|
failover:
|
|
enabled: true
|
|
description: "Basculement automatique si source principale échoue"
|
|
|
|
# Stratégie de failover
|
|
strategy: "priority" # priority, round_robin, random
|
|
|
|
# Conditions de failover
|
|
triggers:
|
|
consecutive_failures: 3 # 3 échecs consécutifs
|
|
timeout_threshold: 30 # 30 secondes timeout
|
|
error_rate_threshold: 0.5 # 50% taux d'erreur
|
|
|
|
# Cooldown avant retry source principale
|
|
cooldown_seconds: 300 # 5 minutes
|
|
|
|
# ============================================================================
|
|
# MONITORING ET LOGGING
|
|
# ============================================================================
|
|
|
|
monitoring:
|
|
enabled: true
|
|
|
|
# Métriques à tracker
|
|
metrics:
|
|
- "api_calls_count"
|
|
- "api_calls_success_rate"
|
|
- "api_response_time"
|
|
- "cache_hit_rate"
|
|
- "data_freshness"
|
|
- "failover_events"
|
|
|
|
# Alertes
|
|
alerts:
|
|
high_error_rate:
|
|
threshold: 0.3 # 30% taux d'erreur
|
|
notification: ["telegram"]
|
|
|
|
rate_limit_approaching:
|
|
threshold: 0.9 # 90% de la limite
|
|
notification: ["telegram"]
|
|
|
|
source_unavailable:
|
|
duration_seconds: 300 # 5 minutes indisponible
|
|
notification: ["telegram", "email"]
|
|
|
|
logging:
|
|
enabled: true
|
|
level: "INFO" # DEBUG, INFO, WARNING, ERROR
|
|
|
|
# Logs par source
|
|
log_api_calls: true
|
|
log_cache_operations: true
|
|
log_failover_events: true
|
|
|
|
# Rotation logs
|
|
rotation:
|
|
max_size_mb: 100
|
|
backup_count: 10
|
|
|
|
# ============================================================================
|
|
# SYMBOLES ET MARCHÉS
|
|
# ============================================================================
|
|
|
|
symbols:
|
|
# Forex
|
|
forex:
|
|
- symbol: "EURUSD"
|
|
name: "Euro / US Dollar"
|
|
enabled: true
|
|
sources: ["yahoo_finance", "alpha_vantage", "ig_markets"]
|
|
|
|
- symbol: "GBPUSD"
|
|
name: "British Pound / US Dollar"
|
|
enabled: true
|
|
sources: ["yahoo_finance", "alpha_vantage", "ig_markets"]
|
|
|
|
- symbol: "USDJPY"
|
|
name: "US Dollar / Japanese Yen"
|
|
enabled: true
|
|
sources: ["yahoo_finance", "alpha_vantage", "ig_markets"]
|
|
|
|
# Indices
|
|
indices:
|
|
- symbol: "^GSPC" # S&P 500
|
|
name: "S&P 500"
|
|
enabled: true
|
|
sources: ["yahoo_finance", "alpha_vantage"]
|
|
|
|
- symbol: "^DJI" # Dow Jones
|
|
name: "Dow Jones Industrial Average"
|
|
enabled: true
|
|
sources: ["yahoo_finance", "alpha_vantage"]
|
|
|
|
# Crypto (tests uniquement)
|
|
crypto:
|
|
- symbol: "BTCUSD"
|
|
name: "Bitcoin / US Dollar"
|
|
enabled: false
|
|
sources: ["binance", "coingecko"]
|
|
|
|
- symbol: "ETHUSD"
|
|
name: "Ethereum / US Dollar"
|
|
enabled: false
|
|
sources: ["binance", "coingecko"]
|
|
|
|
# ============================================================================
|
|
# VALIDATION DONNÉES
|
|
# ============================================================================
|
|
|
|
data_validation:
|
|
enabled: true
|
|
|
|
# Checks de qualité
|
|
quality_checks:
|
|
check_missing_values: true
|
|
max_missing_pct: 0.05 # 5% max valeurs manquantes
|
|
|
|
check_outliers: true
|
|
outlier_std_threshold: 5 # 5 écarts-types
|
|
|
|
check_duplicates: true
|
|
|
|
check_chronological_order: true
|
|
|
|
check_price_consistency: true # High >= Low, etc.
|
|
|
|
# Actions si validation échoue
|
|
on_validation_failure:
|
|
action: "skip" # skip, interpolate, use_cache
|
|
notify: true
|
|
|
|
# ============================================================================
|
|
# NOTES
|
|
# ============================================================================
|
|
# 1. Obtenir clés API gratuites avant utilisation
|
|
# 2. Respecter rate limits pour éviter bans
|
|
# 3. Activer cache pour réduire appels API
|
|
# 4. Tester failover régulièrement
|
|
# 5. Monitor consommation API quotidienne
|