Documentation

Applications

Dernière mise à jour le 26. 2. 2019 par Kornel Mazur

Vérifications croisées - tests automatisés de robustesse de la stratégie

Le plus grand danger des stratégies générées à l'aide d'un processus d'apprentissage automatique est le surajustement (ou l'ajustement de la courbe) de la stratégie aux données historiques sur lesquelles elle a été construite.

Pendant ou après l'élaboration d'une nouvelle stratégie, vous devez vous assurer que votre stratégie est solide, ce qui devrait augmenter la probabilité qu'elle fonctionne également à l'avenir.

 

Qu'est-ce que la robustesse ?

Il s'agit simplement de la propriété de la stratégie d'être capable de faire face à des conditions changeantes :

  • Tout d'abord, la stratégie doit fonctionner sur des données inconnues (si les caractéristiques du marché n'ont pas changé) avec ou sans ré-optimisation périodique des paramètres.
  • Il ne devrait pas se désagréger si certaines transactions sont manquées.
  • Une stratégie robuste ne doit pas être trop sensible aux paramètres d'entrée - elle doit fonctionner même si vous modifiez légèrement les valeurs des paramètres d'entrée, comme la période de l'indicateur ou une autre constante, ou si les données historiques sont légèrement modifiées - le spread ou le slippage est augmenté, et ainsi de suite.

le test de robustesse le plus élémentaire consiste à tester la stratégie sur des données inconnues (hors échantillon).

Si vous exécutez l'évolution génétique, la stratégie n'évolue que sur la partie In Sample des données. La partie hors échantillon est "inconnue" de la stratégie, et peut donc être utilisée pour déterminer si la stratégie fonctionne également sur une partie inconnue des données.

 

Éviter les stratégies surajustées (ajustées à la courbe)

La partie bleue de chaque graphique représente les données hors échantillon (inconnues). Nous pouvons voir que la stratégie de gauche est également performante sur cette partie, tandis que la stratégie de droite échoue sur les données inconnues - il est presque certain qu'elles s'ajustent à la courbe.

 

Contrôles croisés automatiques pour la robustesse du SQ X

Les contrôles croisés sont des méthodes supplémentaires facultatives qui peuvent être appliquées à chaque stratégie une fois qu'elle a été générée et qu'elle a passé les premiers filtres.

Consultez cet article pour savoir comment Utiliser les contrôles croisés dans Builder et Retester

Les contrôles croisés permettent de vérifier la robustesse de la stratégie d'un plus grand nombre de points de vue - en la négociant sur d'autres marchés, ou en utilisant des méthodes de Monte Carlo pour simuler des centaines de courbes d'actions différentes, ou même en utilisant l'optimisation Walk-Forward ou Matrix.

L'important est que vous puissiez utiliser des filtres de vérification croisée pour rejeter la stratégie si elle ne passe pas le test de vérification croisée. Cela vous permet de créer des entonnoirs, où la stratégie est examinée par des méthodes de plus en plus avancées (et de plus en plus longues), et où la stratégie qui échoue est automatiquement abandonnée.

Entonnoir de tests de robustesse automatisés dans StrategyQuant X

Un exemple d'entonnoir de filtrage utilisant des contrôles croisés pendant la construction

C'est à vous de décider du nombre de contrôles croisés que vous utiliserez et de la manière dont vous configurerez leurs filtres.

Les contrôles croisés sont divisés en trois groupes - de base, standard, extensif - en fonction du temps qu'ils prennent.

Ils sont également appliqués des plus simples aux plus compliqués. Ainsi, si une stratégie ne passe pas le contrôle croisé 1, elle est rejetée et n'est pas testée par le contrôle croisé 2.

 

Notez que l'exécution d'un contrôle croisé sur une stratégie peut prendre beaucoup de temps !
Certaines méthodes de vérification croisée effectuent des simulations complexes et des centaines, voire des milliers de backtests de la stratégie avec différents paramètres, ce qui prend des milliers de fois plus de temps que la génération initiale de la stratégie et le backtest initial. Ainsi, une stratégie sans aucune vérification croisée peut être générée (par exemple) en 0,2 seconde, mais avec certaines vérifications croisées appliquées, cela peut facilement prendre de 10 à 200 secondes pour une stratégie !

 

