Aller au contenu principal

Configuration système

Fonrex lit ses paramètres dans des variables d'environnement. Copiez .env.example vers .env et modifiez-le : Docker Compose charge .env dans le conteneur de l'API, et make run le charge pour une exécution locale.

Gardez un seul KEY=value par ligne et placez les commentaires sur leur propre ligne : un commentaire écrit après une valeur vide est lu comme la valeur.

Authentification​

VariableDéfautDescription
FONREX_API_KEY(vide)Clé à accès complet. Générez-en une avec echo "frx_live_$(openssl rand -hex 24)"
FONREX_API_KEYS(vide)Clés à accès complet supplémentaires, séparées par des virgules
FONREX_READ_ONLY_API_KEYS(vide)Clés en lecture seule, séparées par des virgules : elles lisent les données mais ne peuvent ni vider le cache, ni nettoyer la base de données, ni déclencher une ingestion, ni modifier les abonnements
FONREX_AUTH_REQUIREDtruefalse ouvre toutes les routes, uniquement quand aucune clé n'est configurée. Ne l'utilisez que pour une instance inaccessible depuis tout réseau

Les clients envoient une clé sous la forme Authorization: Bearer <key> ou X-API-KEY: <key>. Voir Premier appel d'API.

Base de données et cache​

VariableDéfautDescription
DATABASE_URLpostgresql://fonrex:fonrex_password@localhost:5432/fonrexAdresse pour une exécution locale. Avec Docker Compose, elle est remplacée par l'adresse du service db, construite à partir de POSTGRES_PASSWORD
ASYNC_DATABASE_URL(vide)Adresse asyncpg ; déduite de DATABASE_URL si elle est vide (Docker Compose la vide)
POSTGRES_DB / POSTGRES_USERfonrexConservées pour les outils locaux ; docker-compose.yml utilise des valeurs fixes (utilisateur fonrex, base fonrex créée par postgres-init.sh)
POSTGRES_PASSWORDfonrex_passwordChangez-le avant le premier démarrage (lettres, chiffres, -, _)
REDIS_URLredis://localhost:6379/0Remplacée par l'adresse du service redis avec Docker Compose
CACHE_TTL300Durée de vie Redis par défaut, en secondes (chaque catégorie mise en cache a sa propre durée de vie, listée par GET /cache/stats)
WEB_CONCURRENCY1Workers Gunicorn (Docker Compose). Gardez 1 : le worker temps réel et le canary quotidien vivent dans le processus de l'API

Ingestion historique​

VariableDéfautDescription
INGEST_CONCURRENCY5Ingestions parallèles d'une ingestion en masse dont l'appelant ne fournit pas de concurrency
INGEST_YF_DELAY0.5Pause en secondes avant de se rabattre sur TradingView
INGEST_TV_DELAY2.0Lue mais non utilisée par le code actuel
INGEST_BATCH_SIZE1000Lignes par upsert en base de données

Streaming temps réel​

VariableDéfautDescription
TV_MAX_CONNECTIONS10Connexions WebSocket TradingView simultanées
TV_RECONNECT_DELAY5Premier délai de reconnexion en secondes, doublé jusqu'à 60
REALTIME_QUOTE_TTL60Durée de vie d'un instantané de cours dans Redis, en secondes

Indicateurs techniques​

VariableDéfautDescription
TECHNICAL_CACHE_ENABLEDtrueMet en cache les résultats des indicateurs dans Redis
TECHNICAL_DEFAULT_LIMIT500Barres chargées quand une requête ne donne pas de limite (10 à 5000)
TECHNICAL_MAX_BATCH_TICKERS20Tickers acceptés par POST /technical/batch
TECHNICAL_MAX_BATCH_INDICATORS10Indicateurs acceptés par POST /technical/batch

Actualités​

