Tu poses très bien le problème, et je crois que la clé est de retourner la question. L’erreur de fond n’est pas dans “quelle configuration choisir”, mais dans la question elle-même. Si le résultat de ton système change beaucoup selon la config que tu prends, le problème n’est pas le choix : c’est que le système n’est pas robuste. La bonne question n’est pas “quel pic je prends ?”, mais “est-ce que mon système dépend de tomber juste sur le pic ?”. S’il en dépend, ce n’est pas un système, c’est un hasard bien optimisé.
À partir de là, voici comment je l’aborde :
1. Un plateau, pas un pic. Le maximum absolu de l’optimisation est presque toujours le pire pour trader en réel, parce que c’est celui qui colle le mieux au bruit du passé. Je ne regarde pas la liste triée par gain pour prendre la première ligne. Je regarde toute la surface et je cherche des zones larges et stables. Si la période 14 donne +50 % mais que 13 et 15 donnent -10 %, ce 14 ne vaut rien. Je préfère le centre d’un plateau large, même si son sommet est plus bas.
2. Moins de variables. Chaque paramètre que tu optimises est un degré de liberté pour ajuster la courbe au passé. Avec 2 ou 3, tu peux croire au résultat. Avec 8, tu dessines la courbe à la main. Plus il y a de variables, plus le backtest est joli et moins il est fiable.
3. Ta propre phrase est la réponse : “c’est ce pic que va fournir le backtest”. Exactement. C’est pourquoi ce chiffre est le plafond théorique que tu ne verras pas, et non ce que tu espères gagner. Je conçois en partant du principe que le réel sera nettement moins bon. Si le système ne tient que dans son meilleur cas, il est déjà mort.
4. Le walk-forward, mais en le lisant bien. Il ne suffit pas de le lancer. Je regarde deux choses : quelle fraction de l’in-sample survit hors échantillon, et si les paramètres optimaux restent stables d’une fenêtre à l’autre. Si à chaque réoptimisation les paramètres font des bonds, le système court après le bruit, aussi bon soit le résultat global.
5. La robustesse croisée. Une vraie inefficience devrait fonctionner, sans réoptimiser, sur des instruments corrélés ou sur des unités de temps voisines. Si ça ne marche que sur un seul actif, une seule UT et un jeu de valeurs précis, c’est du surajustement.
Et la partie qui dérange : aucun outil n’élimine le problème, parce qu’optimiser, c’est regarder le passé par définition. Tu ne peux que réduire le surajustement. La vraie robustesse ne naît pas d’une meilleure optimisation, mais du fait que le système ait une raison structurelle de fonctionner. L’optimisation affine l’avantage, elle ne le crée jamais. Quand tu hésites entre plusieurs configs, cette hésitation te dit que tu dépends trop de l’optimisation.
Au final, je le résume ainsi : le but d’optimiser n’est pas de trouver les meilleurs paramètres. C’est de vérifier que ton système n’a PAS besoin de trouver les meilleurs paramètres.
Je vois que je m’étale pas mal… il me reste des choses à dire, mais je crois que pour aujourd’hui ça suffit 😛 Sacré pavé que je viens de te pondre 🙂