Régression bayésienne - Est-ce que quelqu'un a fait un EA en utilisant cet algorithme ? - page 26

 
СанСаныч Фоменко:

Oui, je l'ai fait... Je ne me souviens pas...

Si nous parlons du testeur, c'est là le problème, à mon avis.

Nous prenons un échantillon et utilisons le testeur pour calculer, par exemple, le facteur de profit. Ensuite, nous prenons un autre échantillon et obtenons une nouvelle valeur du facteur de profit. Au total, nous obtenons deux chiffres. Deux chiffres permettent-ils de tirer des conclusions statistiques ? Ces chiffres ne veulent rien dire du tout.

Elle doit être résolue et l'est différemment.

Un échantillon est prélevé. Un sous-ensemble est choisi au hasard dans cet échantillon et est compté comme un facteur de profit sur celui-ci. Ensuite, on prélève à nouveau un échantillon aléatoire et ainsi de suite, par exemple 1000 fois. Vous obtiendrez 1000 facteurs de profit. Cet ensemble peut déjà servir de base à des conclusions statistiques.

D'ailleurs, cette méthode n'exclut pas l'utilisation d'un testeur, d'une démo...

SS, bonne journée !

Un échantillon de quoi ? Des accords ?

Je vois où vous voulez en venir - estimer les quantiles des statistiques de l'échantillon par type de bootstrap.

Mais la question reste posée : si le TS est ajusté sur l'ensemble de l'échantillon disponible, alors cette méthode montrera ce que nous savons déjà, à savoir que le facteur de profit est oh combien bon.

Je vais aborder la question de manière un peu différente dans mon blog. Tout d'abord, la formation avec la validation croisée k-fold ; prenez 5 sous-ensembles (dans mon cas, il s'agira de données de 5 paires de devises) et vous obtiendrez une expérience intéressante : former le modèle sur 4 paires et le tester sur la 5e. Je veux répéter cette expérience 5 fois. Mais ce n'est pas tout. A l'origine, j'étais purement intéressé à montrer que le forex est prédictif. Ainsi, les m meilleurs modèles (sur le seuil de validation croisée) passeront la validation sur un grand échantillon que la machine n'a pas encore vu. Une autre propriété de l'échantillonnage de validation est qu'il regroupe des prix séparés par le temps dans le futur. Je m'attends à obtenir une matrice de 100 * 18 avec les résultats de validation pour les 100 premiers modèles sur 18 variables de sortie prédites (de 2 à 724 minutes dans le futur), par exemple par le critère R^2. Cela montrera immédiatement si mes "boîtes" prédisent mieux que la moyenne.

Et s'il y avait un sponsor pour ma découverte personnelle, on pourrait louer un nuage Amazon et répéter l'expérience 1 000 fois, en générant à chaque fois un ensemble de formation et de validation différent. Et puis il y aurait une matrice tridimensionnelle de 1000 * 100 * 18 qui vous permettrait d'estimer l'erreur standard de la métrique R^2 pour les meilleurs modèles et pour différentes cibles. Mais c'est déjà épais.

Ce que je veux dire, c'est que nous devrions tester sur des données futures (ou sur des données passées, mais clairement séparées par le temps) et tout ira bien.

 
Alexey Burnakov:

CC, bonjour !

Une sélection de quoi ? Des transactions ?

Je vois où vous voulez en venir - estimer les quantiles des statistiques d'un échantillon par type de bootstrap.

Mais la question demeure : si le TS est ajusté sur l'ensemble de l'échantillon disponible, alors cette méthode montrera ce que nous savons déjà, à savoir que le facteur de profit est oh combien bon.

Je vais aborder la question de manière un peu différente dans mon blog. Tout d'abord, la formation avec la validation croisée k-fold ; prenez 5 sous-ensembles (dans mon cas, il s'agira de données de 5 paires de devises) et vous obtiendrez une expérience intéressante : former le modèle sur 4 paires et le tester sur la 5e. Je veux répéter cette expérience 5 fois. Mais ce n'est pas tout. A l'origine, j'étais purement intéressé à montrer que le forex est prédictif. Ainsi, les m meilleurs modèles (sur le seuil de validation croisée) passeront la validation sur un grand échantillon que la machine n'a pas encore vu. Une autre propriété de l'échantillonnage de validation est qu'il regroupe des prix séparés par le temps dans le futur. Je m'attends à obtenir une matrice de 100 * 18 avec les résultats de validation pour les 100 premiers modèles sur 18 variables de sortie prédites (de 2 à 724 minutes dans le futur), par exemple par le critère R^2. Cela montrera immédiatement si mes "boîtes" prédisent mieux que la moyenne.

