Aller au contenu principal

Parcours Quant & Algo-Trader

Ce parcours vous mène d'une instance vide à un backtest : prix quotidiens stockés par cotation dans TimescaleDB, indicateurs calculés par l'API, et un bundle Zipline qui lit votre base de données.

ÉtapeCe que vous utilisez
PrixPOST /historical/ingest, scripts/ingest_all.py, GET /eod
IndicateursGET /technical/{ticker} et /multi, 18 indicateurs (pandas-ta)
ScreeningGET /technical/screen
Backtestingzipline_bundle (zipline-reloaded) ou pandas

1. Démarrer une instance​

git clone https://github.com/fonrex/fonrex.git && cd fonrex
cp .env.example .env
export FONREX_API_KEY="frx_live_$(openssl rand -hex 24)"
sed -i.bak "s/^FONREX_API_KEY=.*/FONREX_API_KEY=$FONREX_API_KEY/" .env && rm .env.bak
mkdir -p logs && docker compose up -d
AUTH="X-API-KEY: $FONREX_API_KEY"

2. Importer des instruments et ingérer les prix​

docker compose exec fonrex-api python import_assets.py --file data/stocks.csv
curl -s -X POST -H "$AUTH" "http://localhost:5000/historical/ingest?ticker=AIR.PA"

L'ingestion récupère dix ans de barres quotidiennes depuis Yahoo Finance avec le symbole vérifié de la cotation (TradingView en solution de repli), datées par séance : les prix négociés ajustés des splits, et un adj_close ajusté aussi des dividendes, gardés sur une seule base d'ajustement quand un split ou un dividende survient. Pour tout le catalogue : docker compose exec fonrex-api python scripts/ingest_all.py. Détails : Ingérer des données historiques.

3. Calculer des indicateurs​

curl -s -H "$AUTH" "http://localhost:5000/technical/AIR.PA?indicator=rsi&period=14"
curl -s -H "$AUTH" "http://localhost:5000/technical/AIR.PA/multi?indicators=sma_50,sma_200,macd,bbands_20"
curl -s -H "$AUTH" "http://localhost:5000/technical/screen?indicator=rsi&operator=lt&value=30"

Les indicateurs sont calculés sur les prix stockés avec pandas-ta et mis en cache dans Redis. Voir la référence des indicateurs techniques.

4. Backtester​

Avec Zipline, enregistrez le bundle et ingérez-le depuis votre base de données :

pip install zipline-reloaded
export DATABASE_URL="postgresql://fonrex:<POSTGRES_PASSWORD>@localhost:5432/fonrex"
python -m zipline_bundle ingest --start 2020-01-01 --end 2025-12-31 --tickers AIR.PA,BNP.PA --calendar XPAR

Ou chargez les prix dans pandas via GET /eod/{ticker} — voir Python & Jupyter, avec un exemple de notebook. Voir Backtesting avec Zipline.

Étapes suivantes​