Skip to content

fix(backtest): mesurer QDVF.DE (l'ETF énergie tradé) et les sorties swing ; QDVR.DE n'est pas énergie - #109

Open
laurentvv wants to merge 1 commit into
mainfrom
fix/backtest-qdvf-energy
Open

laurentvv wants to merge 1 commit into
mainfrom
fix/backtest-qdvf-energy

Conversation

@laurentvv

Copy link
Copy Markdown
Owner

Constat

  1. QDVR.DE n'est pas un ETF énergie. Les rapports du 2026-10-03 et du 2026-10-10 le présentent comme « iShares S&P 500 Energy Sector ». C'est l'iShares MSCI USA SRI (métadonnées Yahoo). Corrélations des rendements quotidiens (3 dernières années) : 0,87 avec SXRV.DE, −0,09 avec CL=F, 0,29 avec QDVF.DE. QDVF.DE, lui, est corrélé à 0,98 avec XDW0.DE (MSCI World Energy).
  2. L'instrument énergie tradé depuis le pivot, QDVF.DE, n'avait jamais été backtesté.
  3. Le « +15,4 % de CAGR sur 11 ans » de QDVF.DE (README, README_fr, AGENTS.md) est faux. Sur l'historique Yahoo complet (2015-12 → 2026-10, 2 738 séances) : +10,1 %/an, avec un drawdown maximal de −65,8 % (2020).
  4. Les chiffres du mode STRATEGY_MODE=swing notés dans memory-bank (non commités) n'étaient produits par aucun code du dépôt. Les sorties swing sont maintenant une ligne du banc.

Changements

  • src/backtest/ : QDVF.DE remplace QDVR.DE (données, rapport, tableau de qualité des séries). apply_current_exit_rules accepte take_profit=None et time_stop_days=None. Deux lignes ajoutées : « Sorties swing, entrée toujours haussière » et « Tendance MA200 (hystérésis 2 %) + sorties swing » (pas de TP, pas de time-stop, trailing −10 %, hard-stop −10 % conservé).
  • docs/BACKTEST_BASELINES_2026-10-12.md : rapport régénéré (10 stratégies au lieu de 8 : le Sharpe déflaté en tient compte).
  • README, README_fr, AGENTS.md : chiffres de QDVF.DE corrigés. Erratum en tête de BACKTEST_CANDIDATS_ENERGIE_2026-10-03.md.

Ce que dit le banc (fenêtre 2022-07 → 2026-10, 25 pb par côté)

B&H Sorties actuelles (legacy) Sorties swing MA200 hyst. + swing
SXRV.DE CAGR / Sharpe / DD max 22,1 % / 1,14 / −26,7 % 8,8 % / 0,54 / −31,5 % 19,6 % / 1,01 / −30,9 % 16,2 % / 1,07 / −15,8 %
SXRV.DE après impôt 30 % 16,8 % 4,3 % 12,7 % 10,6 %
QDVF.DE CAGR / Sharpe / DD max 15,1 % / 0,69 / −27,1 % 0,3 % / 0,13 / −43,1 % 15,6 % / 0,72 / −24,7 % 3,0 % / 0,25 / −45,5 %
QDVF.DE après impôt 30 % 11,2 % −1,6 % 10,0 % −0,7 %

Lecture :

  • Les sorties swing réparent le churn des sorties actuelles (6 à 8 ventes au lieu de 84-85), mais ne battent pas le buy & hold. Sur SXRV.DE : ΔSharpe −0,12 [−0,31 ; +0,07]. Sur QDVF.DE : +0,02 [−0,09 ; +0,14], soit aucune différence.
  • Un filtre de tendance MA200 détruit la valeur sur QDVF.DE (énergie : tendances courtes, retournements fréquents), avec ou sans sorties swing.
  • Le « CAGR 19,5 %, Sharpe 1,28, bat le B&H » noté pour SXRV ne se retrouve pas : la combinaison la plus proche (MA200 hystérésis + swing) fait 16,2 % et un Sharpe de 1,07, sous le B&H.

Ce sont des règles sans les modèles : elles mesurent ce que coûtent ou rapportent les sorties, pas l'edge de l'ensemble (phase 1, tranche B du plan).

Tests

  • tests/test_backtest.py : +3 (swing tient une tendance et un marché plat ; trailing swing à −10 % ; le rapport couvre QDVF.DE et plus QDVR.DE).
  • Suite complète : 435 passed, 3 skipped. Ruff : aucun nouvel avertissement.

🤖 Generated with Claude Code

…wing ; QDVR.DE n'est pas énergie

Le banc présentait QDVR.DE comme « iShares S&P 500 Energy Sector ». C'est l'iShares MSCI USA SRI
(métadonnées Yahoo ; corrélation des rendements quotidiens 0,87 avec SXRV.DE, -0,09 avec CL=F).
L'instrument énergie réellement tradé depuis le 2026-10-03, QDVF.DE, n'avait jamais été mesuré.

- src/backtest : QDVF.DE remplace QDVR.DE (données, rapport, qualité des séries) ;
  apply_current_exit_rules accepte take_profit=None / time_stop_days=None ; deux lignes
  « sorties swing » (pas de TP, pas de time-stop, trailing -10 %) : entrée toujours haussière,
  et MA200 avec hystérésis.
- docs/BACKTEST_BASELINES_2026-10-12.md : rapport régénéré.
- README, README_fr, AGENTS.md : le « +15,4 % sur 11 ans » de QDVF.DE est faux ; historique
  Yahoo complet : +10,1 %/an, drawdown max -65,8 % (2020). Erratum dans le rapport du 2026-10-03.

Tests : 3 nouveaux dans tests/test_backtest.py ; suite complète 435 passed, 3 skipped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kilo-code-bot

kilo-code-bot Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (9 files)
  • AGENTS.md — documentation correction
  • README.md — corrected QDVF.DE B&H figures
  • i18n/README_fr.md — corrected QDVF.DE figures
  • docs/BACKTEST_BASELINES_2026-10-12.md — regenerated backtest report
  • docs/BACKTEST_CANDIDATS_ENERGIE_2026-10-03.md — erratum notice
  • src/backtest/data.py — QDVR.DE ticker/file rename to QDVF.DE
  • src/backtest/report.py — QDVF.DE in ASSETS, added swing strategies
  • src/backtest/strategies.py — take_profit/time_stop_days made Optional with None guards
  • tests/test_backtest.py — 3 new tests for swing exit behavior

Reviewed by free · Input: 88.2K · Output: 25.5K · Cached: 605.4K

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant