L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 2750

 
mytarmailS #:
Je m'en souviens, mais c'est une erreur d'ajustement, je veux dire, une trace d'échantillonnage...
Quelle est l'erreur de la bougie suivante, le test.

C'est l'erreur sur les 300 barres suivantes. Des prédicteurs ont été générés pour chaque barre, puis filtrés, le modèle a été entraîné et la barre suivante a été prédite.

 
Maxim Dmitrievsky #:
C'est assez logique, car souvent les modèles ne vivent pas longtemps. Mais j'aimerais trouver des options sans recyclage constant, au moins à l'intervalle d'un an ou plus, avec une dégradation lente du modèle, qui est facile à suivre
.

Je ne suis pas d'accord avec cela.

Le marché change, et les intervalles de temps de changement sont différents et indépendants les uns des autres.

J'avais l'habitude d'écrire des EA qui vivaient entre 3 et 6 mois. Je les optimisais le week-end. Puis ils mouraient, et pour un temps assez court pour drainer le dépôt. Mais pas assez de temps pour l'optimisation. En fin de compte, la situation était encore pire : après un certain temps, il s'est avéré qu'il y avait une limite à partir de laquelle il était impossible de sélectionner des paramètres.

Les périodes d'évolution du marché sont plus longues : 5 à 7 ans. Mais le résultat est le même que pour les périodes mensuelles. Le robot meurt pour toujours. Je vous enverrai un bot spécifique du marché dans un message privé - ici, vous ne pouvez pas.

Toute cette idée de "hors échantillon" est donc absurde. Un robot a toujours une durée de vie, mais nous ne savons pas combien de temps : 3 mois ou 7 ans. Lorsque le robot meurt, nous le confondons avec un autre drawdown et perdons notre dépôt.

Idéalement, il devrait être réentraîné sur la bougie suivante. Si on travaille sur les ticks, alors sur le tick suivant, sur le H1 alors sur l'arrivée de l'heure suivante.

 
Valeriy Yastremskiy #:

Je ne suis pas contre le fait de s'entraîner sur chaque barre, et peut-être même sur un coche non stationnaire par exemple. Je ne comprends pas tout à fait la structure de la formation. La logique EA est-elle une formation séparée ou fait-elle partie de la formation sur chaque barre ? C'est comme les queues de la première formation, combien de queues, ou d'étapes de formation ?

Sur chaque barre, tout est nouveau

 
Maxim Dmitrievsky #:

Il existe d'autres modèles en bois pour l'inférence causale, mais je n'ai pas encore eu le temps de m'y intéresser.

la pratique donne lieu à de nombreuses interprétations :

- l'environnement affecte le sujet (lorsque tout est corrélé dans des conditions de laboratoire, dans des conditions naturelles, d'autres dépendances non prises en compte apparaissent - la plus triviale étant le facteur humain ou l'effet de foule) - le RL est meilleur que le ML, mais il est également nécessaire de modéliser et tout ne peut pas être pris en compte....
- lorsqu'il s'agit de 2 valeurs corrélées, on ne peut que déduire ce qui dépend de quoi, et non l'inverse (résultat sur facteur ou facteur sur résultat)
- médiation, modération, interaction, dépendances interférant dans le processus (qui ne peuvent souvent même pas être retracées expérimentalement)
- en général, il est important de planifier une expérience (il est utile de pouvoir dessiner des graphiques de dépendances, exactement logiques, théoriques) afin de planifier une expérience, dont les résultats peuvent être traités par ML ou même plus simplement .......
c'est-à-dire dans quel ordre et quels facteurs fixer pour obtenir une distribution conditionnelle sur le facteur étudié, ou l'influence conjointe de 2 facteurs étudiés, pour comparer les résultats obtenus avec la distribution inconditionnelle - pour émettre une hypothèse "meilleur - pas meilleur", "influence - pas_influence", pour confirmer ou réfuter statistiquement, pour transférer à des tests dans des conditions de terrain.... et vous obtenez une nouvelle inférence causale).

