記事「機械学習の限界を克服する(第2回):再現性の欠如」についてのディスカッション

 

新しい記事「機械学習の限界を克服する(第2回):再現性の欠如」はパブリッシュされました:

本記事では、同一の戦略と金融銘柄を用いても、ブローカーによって取引結果が大きく異なる理由について探ります。その背景には、価格が分散的に形成されていることや、データの不一致があるためです。本記事は、MQL5開発者がMQL5マーケットプレイスで自らの製品に対して賛否両論の評価を受ける理由を理解し、透明性が高く再現可能な成果を確保するためには、特定のブローカーに合わせたアプローチを取る必要があることを示唆しています。この取り組みが広く受け入れられれば、コミュニティにとって重要な実務上のベストプラクティスへと発展する可能性があります。

今回の議論にあたり、私が個人的に取引で利用している2社のブローカーを無作為に選びました。コミュニティのガイドライン(ブローカー名の宣伝禁止)に従い、ここでは「ブローカーA」と「ブローカーB」と記載します。

MetaTrader 5のPythonライブラリを用いて、両ブローカーからEURUSDの日次データを4年分取得しました。その結果、タイムスタンプが一致していないことに気づきました。一方のブローカーは2019年9月まで遡るデータを返したのに対し、もう一方は2020年8月までしか遡れませんでした。しかし、どちらも1,460行のデータを返しており、形式的にはリクエスト通りでした。

ブローカーが異なれば運営上のタイムゾーンが異なることは想定内です。しかし、夏時間の適用、認識する祝日の違い、その他細かな相違が、タイムスタンプのずれをさらに複雑にします。

その後、両ブローカーのデータで10日間のEURUSDリターンを算出したところ、その数値的性質が一貫していないことが判明しました。ブローカーAの平均10日リターンは+0.000267、ブローカーBでは-0.000352となり、同一資産にもかかわらず期待リターンが約232%も異なる結果となったのです。

さらに問題を悪化させているのは、ブローカーAの期待リターンにはブローカーBよりも21%高いリスクが伴っていることです。これはリターン分散の比較により確認されました。 


作者: Gamuchirai Zororo Ndawana

 
衝撃的だ。
この記事、本当にありがとうございます。
 

この記事の主な論点は非常に興味深いものでした。特に、各ブローカーから提供されるデータフィードによって、機械学習モデルの挙動が大きく異なる可能性があるという考え方には感銘を受けました。

しかし、分析を読み進める中で、結論に重大な影響を及ぼしかねない重要な方法論上の問題に気づきました。

2つの履歴データセットは開始日が異なりますが、後に次のように結合されています:

pd.concat([A, B], axis=1)
両方のDataFrameは連続した整数インデックスを持っているため、Pandasはタイムスタンプではなくインデックスに基づいてそれらを整合させています。これは、AとBの多くの行が、実際には異なる取引日に相当する可能性があることを意味します。

例えば、Aが2019年に始まり、Bが2020年に始まる場合、両データセットの0行目は同じ時点を表していません。これは、報告された相関関係、平均値や分散の差異、および2つのブローカー間のその後の比較のいくつかに直接影響を与える可能性があります。

これらの比較から結論を導き出す前に、まず「時間」に基づいて、共通のタイムスタンプのみを使用し、例えばdatetime列での「マージ」や「結合」を用いて、2つのデータセットを同期させるべきだと考えます。

この記事の主な主張は妥当で非常に意義深いものと思われますが、現在の実験設計では、提示された結果がそれを決定的に裏付けているとは言い切れないと思います。

両方のデータセットを時間軸で適切に整合させた上で分析を繰り返した場合、結果がどのように変化するかを確認できれば、非常に興味深いでしょう。😉
 
Juan Luis De Frutos Blanco #:
壊滅的だ。
この記事、本当にありがとうございます。
フアン・ブランコさん、ありがとうございます。

この潜在的な危険に対する解決策の実現に向けた、今後の改訂や議論にご注目ください。
 
Miguel Angel Vico Alba #:

この記事の主な論点は非常に興味深いものでした。特に、各ブローカーから提供されるデータフィードによって、機械学習モデルの挙動が大きく異なる可能性があるという考え方には感銘を受けました。

しかし、分析を読み進める中で、結論に重大な影響を及ぼしかねない重要な方法論上の問題に気づきました。

2つの履歴データセットは開始日が異なるにもかかわらず、後に以下の方法で結合されています:

両方のDataFrameは連続した整数インデックスを持っているため、Pandasはタイムスタンプではなくインデックスに基づいてそれらを整合させます。これは、AとBの多くの行が、実際には異なる取引日に相当する可能性があることを意味します。

例えば、Aが2019年に始まり、Bが2020年に始まる場合、両データセットの0行目は同じ時点を表しているわけではありません。これは、報告される相関関係、平均値や分散の差、および2つのブローカー間のその後の比較のいくつかに直接影響を与える可能性があります。

これらの比較から結論を導き出す前に、まず「時間」に基づいて2つのデータセットを同期させるべきだと考えます。具体的には、datetime列での「マージ」や「結合」などを行い、共通のタイムスタンプのみを使用するようにすべきです。

この記事の主な主張は妥当であり、非常に意義深いものと思われますが、現在の実験設計では、提示された結果がそれを決定的に立証しているとは言い難いと思います。

両方のデータセットを時間軸上で適切に整合させた上で分析を繰り返した場合、結果がどのように変化するかを確認できれば、非常に興味深いでしょう。😉
最高、最高、最高 <3

ミゲル・アルバさん、その重大な見落としを指摘してくださり、誠にありがとうございます。確かに私も同感です。そのような方法論上の誤りは、分析全体に壊滅的な影響を及ぼしかねません。 実験設計を必ず見直し、異なるデータフィードがもたらす影響について、修正した分析結果を公表します。

やはり、二人で考える方が一人より良いですね。