Introduction
FreqAI est un module intégré à Freqtrade qui vous permet d’enrichir vos stratégies de trading automatique avec des modèles de machine learning. Plutôt que de coder manuellement vos signaux, vous définissez vos features (variables techniques) et vos targets (labels), puis FreqAI s’occupe de l’entraînement, de la prédiction et de la gestion des outliers en temps réel. Vous pouvez choisir parmi plusieurs algorithmes (CatBoost, LightGBM, XGBoost) ou créer le vôtre via l’interface IFreqaiModel :contentReference[oaicite:0]{index=0}.
1. Intégrer FreqAI à votre stratégie
Dans votre classe héritant de IStrategy, il suffit de :
startup_candle_count: int = 20
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# Démarre FreqAI : crée les features & targets, entraîne/prédit
dataframe = self.freqai.start(dataframe, metadata, self)
return dataframe
Le paramètre startup_candle_count doit couvrir le plus grand pas de temps utilisé dans vos indicateurs :contentReference[oaicite:1]{index=1}.
2. Création automatique des features
FreqAI détecte vos fonctions préfixées feature_engineering_* et les appelle pour produire toutes les variantes de vos indicateurs (périodes, timeframes, décalages, paires de corrélation) :
def feature_engineering_expand_all(self, dataframe, period, **kwargs):
# Ex. : EMA, RSI, MFI…
dataframe["%-ema-period"] = ta.EMA(dataframe, timeperiod=period)
dataframe["%-rsi-period"] = ta.RSI(dataframe, timeperiod=period)
return dataframe
Un autre hook, feature_engineering_standard(), permet d’ajouter des features globales (ex. : jour de la semaine) qui ne seront pas multipliées :contentReference[oaicite:2]{index=2}.
3. Définition des targets
Dans set_freqai_targets(), vous créez vos labels préfixés & :
def set_freqai_targets(self, dataframe, **kwargs):
# Exemple : variation moyenne du prix sur N bougies
dataframe["&-s_close"] = (
dataframe["close"]
.shift(-self.freqai_info["feature_parameters"]["label_period_candles"])
.rolling(self.freqai_info["feature_parameters"]["label_period_candles"])
.mean() / dataframe["close"]
- 1
)
return dataframe
Les targets peuvent être continues (regression) ou discrètes (classification), selon le modèle choisi :contentReference[oaicite:3]{index=3}.
4. Confiance et outliers
FreqAI ajoute plusieurs colonnes pour évaluer la fiabilité de chaque prédiction :
do_predict: indicateur [-2…2] sur la confiance (DI, SVM, DBSCAN)df['&*_mean'] / df['&*_std']: moyenne et écart‑type historique du target
Vous pouvez filtrer ou ajuster dynamiquement vos seuils (z‑score) pour l’entrée/sortie :contentReference[oaicite:4]{index=4}.
5. Choix des modèles de prédiction
FreqAI embarque plusieurs algorithmes GBDT prêts à l’emploi, sélectionnables via --freqaimodel :
- CatBoost (régression & classification)
- LightGBM (régression & classification)
- XGBoost (régression & classification)
Vous pouvez également implémenter votre propre modèle en héritant de IFreqaiModel et en plaçant votre classe dans user_data/freqaimodels :contentReference[oaicite:5]{index=5}.
6. Configuration et paramètres
Dans votre fichier de configuration (config.json), la section freqai gère notamment :
label_period_candles: horizon de prédictionindicator_periods_candles: liste des périodes à testerinclude_timeframes,include_shifted_candles,include_corr_pairs: paramètres d’expansionfit_live_predictions_candles: historique des prédictions pour statistique dynamique
Assurez‑vous que startup_candle_count couvre au moins deux fois la plus grande période utilisée pour éviter les NaNs au démarrage :contentReference[oaicite:6]{index=6}.