et dans ML RF - je ne sais pas comment ils font, ils traitent les matrices de corrélation - (le point 2 en particulier est discutable).

de nombreuses personnes critiquent les modèles probabilistes précisément à cause du point 2 et commencent à vanter l'inférence causale, affirmant qu'ils ont pris en compte l'influence d'autres facteurs.... mais la façon dont la question ( ! un autre mot synonyme de raisonnement) est résolue algorithmiquement par l'appareil VM est inconnue (du moins pour moi) - je dirais "rien".

Pour moi, l'inférence causale est essentiellement un raisonnement, et l'étude de la médiation, de la modération, de l'interaction est un grand sujet distinct et une question de goût (c'est-à-dire l'esquisse de tel ou tel graphique construit logiquement) - également une sorte de conception (expérience).

Il suffit d'avoir une seule BP sur le marché pour pouvoir tester une hypothèse sur les dépendances... et avec une configuration raisonnable de l'expérience, un MCO ou une ANOVA suffira (mais vous n'aurez pas à distinguer les chips avec certitude).

? ? ... Je ne connais donc pas l'algorithme d'attribution d'une caractéristique à un facteur ou à un résultat (par des modèles en bois ou autres), à l'exception de la logique et des connaissances théoriques .... mais de nos jours, toutes sortes de choses sont annoncées sous d'autres termes - je ne sais pas dans quel contexte vous avez rencontré l'inférence causale.

 
JeeyCi #:

la pratique donne lieu à de nombreuses interprétations :
- l'environnement influence la personne testée (lorsque tout est corrélé dans des conditions de laboratoire, d'autres dépendances non prises en compte apparaissent dans des conditions naturelles - la plus banale étant le facteur humain ou l'effet de foule) - le RL est meilleur que le ML, mais il est également nécessaire de modéliser et tout ne peut pas être pris en compte....
- lorsqu'il s'agit de 2 valeurs corrélées, on ne peut que déduire ce qui dépend de quoi, mais pas l'inverse (résultat sur facteur ou facteur sur résultat)
- médiation, modération, interaction, dépendances interférant dans le processus (qui souvent ne peuvent même pas être tracées expérimentalement)
- en général, il est important de planifier une expérience (il est utile de pouvoir dessiner des graphiques de dépendances, exactement logiques, théoriques) afin de planifier une expérience dont les résultats peuvent être traités par le ML....
c'est-à-dire dans quel ordre et quels facteurs fixer afin d'obtenir une distribution conditionnelle pour le facteur étudié, ou l'influence conjointe de 2 facteurs étudiés, pour comparer les résultats obtenus avec la distribution inconditionnelle - pour émettre une hypothèse "meilleur - pas meilleur", pour confirmer ou réfuter statistiquement, pour transférer à des tests dans des conditions de terrain ... et aboutir à une nouvelle inférence causale)

et dans ML RF - je ne sais pas comment ils font, le traitement des matrices de corrélation - (surtout le point 2 est discutable).

de nombreuses personnes critiquent les modèles probabilistes précisément à cause du point 2 et commencent à vanter l'inférence causale, affirmant qu'ils ont pris en compte l'influence d'autres facteurs.... mais sur le plan algorithmique, la façon dont la question ( ! un autre mot synonyme de raisonnement) est résolue par l'appareil VM est inconnue (du moins pour moi) - je dirais "rien".

Pour moi, l'inférence causale est essentiellement un raisonnement, et l'étude de la médiation, de la modération, de l'interaction est un grand sujet distinct et une question de goût (c'est-à-dire l'esquisse d'un graphique construit logiquement) - également une sorte de conception (expérience).

Il suffit d'avoir une seule BP sur le marché pour pouvoir tester une hypothèse sur les dépendances... et avec une expérimentation raisonnable, un OLS ou un LDA sera suffisant (mais vous n'aurez pas à allouer de fonctionnalités à coup sûr).

