Diskussion zum Artikel "Die Grenzen des maschinellen Lernens überwinden (Teil 2): Mangelnde Reproduzierbarkeit"

Neuer Artikel Die Grenzen des maschinellen Lernens überwinden (Teil 2): Mangelnde Reproduzierbarkeit :

Der Artikel geht der Frage nach, warum die Handelsergebnisse bei verschiedenen Brokern selbst bei Verwendung derselben Strategie und desselben Finanzsymbols aufgrund dezentraler Preisfestsetzung und Datenabweichungen erheblich voneinander abweichen können. Der Artikel hilft MQL5-Entwicklern zu verstehen, warum ihre Produkte auf dem MQL5-Marktplatz gemischte Bewertungen erhalten können, und fordert die Entwickler auf, ihre Ansätze auf bestimmte Makler zuzuschneiden, um transparente und reproduzierbare Ergebnisse zu gewährleisten. Dies könnte sich zu einer wichtigen bereichsgebundenen Best Practice entwickeln, die unserer Gemeinschaft gute Dienste leisten würde, wenn sie auf breiter Ebene übernommen würde.

Für diese Diskussion habe ich nach dem Zufallsprinzip zwei Makler ausgewählt, die ich persönlich für den unabhängigen Handel verwende. Im Einklang mit unseren Gemeinschaftsrichtlinien, die Maklerwerbung untersagen, wurden ihre Namen geschwärzt und durch „Makler A“ und „Makler B“ ersetzt.

Mit Hilfe der MetaTrader 5 Python-Bibliothek habe ich vier Jahre lang täglich historische EURUSD-Daten von beiden Brokern angefordert. Bei der Überprüfung stellte ich fest, dass die Zeitstempel nicht übereinstimmten: Die Daten des einen Brokers reichten bis September 2019 zurück, die des anderen nur bis August 2020. Beide lieferten jedoch genau 1.460 Zeilen täglicher Daten und erfüllten damit unsere Anfrage.

Da die Makler dezentralisiert arbeiten, ist zu erwarten, dass sie in unterschiedlichen Zeitzonen arbeiten. Weniger offensichtlich sind jedoch die Auswirkungen der Sommerzeit, anerkannter Feiertage und anderer subtiler Diskrepanzen, die den Zeitstempelabgleich noch weiter verfälschen können.

Anschließend berechneten wir die 10-Tage-Rendite des EURUSD bei beiden Brokern und stellten fest, dass die numerischen Eigenschaften des EURUSD-Symbols nicht miteinander vereinbar waren. Die durchschnittliche 10-Tage-Rendite für EURUSD lag bei Broker A bei 0,000267, während die durchschnittliche 10-Tage-Rendite bei Broker B -0,000352 betrug. Dies entspricht einem Unterschied von etwa 232 % bei der erwarteten Rendite desselben Basiswerts.

Erschwerend kommt hinzu, dass die erwarteten Renditen von Broker A offenbar mit einem um 21 % höheren Risiko behaftet sind als die erwarteten Renditen von Broker B. Dies wurde uns durch die Tatsache suggeriert, dass die Varianz der Renditen zwischen den Brokern um denselben Betrag, nämlich 21 %, zunahm. 


Autor: Gamuchirai Zororo Ndawana

Verheerend.
Vielen Dank für den Artikel.

Ich fand die Hauptthese des Artikels sehr interessant, insbesondere die Idee, dass sich ein ML-Modell je nach den von den einzelnen Brokern bereitgestellten Daten ganz unterschiedlich verhalten kann.

Beim Durchlesen der Analyse ist mir jedoch ein wichtiges methodisches Problem aufgefallen, das erhebliche Auswirkungen auf die Schlussfolgerungen haben könnte.

Die beiden historischen Datensätze beginnen an unterschiedlichen Daten, werden später jedoch wie folgt kombiniert:

pd.concat([A, B], axis=1)
Da beide DataFrames fortlaufende ganzzahlige Indizes haben, gleicht Pandas sie anhand des Indexes und nicht anhand des Zeitstempels an. Das bedeutet, dass viele Zeilen aus A und B tatsächlich unterschiedlichen Handelstagen entsprechen können.