Et s'il y avait un sponsor pour ma découverte personnelle, on pourrait louer un nuage Amazon et répéter l'expérience 1 000 fois, en générant à chaque fois un ensemble de formation et de validation différent. Et puis il y aurait une matrice tridimensionnelle de 1000 * 100 * 18 qui vous permettrait d'estimer l'erreur standard de la métrique R^2 pour les meilleurs modèles et pour différentes cibles. Mais c'est déjà épais.

Ce que je veux dire, c'est que vous devez tester sur des données futures (ou passées, mais clairement séparées par le temps) et tout ira bien.

Le mot clé de votre message est surligné en rouge.

Le surajustement (overfitting) d'un modèle est un problème méthodologique de toutes les sciences : un modèle surajusté (dans n'importe quelle branche de la connaissance) rend compte de certaines particularités sur les données d'apprentissage, puis ces particularités ne se retrouvent pas en dehors des données d'apprentissage. Ce faisant, le modèle ne parvient pas à saisir certaines caractéristiques communes à la population générale.

Je crois comprendre que ce problème n'est pas résolu par les modèles eux-mêmes, ni par aucune technique de test statistique : vous notez à juste titre que les résultats surentraînés seront justifiés. Tenter d'utiliser des techniques de "dégrossissage" de modèles dans mes mains n'a pas donné de résultats.

Pour moi, le problème du surentraînement est entièrement généré par l'ensemble des données d'entrée. Au niveau intuitif : les données brutes (prédicteurs) sont-elles liées à la variable ou non ? Le cas extrême - ne pas en avoir du tout - n'entre pas en ligne de compte. Intermédiaire : certains d'entre eux le font et d'autres non. D'après mon expérience personnelle, une situation parfaitement viable est celle où les prédicteurs qui ne sont pas pertinents pour la variable cible "font taire" les prédicteurs qui sont pertinents pour la variable cible. Si vous avez réussi à éliminer manuellement les prédicteurs bruyants les plus odieux, il arrive un moment où les algorithmes de filtrage des prédicteurs commencent à fonctionner.

Les chiffres sont les suivants. J'ai sélectionné environ 30 prédicteurs à partir de l'ensemble initial de 50-200 par mes propres méthodes. Ces 30 éléments ne génèrent pas de modèles surentraînés, c'est-à-dire que l'efficacité sur les échantillons d'entraînement, d'AOVA, de test et de validation est approximativement la même. Ensuite, à l'aide de paquets (j'utilise varSelRF, d'autres sont également possibles), je sélectionne les prédicteurs en utilisant une fenêtre glissante, environ 300-500 barres. J'obtiens un ensemble de travail de 10 à 15 prédicteurs. Au fur et à mesure que la fenêtre se déplace, la composition des prédicteurs change. L'un ou l'autre des ensembles de prédicteurs résultants n'entraîne pas non plus de surentraînement, mais augmente les performances de 5 à 10 %. Pour les tâches de classification, cela représente environ 20 % d'erreur.

 
СанСаныч Фоменко:


Pour moi, le problème du sur-apprentissage est entièrement généré par l'ensemble des données d'entrée. Sur un plan intuitif : si les données brutes (prédicteurs) sont pertinentes ou non pour la variable. Le cas extrême - ne pas en avoir du tout - n'entre pas en ligne de compte. Intermédiaire : certains d'entre eux le font et d'autres non. D'après mon expérience personnelle, une situation parfaitement viable est celle où les prédicteurs qui ne sont pas pertinents pour la variable cible "font taire" les prédicteurs qui sont pertinents pour la variable cible. Si vous avez réussi à éliminer manuellement les prédicteurs bruyants les plus odieux, il arrive un moment où les algorithmes de filtrage des prédicteurs commencent à fonctionner.