? ? ... donc je ne connais pas l'algorithme d'attribution d'une caractéristique à un facteur ou à un résultat (par des modèles en bois ou autre), sauf pour la logique et les connaissances théoriques..... mais de nos jours, toutes sortes de choses sont annoncées sous d'autres termes - je ne sais pas dans quel contexte vous avez rencontré l'inférence causale.

J'ai vu des publicités d'Uber qui disaient qu'ils avaient amélioré leurs processus.

Je ne sais pas dans quel contexte vous avez rencontré l'inférence causale, j'ai vu une version d'Uber qui disait qu'ils avaient amélioré leurs processus.

Ils ont des définitions étranges, on ne peut pas comprendre sans bouteille, il faut se remplir la tête de mots inutiles.

Causal Inference from Observational Data, или как провести А/В-тест без А/В-теста.
Causal Inference from Observational Data, или как провести А/В-тест без А/В-теста.
  • Stats&Data ninja
  • koch-kir.medium.com
Привет дата-ниндзя👋! Первый вопрос, который ты задашь — зачем вообще это нужно ❗️❓ Предположим, ты исследуешь причинно-следственную связь между двумя величинами (Y зависит от X). И тогда, изменяя X, мы можем быть уверены что изменяем Y, причем уверены мы не только в самом факте изменения, но и в его направлении и величине (magnitude). Конечно...
 
mytarmailS #:

D'ailleurs, je me demande comment fonctionneront les autres modèles, s'ils seront capables de créer la fonction mach() sans erreur.

Entraînement succinct de différents modèles sans réglage du GP

1 0.002392       форест
3 0.005348 екстр. буст.
4 0.024160     нейронка
2 0.037200         МГУА

conclusion : les modèles ne peuvent pas créer la fonction, mais seulement l'approximer avec une certaine précision, de sorte que la création et la sélection des caractéristiques restent pertinentes.

set.seed(125)
dat <- round(rnorm(100000),2)
X <- matrix(dat,ncol = 5)
Y <- apply(X,1,max)
colnames(X) <- paste0("x",1:5)

tr <- 1:19950
ts <- 19951:20000

#///////////////

library(randomForest)
rf <- randomForest(Y[tr]~.,X[tr,],ntree=100)
pr <- predict(rf,X[ts,])

cb <- round(  cbind(pred=pr,actual=Y[ts])  ,2)
matplot(cb,t="l",col=c(1,2),lty=1,lwd=c(3,1),main="RF regresion")
rf_MSE <- mean((cb[,1] - cb[,2])^2)  #  rf MSE 0.002392

#///////////////

library(GMDHreg)
gmdh <- gmdh.mia(X = X[1:10000,],
                 y = Y[1:10000],
                 x.test = X[10000:19951,] ,
                 y.test = Y[10000:19951], prune = 25,criteria = "test")
pr <- predict(gmdh,X[ts,])

cb <- round(  cbind(pred=pr,actual=Y[ts])  ,2)
matplot(cb,t="l",col=c(1,2),lty=1,lwd=c(3,1),main="gmdh regresion")
gmdh_MSE <- mean((cb[,1] - cb[,2])^2)  #  gmdh MSE 0.038692

#///////////////

library(xgboost)
xgb_train = xgb.DMatrix(data = X[1:10000,], label = Y[1:10000])
xgb_test =  xgb.DMatrix(data = X[10000:19951,], label = Y[10000:19951])

watchlist = list(train=xgb_train, test=xgb_test)
xgb = xgb.train(data = xgb_train, max.depth = 3, watchlist=watchlist, nrounds = 1750)

pr <- predict(xgb,X[ts,])
cb <- round(  cbind(pred=pr,actual=Y[ts])  ,2)
matplot(cb,t="l",col=c(1,2),lty=1,lwd=c(3,1),main="xgb regresion")
xgb_MSE <- mean((cb[,1] - cb[,2])^2)  #  xgb MSE 0.005348

#///////////////

library(automl)
nn <- automl_train(Xref = X[tr,], Yref = Y[tr],
                   autopar = list(numiterations = 10,
                                  psopartpopsize = 10),
                   hpar = list(numiterations = 10))