Les contrôles croisés peuvent également être utilisés dans Retester (sans filtrage), de sorte qu'il n'est pas nécessaire d'utiliser tous les contrôles croisés en mode construction.

Utilisation possible des contrôles croisés

Une application possible du contrôle croisé pourrait être d'utiliser :

  • Vérification croisée Retester avec une plus grande précision
  • Vérification croisée Manipulation des opérations de Monte Carlo
  • Vérification croisée Nouveau test sur d'autres marchés
  • Contrôle croisé facultatif Méthodes de retest de Monte Carlo

StrategyQuant effectuera ensuite les étapes suivantes pour chaque stratégie générée :

  1. La stratégie est générée aléatoirement et testée avec la précision la plus rapide du "délai sélectionné" - cela dépend de vos paramètres, mais c'est la valeur par défaut.
  2.  La stratégie est automatiquement filtrée et rejetée si elle ne passe pas vos filtres globaux, par exemple, si elle n'a pas assez de transactions ou si le bénéfice net est inférieur à $1000.
  3. Vérification croisée Retester avec une plus grande précision retestera cette stratégie avec une précision à la minute ou même au tic-tac réel - pour s'assurer que la stratégie a été testée de manière fiable en utilisant la précision de base. Notez que seules les stratégies qui passent le point 2. arriveront ici. Si la stratégie ne passe pas cette première vérification, elle est rejetée.
  4. Vérification croisée Manipulation des opérations de Monte Carlo effectuera un certain nombre de simulations de différentes courbes d'équité en manipulant les transactions existantes - pour s'assurer que la courbe d'équité originale n'a pas été obtenue par hasard. Vous filtrerez les stratégies qui ne passent pas ce test de Monte Carlo.
  5. Vérification croisée Nouveau test sur d'autres marchés testera la stratégie sur d'autres marchés ou d'autres échéances. Si elle n'est pas rentable sur d'autres marchés, elle est éliminée.
  6. Contrôle croisé facultatif Méthodes de retest de Monte Carlo La fonction Monte Carlo exécute un certain nombre de simulations où chaque simulation est un nouveau backtest de la stratégie en utilisant de petites variations dans les paramètres de l'indicateur de la stratégie, les options de trading telles que le spread, le slippage, ou dans les données de l'historique.
    Si la stratégie passe également ces contrôles croisés, elle est enregistrée dans la banque de données et vous pouvez avoir la certitude qu'elle est suffisamment solide.

 

Vous trouverez une description plus détaillée des contrôles croisés dans la section Contrôles croisés - tests de robustesse section.

Cet article a-t-il été utile ? L'article était utile L'article n'était pas utile

S'abonner
Notification pour
2 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
James Colton
17. 1. 2023 10:38 pm

J'ai effectué un test avec les paramètres par défaut et j'ai obtenu des résultats positifs toutes les minutes environ. Constatant ensuite que de nombreux résultats étaient nettement supérieurs aux critères d'acceptation minimaux, j'ai relancé le test avec des normes minimales modérément plus élevées, ce qui aurait dû permettre de capturer peut-être 10% autant de stratégies que celles générées par les paramètres de test précédents. Au bout de six heures, pas un seul résultat n'a passé l'examen initial. Le constructeur a-t-il besoin d'exemples réussis pour savoir où chercher ? En d'autres termes, dois-je m'attendre à de meilleurs résultats si je fixe initialement mes normes à un niveau inférieur à celui que j'envisagerais de négocier ?

tomas262
Administrateur
Répondre à  James Colton
19. 1. 2023 7:22 pm

Vous pouvez nous envoyer le flux de travail pour analyse, nous vérifierons les fichiers de configuration de CFX qui pourraient être mal paramétrés.