Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 2750

 
mytarmailS #:
Ich erinnere mich, aber es ist ein Anpassungsfehler, ich meine, Spurensuche...
Was ist der Fehler der nächsten Kerze, der Test.

Es ist der Fehler der nächsten 300 Balken. Für jeden Balken wurden Prädiktoren generiert, dann gefiltert, das Modell wurde trainiert und der nächste Balken wurde vorhergesagt.

 
Maxim Dmitrievsky #:
Nun, das macht durchaus Sinn, denn oft leben Modelle nicht lange. Aber ich würde gerne Optionen ohne ständige Nachschulung finden, zumindest im Intervall von einem Jahr +, mit langsamer Verschlechterung des Modells, die leicht zu verfolgen ist
.

Ich kann dem nicht zustimmen.

Der Markt verändert sich, und die Zeitintervalle der Veränderung sind unterschiedlich und unabhängig voneinander.

Früher konnte ich EAs schreiben, die zwischen 3 und 6 Monaten lebten. Ich optimierte sie an den Wochenenden. Dann starben sie, und zwar für eine kurze Zeit, die ausreichte, um das Depot zu leeren. Aber nicht genug Zeit für die Optimierung. Am Ende war die Situation sogar noch schlimmer: Nach einiger Zeit stellte sich heraus, dass es eine Grenze gab, von der aus es unmöglich war, Parameter zu wählen.

Es gibt längere Zeiträume mit Marktveränderungen: 5-7 Jahre. Aber das Ergebnis ist das gleiche wie bei monatlichen Perioden. Der Bot stirbt für immer. Ich werde einen bestimmten Bot aus dem Markt in einer privaten Nachricht senden - hier können Sie nicht.

Diese ganze Idee von "out of sample" ist also Blödsinn. Ein Bot hat immer noch eine Lebensdauer, von der wir nicht wissen, wie lange: 3 Monate oder 7 Jahre. Wenn der Bot stirbt, verwechseln wir ihn mit einem anderen Drawdown und verlieren unsere Einlage.

Idealerweise sollte er bei der nächsten Kerze neu trainiert werden. Wenn wir auf Ticks arbeiten, dann auf den nächsten Tick, auf H1 dann auf die Ankunft der nächsten Stunde.

 
Valeriy Yastremskiy #:

Ich habe nichts dagegen, an jeder Stange zu trainieren, vielleicht sogar an einer nicht stationären Stange, zum Beispiel. Ich verstehe die Trainingsstruktur nicht ganz. Ist die EA-Logik ein separates Training oder Teil des Trainings auf jedem Balken? Es ist wie die Schwänze der ersten Ausbildung, wie viele Schwänze, oder Stufen der Ausbildung?

Auf jedem Balken ist alles neu

 
Maxim Dmitrievsky #:

Es gibt weitere hölzerne Modelle für kausale Schlussfolgerungen, ich hatte noch keine Zeit, sie zu erforschen.

aus der Praxis, viele Interpretationen:

- Umwelt beeinflusst das Subjekt (wenn unter Laborbedingungen alles korreliert ist, treten unter natürlichen Bedingungen andere, nicht berücksichtigte Abhängigkeiten auf - die trivialste ist der menschliche Faktor oder der Crowding-Effekt) - RL ist besser als ML, aber es muss auch modelliert werden und nicht alles kann berücksichtigt werden....
- wenn es um 2 korrelierte Werte geht, kann man nur eine Schlussfolgerung darüber ziehen, was wovon abhängt, nicht umgekehrt (Ergebnis von Faktor oder Faktor von Ergebnis)
- Mediation, Moderation, Interaktion, Abhängigkeiten, die in den Prozess eingreifen (die oft nicht einmal experimentell aufgespürt werden können)
- im Allgemeinen ist es wichtig, ein Experiment zu planen (es ist nützlich, Graphen von Abhängigkeiten zeichnen zu können, und zwar genau logische, theoretische), um ein Experiment zu planen, dessen Ergebnisse mit ML oder noch einfacher verarbeitet werden können ....
d.h. in welcher Reihenfolge und welche Faktoren zu fixieren sind, um eine bedingte Verteilung auf den untersuchten Faktor oder den gemeinsamen Einfluss von 2 untersuchten Faktoren zu erhalten, um die erhaltenen Ergebnisse mit der unbedingten Verteilung zu vergleichen - um eine Hypothese "besser - nicht besser", "Einfluss - nicht_Einfluss" aufzustellen, um sie statistisch zu bestätigen oder zu widerlegen, um sie auf Tests unter Feldbedingungen zu übertragen.... und man erhält eine neue kausale Inferenz).

