Filters

[filters] définit des conditions utilisées pour écarter des résultats de backtest non satisfaisants ou pour arrêter prématurément un backtest si sa performance passe sous certains seuils.

Certains filtres (ex: min_required_positions) ne sont évalués qu’en fin de backtest. D’autres (ex: max_allowed_drawdown) peuvent déclencher un arrêt immédiat pendant l’exécution. Cette capacité d’arrêt anticipé permet souvent de réduire fortement le temps de calcul global (les runs trop mauvais sont coupés tôt).

Une stratégie ne peut déclarer qu’un seul bloc [filters].

Exemple

[filters]
# Rejette les résultats qui ont moins de 10 positions clôturées.
min_required_positions = 10

# Rejette les résultats dont le ROI final est inférieur à 20%.
min_roi_pct = 20

# Rejette les résultats dont le taux de réussite est inférieur à 50%.
min_win_rate = 50

# Rejette les résultats dont le ratio de Sharpe est inférieur à 1.0.
min_sharpe_ratio = 1.0

# Rejette les résultats dont le ratio de Sortino est inférieur à 1.0.
min_sortino_ratio = 1.0

# Rejette les résultats dont le ratio de Calmar est inférieur à 1.0.
# Ce filtre est évalué uniquement en fin de backtest.
min_calmar_ratio = 1.0

# Arrête et rejette si le drawdown dépasse 40%.
max_allowed_drawdown = 40

# Arrête et rejette si le capital courant passe sous 70% du capital initial.
max_initial_capital_loss = 30

# Arrête et rejette si trop de Margin Calls se produisent.
#  Absent ou < 0 : désactivé
#  0 : interdit tout Margin Call (équivaut à "forbid")
#  > 0 : borne le nombre total
max_margin_calls = 0

Paramètres du bloc

ParamètreDescription
min_required_positions
 Entier
Nombre minimal de positions clôturées exigé pour juger un résultat exploitable.
Valeur par défaut : 1
min_roi_pct
 Décimal
ROI minimal exigé (en pourcentage du capital initial). Le résultat est gardé si le capital final ≥ (1 + valeur/100) × capital initial. Ex : 20 exige ≥ 1,2 × initial.
Valeur par défaut : 0 (désactivé)
min_win_rate
 Décimal
Taux de réussite minimal (positions gagnantes / total). Les résultats en‑dessous sont rejetés.
Valeur par défaut : 0
min_sharpe_ratio
 Décimal
Ratio de Sharpe annualisé minimal. Si > 0, les backtests avec un ratio en‑dessous (ou NaN) sont rejetés.
Valeur par défaut : 0 (désactivé)
min_sortino_ratio
 Décimal
Ratio de Sortino annualisé minimal. Si > 0, les backtests avec un ratio en‑dessous (ou NaN) sont rejetés.
Valeur par défaut : 0 (désactivé)
min_calmar_ratio
 Décimal
Ratio de Calmar minimal. Si > 0, les backtests avec un ratio en‑dessous (ou NaN) sont rejetés. Il s’agit d’un filtre final uniquement, qui ne peut pas arrêter un backtest en cours d’exécution.
Valeur par défaut : 0 (désactivé)
max_allowed_drawdown
 Décimal
Drawdown maximal toléré (en %). Si ce seuil est défini et dépassé pendant l’exécution, le backtest s’arrête immédiatement et est rejeté.
Valeur par défaut : non limité
max_initial_capital_loss
 Décimal
Perte maximale autorisée par rapport au capital initial (en %). Si le capital passe en‑dessous, le backtest s’arrête. Avec la valeur par défaut 80, l’arrêt n’intervient qu’après −80%.
Valeur par défaut : 80
max_margin_calls
 Entier
Nombre maximal de Margin Calls autorisés sur tout le backtest (Long + Short). Si 0, le backtest est rejeté dès le premier Margin Call (mode “forbid”). Si positif N, le backtest s’arrête et est rejeté dès que le total dépasse N. Si absent ou négatif, le filtre est désactivé.