Wenn beispielsweise A im Jahr 2019 beginnt und B im Jahr 2020, stellt Zeile 0 in beiden Datensätzen nicht denselben Zeitpunkt dar. Dies könnte sich direkt auf die angegebene Korrelation, die Unterschiede bei Mittelwerten und Varianzen sowie auf mehrere der nachfolgenden Vergleiche zwischen den beiden Brokern auswirken.

Meiner Meinung nach sollten die beiden Datensätze zunächst anhand der „Zeit“ synchronisiert werden, wobei nur gemeinsame Zeitstempel verwendet werden sollten, beispielsweise durch ein „Merge“ oder „Join“ auf der Datetime-Spalte, bevor aus diesen Vergleichen Schlussfolgerungen gezogen werden.

Die Grundidee des Artikels erscheint stichhaltig und äußerst relevant, doch so wie das Experiment derzeit angelegt ist, bin ich mir nicht sicher, ob die vorgestellten Ergebnisse dies schlüssig belegen.

Es wäre sehr interessant zu sehen, wie sich die Ergebnisse ändern, wenn man die Analyse wiederholt, nachdem beide Datensätze zeitlich korrekt abgeglichen wurden. 😉
Juan Luis De Frutos Blanco #:
Verheerend.
Vielen Dank für den Artikel.
Vielen Dank, Juan Blanco.

Bleiben Sie auf dem Laufenden, was Aktualisierungen und zukünftige Diskussionen zur Umsetzung von Lösungen für diese mögliche Gefahr betrifft.
Miguel Angel Vico Alba #:

Ich fand die Hauptthese des Artikels sehr interessant, insbesondere die Idee, dass sich ein ML-Modell je nach den von den einzelnen Brokern bereitgestellten Daten ganz unterschiedlich verhalten kann.

Beim Durchlesen der Analyse ist mir jedoch ein wichtiges methodisches Problem aufgefallen, das erhebliche Auswirkungen auf die Schlussfolgerungen haben könnte.

Die beiden historischen Datensätze beginnen zu unterschiedlichen Zeitpunkten, werden später jedoch wie folgt kombiniert:

Da beide DataFrames fortlaufende ganzzahlige Indizes haben, gleicht Pandas sie anhand des Indexes und nicht anhand des Zeitstempels an. Das bedeutet, dass viele Zeilen aus A und B tatsächlich unterschiedlichen Handelstagen entsprechen können.

Wenn beispielsweise A im Jahr 2019 beginnt und B im Jahr 2020, stellt Zeile 0 in beiden Datensätzen nicht denselben Zeitpunkt dar. Dies könnte sich direkt auf die ausgewiesene Korrelation, die Unterschiede bei Mittelwerten und Varianzen sowie auf mehrere der nachfolgenden Vergleiche zwischen den beiden Brokern auswirken.

Meiner Meinung nach sollten die beiden Datensätze zunächst anhand der „Zeit“ synchronisiert werden, wobei nur gemeinsame Zeitstempel verwendet werden sollten, beispielsweise durch eine „Zusammenführung“ oder einen „Join“ auf der Datetime-Spalte, bevor aus diesen Vergleichen Schlussfolgerungen gezogen werden.

Die Grundidee des Artikels erscheint stichhaltig und äußerst relevant, doch angesichts der derzeitigen Ausgestaltung des Experiments bin ich mir nicht sicher, ob die vorgestellten Ergebnisse dies schlüssig belegen.

Es wäre sehr interessant zu sehen, wie sich die Ergebnisse ändern, wenn die Analyse mit beiden Datensätzen, die zeitlich korrekt aufeinander abgestimmt sind, wiederholt wird. 😉
Ich liebe es, ich liebe es, ich liebe es <3

Vielen Dank, Miguel Alba, dass du auf dieses entscheidende Versäumnis hingewiesen hast. Ich stimme dir in der Tat zu: Ein solcher methodischer Fehler kann katastrophale Auswirkungen auf die gesamte Analyse haben. Ich werde das Versuchsdesign auf jeden Fall überarbeiten und eine korrigierte Analyse der Auswirkungen verschiedener Datenquellen veröffentlichen.

Zwei Köpfe sind tatsächlich besser als einer.