und in ML RF - ich weiß nicht, wie sie es machen, Korrelationsmatrizen zu verarbeiten - (besonders Punkt 2 ist fraglich).

Viele Leute kritisieren probabilistische Modelle genau wegen Punkt 2 und loben die kausale Inferenz, indem sie behaupten, dass sie den Einfluss anderer Faktoren berücksichtigt haben.... aber algorithmisch ist (zumindest mir) nicht bekannt, wie die Frage (! ein anderes Wort für Schlussfolgerung) durch den VM-Apparat gelöst wird - ich würde sagen "nichts".

Für mich ist die kausale Inferenz im Wesentlichen eine Schlussfolgerung, und die Untersuchung von Mediation, Moderation, Interaktion ist ein separates großes Thema und eine Frage des Geschmacks (d.h. dieses oder jenes logisch aufgebaute Diagramm zu skizzieren) - auch eine Art von Design (Experiment).

Wenn man nur einen BP auf dem Markt hat, kann man keine Hypothese über Abhängigkeiten testen... und bei einer vernünftigen Versuchsanordnung reicht eine OLS oder ANOVA aus (aber man muss nicht unbedingt Chips herausfiltern).

?? ... also ich kenne den Algorithmus nicht, mit dem man ein Merkmal einem Faktor oder einem Ergebnis zuordnen kann (durch Holzmodelle oder was auch immer), außer Logik und theoretischem Wissen .... aber heutzutage werden alle möglichen Dinge unter anderen Begriffen angepriesen - ich weiß nicht, in welchem Zusammenhang Sie auf kausale Inferenz gestoßen sind

 
JeeyCi #:

aus der Praxis, viele Interpretationen:
- Umwelt beeinflusst den Probanden (wenn unter Laborbedingungen alles korreliert, treten unter natürlichen Bedingungen andere, nicht berücksichtigte Abhängigkeiten auf - die banalste - Human Factor oder Crowding Effect) - RL ist besser als ML, aber es muss auch modelliert werden und nicht alles kann berücksichtigt werden....
- bei 2 korrelierten Werten kann man nur darauf schließen, was wovon abhängt, aber nicht umgekehrt (Ergebnis von Faktor oder Faktor von Ergebnis)
- Mediation, Moderation, Interaktion, Abhängigkeiten, die in den Prozess eingreifen (oft nicht einmal experimentell nachvollziehbar)
- generell ist es wichtig, ein Experiment zu planen (es ist nützlich, Graphen von Abhängigkeiten zeichnen zu können, und zwar genau logische, theoretische), um ein Experiment zu planen, dessen Ergebnisse mit ML verarbeitet werden können....
d.h. in welcher Reihenfolge und welche Faktoren zu fixieren sind, um eine bedingte Verteilung für den untersuchten Faktor oder den gemeinsamen Einfluss von 2 untersuchten Faktoren zu erhalten, um die erhaltenen Ergebnisse mit der unbedingten Verteilung zu vergleichen - um eine Hypothese "besser - nicht besser" aufzustellen, um sie statistisch zu bestätigen oder zu widerlegen, um sie auf Tests unter Feldbedingungen zu übertragen ... und eine neue kausale Schlussfolgerung zu ziehen)

und in ML RF - ich weiß nicht, wie sie es machen, Korrelationsmatrizen zu verarbeiten - (insbesondere Punkt 2 ist fragwürdig).

viele Leute kritisieren probabilistische Modelle genau wegen Punkt 2 und loben die kausale Inferenz, indem sie behaupten, dass sie den Einfluss anderer Faktoren berücksichtigt haben.... aber algorithmisch, wie die Frage (! ein anderes Wort synonym für Schlussfolgerung) durch den VM-Apparat gelöst wird, ist (zumindest mir) unbekannt - ich würde sagen "nichts".

Für mich ist die kausale Inferenz im Wesentlichen eine Schlussfolgerung, und die Untersuchung von Mediation, Moderation, Interaktion ist ein separates großes Thema und eine Frage des Geschmacks (d.h. einen logisch aufgebauten Graphen zu skizzieren) - auch eine Art von Design (Experiment).

Wenn man nur einen BP auf dem Markt hat, kann man keine Hypothese über Abhängigkeiten testen... und wenn man ein vernünftiges Experiment aufstellt, reicht eine OLS oder LDA aus (aber man muss nicht unbedingt Funktionen zuweisen).

?? ... also ich kenne den Algorithmus nicht, mit dem man ein Merkmal einem Faktor oder einem Ergebnis zuordnen kann (durch Holzmodelle oder was auch immer), außer Logik und theoretischem Wissen..... aber heutzutage werden alle möglichen Dinge unter anderen Begriffen angepriesen - ich weiß nicht, in welchem Zusammenhang Sie auf kausale Inferenz gestoßen sind