pr <- automl::automl_predict(nn,X[ts,])

cb <- round(  cbind(pred=pr,actual=Y[ts])  ,2)
matplot(cb,t="l",col=c(1,2),lty=1,lwd=c(3,1),main="nn regresion")
nn_MSE <- mean((cb[,1] - cb[,2])^2)  #  nn MSE 0.023828

#///////////////

 res <- c(rf_MSE , gmdh_MSE , xgb_MSE , nn_MSE)
nms <- c("форест","МГУА","екстр. буст.","нейронка")
m <- cbind.data.frame(res,nms)
m <- m[order(m$res),]
m
barplot(m$res,names.arg = m$nms)
 
СанСаныч Фоменко #:

Il s'agit de l'erreur sur les 300 barres suivantes. À chaque barre, des prédicteurs ont été formés, puis filtrés, le modèle a été entraîné et la barre suivante a été prédite.

J'essaierai de faire quelque chose de similaire dans la soirée, mais j'ai fait pas mal de bots de recyclage de ce type et j'ai du mal à croire qu'ils puissent donner une telle note.....

Il y a plutôt une confusion dans les concepts/compréhensions de ce qu'est un échantillon de test, et à cause de cela nous parlons de choses différentes, en appelant cela la même chose.

 
Aleksey Vyazmikin #:

La file d'attente des tâches a été un peu déchargée - il est devenu possible d'exécuter le script. Je l'exécute et j'obtiens une erreur.

Est-ce que je comprends bien que le programme veut l'ancienne version R 4.0 ?

J'ai cherché une ancienne version et je ne l'ai pas trouvée. Une terrible incompatibilité est évidemment répugnante.

C'est faux. Si un paquet est construit pour une version différente, il y aura un avertissement. De quelle incompatibilité parlons-nous ?

randomForest v.4.7-1.1 ne va nulle part et dans crane. R 4.1.3

 
Renat Fatkhullin #:

Veuillez noter qu'à partir de la version 3440, nous commençons à distribuer des versions AVX du logiciel : https://www.mql5.com/ru/forum/432624/page5#comment_42117241.

La prochaine étape consiste à réécrire l'appareil mathématique en fonctions vectorielles et OpenCL, ce qui permet d'obtenir des accélérations de dix fractions sans avoir besoin d'installer des bibliothèques supplémentaires comme CUDA.

Il s'agit là d'un grand pas en avant. Vous avez besoin de réécrire des indicateurs et des experts ?

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

Je ne suis pas d'accord avec cela.

Le marché évolue et les intervalles de temps de l'évolution sont différents et indépendants les uns des autres.

J'avais l'habitude d'écrire des Expert Advisors qui vivaient entre 3 et 6 mois. Je les optimisais le week-end. Puis ils mouraient, et pour un temps assez court pour vider le dépôt. Mais pas assez de temps pour l'optimisation. En fin de compte, la situation était encore pire : après un certain temps, il s'est avéré qu'il y avait une limite à partir de laquelle il était impossible de sélectionner des paramètres.

Les périodes d'évolution du marché sont plus longues : 5 à 7 ans. Mais le résultat est le même que pour les périodes mensuelles. Le robot meurt pour toujours. Je vous enverrai un bot spécifique du marché dans un message privé - vous ne pouvez pas le faire ici.

Toute cette idée de "hors échantillon" est donc absurde. Un robot a toujours une durée de vie, mais nous ne savons pas combien de temps : 3 mois ou 7 ans. Lorsque le robot meurt, nous le confondons avec une autre baisse et nous vidons notre dépôt.

Idéalement, il devrait être réentraîné sur la bougie suivante. Si on travaille sur les ticks, alors sur le tick suivant, sur le H1 alors sur l'arrivée de l'heure suivante.

Avez-vous comparé votre algorithme avec KNN (ou une modification de celui-ci) ? Il serait intéressant de voir à quel point le gain est significatif.