Les chiffres sont les suivants. J'ai sélectionné environ 30 prédicteurs à partir de l'ensemble initial de 50-200 par mes propres méthodes. Ces 30 éléments ne génèrent pas de modèles surentraînés, c'est-à-dire que l'efficacité sur les échantillons d'entraînement, d'AOVA, de test et de validation est approximativement la même. Ensuite, à l'aide de paquets (j'utilise varSelRF, d'autres sont également possibles), je sélectionne les prédicteurs en utilisant une fenêtre glissante, environ 300-500 barres. J'obtiens un ensemble de travail de 10 à 15 prédicteurs. Au fur et à mesure que la fenêtre se déplace, la composition des prédicteurs change. L'un ou l'autre des ensembles de prédicteurs résultants n'entraîne pas non plus de surentraînement, mais augmente les performances de 5 à 10 %. Pour les tâches de classification, cela représente environ 20 % d'erreur.

Vous pouvez traiter le bruit en sélectionnant les variables, comme vous l'avez dit. Mais ai-je raison de dire que vous dites que les données bruyantes empêchent la sélection de bonnes variables et qu'elles devraient être trouvées et éliminées à l'avance par une euristique ?

Et une autre question. Vous utilisez une sorte de forêt de décision, d'après ce que j'ai compris de cette abréviation (je n'ai pas utilisé une telle méthode moi-même).

Tout arbre de forêt de décision est un algorithme de sélection de variable avide + métrique qui vous permet de tracer une division (limite de coupure) sur la zone des valeurs de cette variable. Ainsi, sur la base des arbres "gourmands", ils devraient sélectionner les variables les plus significatives individuellement aux niveaux supérieurs des branches. Aux niveaux inférieurs de l'arbre (dès le deuxième niveau, en fait), la sélection des variables les plus importantes suivantes est déjà effectuée sur un sous-échantillon d'observations qui ont été générées par les coupures intermédiaires. Et dans ce sous-échantillon, nous recherchons également la variable la plus importante suivante (pour chaque variable, nous passons en revue tous les seuils possibles et sélectionnons le meilleur, pour lequel la mesure de la pertinence de la variable est calculée). Mais comme cela fonctionne déjà avec un sous-échantillon d'observations, il s'avère qu'en général la distribution conditionnelle entre en jeu : la var #18 est la meilleure dans le sous-échantillon #4 étant donné la variable #2 utilisée auparavant. Ainsi, l'importance des variables devient de plus en plus dépendante des variables utilisées ci-dessus à mesure que la profondeur de l'arbre augmente.

Selon l'idée des auteurs, les variables de bruit devraient être laissées de côté. MAIS ! La nature avide de l'approche conduit au fait que, par exemple, des variables rejetées au niveau 1, en conjonction avec d'autres variables possibles à un autre niveau possible 2, peuvent également donner un gain significatif dans la métrique cible, ce qui en soi est excessif. Il peut également arriver, dans le cas extrême, que deux variables indépendantes, dont chacune est un bruit en termes de la variable cible, donnent une telle distribution conjointe avec la variable cible qu'elles deviennent une interaction significative. Un modèle avide va chercher cela, mais cela arrive rarement, je veux dire cette configuration de données.

Qu'en pensez-vous ?

 
Je vous prie de répondre à une question : est-ce que l'un d'entre vous a gagné de l'argent avec le forex ? J'ai déjà dépensé 5 ans de ma vie et plus d'un million de roubles et rien n'en est sorti à ce jour.
 
Alexey Burnakov:

Vous pouvez traiter le bruit en sélectionnant des variables, comme vous l'avez dit. Mais ai-je raison de dire que vous dites que les données bruyantes nous empêchent de sélectionner les bonnes variables et que nous devons les trouver et les supprimer au préalable en utilisant une euristique ?

Exactement.

Et une autre question. Vous utilisez une sorte de forêt de décision, d'après ce que j'ai compris de cet acronyme (je n'ai pas utilisé cette méthode moi-même).

La forêt comme exemple, mais le modèle choisi du problème, lorsque les variables bruyantes "noient" les variables normales, ne résout pas le problème : la sélection des variables est un problème distinct.

 
Mikhail Gorenberg:
Répondez s'il vous plaît à une question : est-ce que l'un d'entre vous a gagné de l'argent avec le forex ? J'ai déjà dépensé 5 ans de ma vie et plus d'un million de roubles et rien n'en est sorti à ce jour.
Commencez par les signaux, apprenez à sélectionner ceux qui sont rentables...
 
Mikhail Gorenberg:
Répondez s'il vous plaît à une question : est-ce que l'un d'entre vous a gagné de l'argent avec le forex ? J'ai déjà dépensé 5 ans de ma vie et plus d'un million de roubles et rien n'en est sorti à ce jour.
Pas étonnant, vous n'êtes pas un botaniste en termes de quantiles, évaluations croisées et bootstraps.
 
Mikhail Gorenberg:
Répondez s'il vous plaît à une question : qui parmi vous gagne de l'argent sur le forex ? J'ai déjà dépensé 5 ans de ma vie et plus d'un million de roubles et rien n'en est sorti jusqu'à présent.

Je me suis retrouvé avec à peu près zéro (peut-être un peu plus). Toutes mes entreprises ont été ruinées par la cupidité.

Même si vous avez un robot de trading rentable (j'en ai un) - je veux dire vraiment rentable et constant - quand il fonctionne et que vous attendez des résultats pendant des mois, il commence à sembler qu'une croissance de 30 % ne soit pas suffisante. Et puis vient plus loin. C'est-à-dire que même avec un trading entièrement automatisé, où les risques sont calculés et où le drawdown maximum est contrôlé, psychologiquement, je ne me sens pas à l'aise.

J'ai donc décidé d'utiliser les quantiles.

PS : si je crée un bon système de trading automatisé, je le mettrai à la disposition de tous. Et je le louerai à quelqu'un qui a de l'argent.

 
СанСаныч Фоменко:

Vous pouvez traiter le bruit en sélectionnant des variables, comme vous l'avez dit. Mais ai-je raison de dire que vous dites que les données bruyantes nous empêchent de sélectionner les bonnes variables et que nous devons les trouver et les supprimer au préalable en utilisant une euristique ?

Exactement.

Et une autre question. Vous utilisez une sorte de forêt de décision, d'après ce que je comprends de cet acronyme (je n'ai pas utilisé cette méthode moi-même).

La forêt comme exemple, mais le modèle choisi du problème mentionné, lorsque les variables de bruit "font taire" les variables normales, ne résout pas le problème : la sélection des variables est un problème indépendant.

Pourquoi le bruit noie-t-il le signal ? Ce n'est pas tout à fait clair pour moi.

En effet, si le modèle lui-même intègre une régularisation des caractéristiques, toutes les données de bruit sont ignorées après comparaison de leur effet sur la variable cible. Si le modèle ne fournit pas de protection contre le sur-entraînement (par exemple, un seuil inférieur du nombre d'observations dans le nœud terminal de l'arbre n'a pas été fixé), alors tout le bruit sera utilisé. Mais ce problème est résolu même dans le cadre de la forêt aléatoire.

Peut-être pouvez-vous expliquer votre idée plus en détail ?

 
Alexey Burnakov:

Pourquoi le bruit brouille-t-il le signal ? Ce n'est pas tout à fait clair pour moi.

Vous voyez, si le modèle lui-même comprend une régularisation des caractéristiques, alors toutes les données de bruit sont ignorées après comparaison de leur effet sur la variable cible. Si le modèle ne fournit pas de protection contre le surentraînement (par exemple, un seuil inférieur du nombre d'observations dans le nœud terminal de l'arbre n'a pas été fixé), alors tout le bruit sera utilisé. Mais ce problème est résolu même dans le cadre de la forêt aléatoire.

Peut-être pourriez-vous expliquer votre idée plus en détail ?

Pourquoi le bruit brouille-t-il le signal ? Ce n'est pas très clair pour moi.

Je ne le fais pas.

J'ai un programme qui calcule une mesure du rapport entre le prédicteur et la variable cible. C'est une valeur abstraite.

Si c'est < 1, c'est du bruit.

1-2 - mieux vaut ne pas s'en mêler.

sur 3 - bien.

plus de 5 - bonne chance, mais rare.

Ainsi, s'il y a trop de prédicteurs avec un score inférieur à 2, je ne peux pas distinguer les prédicteurs utiles par d'autres moyens que les miens. Comment interpréter cela - je ne sais pas. N'oublions pas que les prédicteurs ont un impact non seulement sur la variable cible, mais aussi entre eux. Très souvent, ce n'est pas seulement la liste des prédicteurs à supprimer qui est importante, mais aussi l'ordre dans lequel ils sont supprimés.

Où je veux en venir ?

Le problème de base du trading est le problème du surentraînement (overfitting), c'est un problème à part entière qui ne dépend pas des modèles et des méthodes utilisés.