Ich habe eine Uber-Lib gesehen, die sagte, dass sie ihre Prozesse verbessert haben.

und die allgemeine Interpretation, dass Korrelation != Kausalität ist und man versucht, das auf verschiedene Arten zu lösen, angefangen mit A/B, aber ich weiß nicht so recht.

Sie haben einige seltsame Definitionen, die man ohne eine Flasche nicht verstehen kann, man muss seinen Kopf mit unnötigen Wörtern füllen.

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

Übrigens frage ich mich, wie andere Modelle funktionieren werden, ob sie in der Lage sein werden, die Funktion mach() ohne Fehler zu erstellen

Kurzes Training verschiedener Modelle ohne GP-Tuning

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

Schlussfolgerung: Modelle können die Funktion nicht erstellen, sondern nur mit einer gewissen Genauigkeit annähern, so dass die Erstellung von Merkmalen und die Auswahl von Merkmalen immer noch relevant sind.

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)
 
СанСаныч Фоменко #:

Dies ist der Fehler für die nächsten 300 Balken. Bei jedem Balken wurden Prädiktoren gebildet, dann gefiltert, das Modell wurde trainiert und der nächste Balken wurde vorhergesagt.

Ich werde am Abend versuchen, etwas Ähnliches zu machen, aber ich habe eine ganze Menge solcher Umschulungs-Bots gemacht, und dass sie einen solchen Score liefern, kann ich kaum glauben....

Vielmehr gibt es eine Verwirrung in den Konzepten/Verständnissen darüber, was ein Testmuster ist, und deshalb reden wir über verschiedene Dinge, die wir als dasselbe bezeichnen

 
Aleksey Vyazmikin #:

Die Aufgabenwarteschlange wurde ein wenig entladen - es wurde möglich, das Skript auszuführen. Ich führe es aus und erhalte eine Fehlermeldung.

Verstehe ich das richtig, dass das Programm die alte Version R 4.0 haben will?

Nun, ich habe nach einer alten Version gesucht und sie nicht gefunden. Schreckliche Inkompatibilität ist natürlich abstoßend.

Falsch. Wenn ein Paket für eine andere Version gebaut wird, gibt es eine Warnung. Von welcher Inkompatibilität ist die Rede?

randomForest v.4.7-1.1 ging nirgendwo hin und in crane. R 4.1.3

 
Renat Fatkhullin #:

Bitte beachten Sie, dass wir ab Build 3440 mit der Verteilung von AVX-Versionen der Software beginnen: https://www.mql5.com/ru/forum/432624/page5#comment_42117241.

Der nächste Schritt besteht darin, den mathematischen Apparat in Vektor- und OpenCL-Funktionen umzuschreiben, was eine zehnfache Beschleunigung ermöglicht, ohne dass zusätzliche Bibliotheken wie CUDA installiert werden müssen.

Dies ist ein wirklich großer Schritt nach vorn. Müssen Indikatoren und Experten neu geschrieben werden?

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

Dem kann ich nicht zustimmen.

Der Markt verändert sich, und die Zeitintervalle der Veränderung sind unterschiedlich und unabhängig voneinander.

Früher konnte ich Expert Advisors schreiben, die zwischen 3 und 6 Monaten lebten. Ich optimierte sie an den Wochenenden. Dann starben sie, und zwar für eine kurze Zeit, die ausreichte, um das Depot zu leeren. Aber nicht genug Zeit für die Optimierung. Am Ende war die Situation noch schlimmer: Nach einiger Zeit stellte sich heraus, dass es eine Grenze gab, von der aus es unmöglich war, Parameter auszuwählen.

Es gibt längere Zeiträume mit Marktveränderungen: 5-7 Jahre. Aber das Ergebnis ist das gleiche wie bei monatlichen Perioden. Der Bot stirbt für immer. Ich werde einen bestimmten Bot aus dem Markt in einer privaten Nachricht senden - das geht hier nicht.

Diese ganze Idee von "out of sample" ist also Blödsinn. Ein Bot hat immer noch eine Lebensdauer, von der wir nicht wissen, wie lange: 3 Monate oder 7 Jahre. Wenn der Bot stirbt, verwechseln wir das mit einem weiteren Drawdown und leeren unser Depot.

Idealerweise sollte er bei der nächsten Kerze neu trainiert werden. Wenn wir auf Ticks arbeiten, dann auf den nächsten Tick, auf H1 dann auf die Ankunft der nächsten Stunde.

Haben Sie Ihren Algorithmus mit KNN (oder einer Modifikation davon) verglichen? Es wäre interessant, wie signifikant der Gewinn ist.