VariableDéfautDescription
NEWS_CACHE_TTL1800Durée de vie d'une réponse d'actualités dans Redis, en secondes
NEWS_DEFAULT_LIMIT20Articles renvoyés pour un ticker quand la requête ne donne pas de limite
NEWS_MAX_LIMIT100Limite la plus élevée qu'une requête peut demander
NEWS_DEDUP_SIMILARITY0.85Similarité de titre au-delà de laquelle deux articles n'en font qu'un

Valorisation (DCF) et taux macroéconomiques​

VariableDéfautDescription
DCF_CACHE_TTL21600Durée de vie d'une réponse DCF dans Redis (6 h)
DCF_DEFAULT_PROJECTION_YEARS5Années de projection (3 à 10)
DCF_RISK_FREE_RATE0.04Taux sans risque utilisé quand FRED n'en fournit pas
DCF_EQUITY_RISK_PREMIUM0.055Prime de risque actions, sous forme de ratio
DCF_TERMINAL_GROWTH_RATE0.025Taux de croissance terminal, sous forme de ratio
FRED_API_KEY(vide)Clé gratuite de fred.stlouisfed.org ; sans elle, le taux stocké ou DCF_RISK_FREE_RATE est utilisé
MACRO_RATES_CACHE_TTL21600Durée de vie des taux macroéconomiques dans Redis (6 h)

Surveillance des fournisseurs​

VariableDéfautDescription
VALIDATION_OUTLIER_THRESHOLD0.50Écart à la médiane au-delà duquel une valeur est aberrante
VALIDATION_MIN_PROVIDERS2Fournisseurs nécessaires pour une vérification par consensus
CANARY_RUN_HOUR6Heure UTC de l'exécution quotidienne du canary
CANARY_PROVIDER_SEMAPHORE3Fournisseurs vérifiés en parallèle par le canary
CANARY_PRICE_RANGE_TTL_SECONDS21600Validité d'une plage de prix dynamique (6 h)
CANARY_PRICE_RANGE_NEGATIVE_TTL_SECONDS300Délai avant nouvel essai quand une plage n'a pas pu être calculée
ALERT_CANARY_CRITICAL3Échecs du canary qui déclenchent une alerte critique
ALERT_SUCCESS_RATE_CRITICAL0.70Taux de succès en dessous duquel une alerte est critique
ALERT_SUCCESS_RATE_WARNING0.85Taux de succès en dessous duquel une alerte est un avertissement

Fournisseurs et requêtes sortantes​

VariableDéfautDescription
SEC_EDGAR_EMAILcontact@fonrex.ioAdresse de contact envoyée à SEC EDGAR (exigée par la politique de la SEC) : mettez la vôtre
OPENFIGI_API_KEY(vide)Clé OpenFIGI facultative (limite de débit plus élevée)
BARRONS_TOKEN, MARKETWATCH_TOKEN, WSJ_TOKEN(vide)Jetons facultatifs de ces sites web
FONREX_PROVIDER_MAX_CONCURRENCY4Requêtes qu'un fournisseur peut exécuter en même temps (1 à 64)
FONREX_PROXY_URL(vide)Proxy HTTP sortant facultatif pour les sites web scrapés (pas pour yfinance ni TradingView)
FONREX_PROXY_PROVIDERS(vide)Fournisseurs qui utilisent le proxy, séparés par des virgules ; vide signifie tous
LOGO_TOKEN(vide)Jeton pour le téléchargement des logos depuis img.logo.dev

Journal d'utilisation et démarrage​

VariableDéfautDescription
USAGE_LOG_IPnonePart de l'IP de l'appelant conservée dans usage_logs : none, truncated (réseau uniquement) ou full
USAGE_LOG_RETENTION_DAYS90Jours de journal d'utilisation conservés ; 0 conserve tout
SEED_ON_FIRST_RUNfalseImporte data/etf.csv au premier démarrage quand la base de données est vide
OPENBB_ALLOWED_ORIGINhttps://pro.openbb.coOrigines autorisées par CORS, séparées par des virgules