Обсуждение статьи "Преодоление ограничений машинного обучения (Часть 2): Отсутствие воспроизводимости"

Опубликована статья Преодоление ограничений машинного обучения (Часть 2): Отсутствие воспроизводимости:

В статье рассматривается, почему результаты торговли могут значительно различаться у разных брокеров, даже при использовании одной и той же стратегии и финансового символа, из-за децентрализованного ценообразования и расхождений в данных. Эта статья помогает разработчикам MQL5 понять, почему их продукты могут получать неоднозначные отзывы на MQL5 Marketplace, и призывает разработчиков адаптировать свои подходы к конкретным брокерам для обеспечения прозрачных и воспроизводимых результатов. В случае широкого распространения это может стать важной, узкоспециализированной передовой практикой, которая принесет пользу нашему сообществу.

Для этой дискуссии я случайным образом выбрал двух брокеров, которыми лично пользуюсь для самостоятельной торговли. В соответствии с правилами нашего сообщества, которые запрещают рекламу брокеров, их имена удалены и заменены на «Брокер А» и «Брокер Б».

Используя библиотеку Python для MetaTrader 5, я запросил у обоих брокеров ежедневные исторические данные по паре EURUSD за четыре года. При проверке я заметил, что временные метки не совпадают: данные одного брокера охватывают период с сентября 2019 года, а данные другого — только с августа 2020 года. Тем не менее, оба сервиса вернули ровно 1460 рядов ежедневных данных, корректно удовлетворив наш запрос.

Учитывая децентрализованный характер брокерских компаний, вполне ожидаемо, что их рабочие часовые пояса могут различаться. Однако менее очевидны последствия перехода на летнее время, признанных государственных праздников и других незначительных расхождений, которые могут еще больше исказить выравнивание временных меток.

Затем мы рассчитали 10-дневную доходность по паре EURUSD на обоих брокерах и обнаружили, что числовые характеристики символа EURUSD не совпадают друг с другом. Средняя доходность по паре EURUSD за 10 дней с Брокером A составила 0,000267, а с Брокером Б средняя доходность составила -0,000352. Это означает разницу примерно в 232% в ожидаемой доходности одного и того же базового актива.

Ситуация усугубляется тем, что ожидаемая доходность от Брокера А, по-видимому, сопряжена с риском, на 21% большим, чем ожидаемая доходность от Брокера Б. На это нас натолкнул тот факт, что разница в доходности между Брокерами выросла на одинаковую величину — 21%. 


Автор: Gamuchirai Zororo Ndawana

Потрясающе.
Большое спасибо за статью.

Мне показалась очень интересной основная идея статьи, в частности то, что модель машинного обучения может вести себя совершенно по-разному в зависимости от набора данных, предоставляемого каждым брокером.

Однако, просматривая анализ, я заметил важную методологическую проблему, которая может оказать существенное влияние на выводы.

Два набора исторических данных начинаются в разные даты, но впоследствии они объединяются с помощью:

pd.concat([A, B], axis=1)
Поскольку оба DataFrame имеют последовательные целочисленные индексы, Pandas выравнивает их по индексу, а не по временной метке. Это означает, что многие строки из наборов A и B на самом деле могут соответствовать разным торговым дням.

Например, если набор A начинается в 2019 году, а набор B — в 2020 году, строка 0 в обоих наборах данных не соответствует одному и тому же моменту времени. Это может напрямую повлиять на указанную корреляцию, различия в средних значениях и дисперсиях, а также на ряд последующих сравнений между двумя брокерами.

Я считаю, что прежде чем делать выводы из этих сравнений, оба набора данных следует сначала синхронизировать по «времени», используя только общие временные метки, например, с помощью операции «merge» или «join» по столбцу datetime.

Основная идея статьи кажется обоснованной и весьма актуальной, но, учитывая текущую структуру эксперимента, я не уверен, что представленные результаты убедительно её подтверждают.

Было бы очень интересно посмотреть, как изменятся результаты после повторного анализа с учетом правильной синхронизации обоих наборов данных по времени. 😉
Juan Luis De Frutos Blanco #:
Ужасно.
Большое спасибо за статью.
Спасибо, Хуан Бланко.

Следите за обновлениями и будущими обсуждениями, направленными на поиск решений этой потенциальной угрозы.
Miguel Angel Vico Alba #:

Мне показалась очень интересной основная идея статьи, в частности то, что модель машинного обучения может вести себя совершенно по-разному в зависимости от набора данных, предоставляемого каждым брокером.

Однако, просматривая анализ, я заметил важную методологическую проблему, которая может существенно повлиять на выводы.

Два исторических набора данных начинаются с разных дат, но впоследствии они объединяются с использованием:

Поскольку оба DataFrame имеют последовательные целочисленные индексы, Pandas выравнивает их по индексу, а не по временной метке. Это означает, что многие строки из A и B на самом деле могут соответствовать разным торговым дням.

Например, если набор данных A начинается в 2019 году, а набор данных B — в 2020 году, то строка 0 в обоих наборах данных не соответствует одному и тому же моменту времени. Это может напрямую повлиять на результаты расчёта корреляции, различия в средних значениях и дисперсиях, а также на ряд последующих сравнений между двумя брокерами.

Я считаю, что прежде чем делать выводы на основе этих сравнений, оба набора данных следует сначала синхронизировать по «времени», используя только общие временные метки, например, с помощью операции «объединения» (merge) или «соединения» (join) по столбцу datetime.

Основная идея статьи кажется обоснованной и весьма актуальной, но, учитывая текущую структуру эксперимента, я не уверен, что представленные результаты убедительно её подтверждают.

Было бы очень интересно посмотреть, как изменятся результаты после повторного анализа с надлежащим согласованием обоих наборов данных по времени. 😉
Мне нравится, нравится, нравится <3

Большое спасибо, Мигель Альба, за то, что обратили внимание на эту критическую оплошность. Действительно, я с вами согласен: такая методологическая ошибка может иметь катастрофические последствия для всего анализа. Я обязательно пересмотрю план эксперимента и опубликую исправленный анализ влияния различных источников данных.

Действительно, две головы лучше, чем одна.