記事「MetaTrader 5機械学習の設計図(第1回):データリーケージとタイムスタンプの修正」についてのディスカッション

 

新しい記事「MetaTrader 5機械学習の設計図(第1回):データリーケージとタイムスタンプの修正」はパブリッシュされました:

MetaTrader 5で機械学習を取引に活用する以前に、最も見落とされがちな落とし穴の一つであるデータリーケージに対処することが極めて重要です。本記事では、データリーケージ、特にMetaTrader 5のタイムスタンプの罠がどのようにモデルのパフォーマンスを歪め、信頼性の低い売買シグナルにつながるのかを解説します。この問題の仕組みに踏み込み、その防止戦略を提示することで、実取引環境で信頼できる予測を提供する堅牢な機械学習モデルを構築するための道を切り開きます。

データスヌーピングやデータリーケージは一見すると些細に思えるかもしれませんが、その影響は機械学習モデルにとって計り知れず、時には壊滅的です。テスト勉強をしている際に、知らないうちに答えを先に覗き見してしまったと想像してみてください。満点は自分の実力で得られたように感じますが、実際には不正をしているのです。MetaTrader 5のデフォルトのタイムスタンプを機械学習に使うと、まさにこれと同じことが起こります。データリーケージが不意にモデルの整合性を損なってしまうのです。

MetaTrader 5のタイムスタンプが仕掛ける罠

EURUSD M5 - MetaTrader5

MetaTrader 5は、18:55に始まる5分足(上の2番目のバー)を次のようにラベル付けします。
Time Open High Low Close

2 Apr 18:55

  1.08718

  1.08724

  1.08668

  1.08670

開始時にタイムスタンプを付与することで、MetaTrader 5はこのバーのデータが18:55:00に利用可能であるかのように示しています。しかし実際には、このバーが確定するのは5分後です。 もしモデルの学習にこれを利用してしまうと、それはまるで生徒に試験が始まる5分前に解答を渡してしまうようなものです。これを回避するためには、MetaTrader 5が生成する既成の時間足を使わず、ティックデータから自分でバーを作成してモデルに利用すべきです。

作者: Patrick Murimi Njoroge

 

アクティビティ・ドリブン・バーは、タイム・バーに関してあなたがおっしゃったすべての問題を解決するわけではありません。例えば

The Subtle Intra-Bar Leakage: However, a more subtle form of data leakage can still occur within the very formation of that time bar. If a significant event transpires midway through a 1-minute bar (e.g., at 09:00:35), any features derived from that bar (such as its high price or a flag for the event) will inevitably incorporate this information by the bar's end.

イコール・ボリューム、イコール・レンジ、その他のティック・ベースのカスタム・バーを構築する場合、そのようなバーにはいずれにせよ単一のラベルを付けることになり、バー全体にわたって高値に関する情報が漏れる(より正確には、ぼやける)ことになります。

これを解決する唯一の方法は、(使用する)特定の機能を念頭に置いて「バー」を構築することです。例えば、高値や安値が主な特徴である場合、正確な時刻が記された終値を持つジグザグの「バー」を試してみるべきです。

実際、一定のタイムフレームを使用し、特にM1に限定するアプローチは、MT5におけるデータ漏洩の文脈では問題があります。M1バーに終了時刻を表示することは、開始時刻を表示することよりもはるかに優れているとは言えません。


MT5でネイティブにカスタムバー(チャート)を構築することに興味がある方には、イコールボリューム、イコールレンジ、およびレンコバーをMQL5で実装した記事が あります。もちろん、オープンソースのコードでは、終了時刻でバーをマークすることができます。

Custom symbols: Practical basics
Custom symbols: Practical basics
  • www.mql5.com
The article is devoted to the programmatic generation of custom symbols which are used to demonstrate some popular methods for displaying quotes. It describes a suggested variant of minimally invasive adaptation of Expert Advisors for trading a real symbol from a derived custom symbol chart. MQL source codes are attached to this article.
 
Stanislav Korotky #:

アクティビティ・ドリブン・バーは、タイム・バーに関してあなたがおっしゃったすべての問題を解決するわけではありません。例えば、あなたはこう書いた:

イコール・ボリューム、イコール・レンジ、またはその他のティック・ベースのカスタム・バーを構築する場合、いずれにせよそのようなバーには単一のラベルを付けることになり、バー全体にわたって高値に関する情報が漏れる(より正確には、ぼやける)ことになります。

これを解決する唯一の方法は、(使用する)特定の機能を念頭に置いて「バー」を構築することです。例えば、高値や安値が主な特徴である場合、正確な時刻が記された終値のあるジグザグの「バー」を試してみるべきです。

実際、一定のタイムフレームを使用し、特にM1に限定するアプローチは、MT5におけるデータ漏洩の文脈では問題があります。M1バーに終了時刻を表示することは、開始時刻を表示することよりもはるかに優れているとは言えません。


MT5でネイティブにカスタムバー(チャート)を構築することに興味がある方には、イコールボリューム、イコールレンジ、およびレンコバーをMQL5で実装した記事が あります。もちろん、オープンソースのコードでは、終了時刻でバーをマークすることができます。

アクティビティドリブン棒グラフは、棒グラフに含まれる統計的特性情報を改善することを目的としています。私が提案した「微妙なバー内リーク」の解決策は、バーの終了時刻を使ってバーにラベルを付けることで、バー内で発生したすべてのイベントがタイムスタンプに取り込まれるようにすることです。有用な例は、フーリエ変換のようなタイムスタンプに由来する特徴をモデルのトレーニングに使用する場合です。MetaTrader5 の慣例で、バーが期間の開始でラベル付けされている場合、モデルに誤った情報を与えることになります。この区別は、モデルによってはあまり重要ではないかもしれませんが、市場の循環的な性質を利用することを目的とするモデルには大きな影響を与えます。


 
Stanislav Korotky #:

アクティビティ・ベース・バーは、あなたがタイム・バーについて述べたすべての問題を解決しているわけではありません。例えば、あなたはこう書いた:

同じボリューム、レンジ、または他のティックベースのカスタムバーのバーを作成した場合、いずれにせよ、そのようなバーに単一のラベルを付けることになり、最高価格に関する情報がバー全体に漏れる(より正確には、ぼやける)ことになります。

この問題を解決する唯一の方法は、(使用する)特定の機能を念頭に置いて「バー」を作成することです。 たとえば、高値または安値が主な特徴である場合、時間通りに正確にマークされたエクスターマムを持つ「ジグザグ・バー」を作成するようにします。

一定の時間枠のアプローチ、特にM1への制限は、MT5のデータ漏れの文脈では問題があります。M1バーを終了時刻でマークすることは、開始時刻でマークするよりもはるかに優れているとは言えません。


MT5でネイティブにカスタムバー(チャート)を作成することに興味がある方には、MQL5によるEqual Volume、Equal Range、およびRenkoバーの実装に関する記事が あります。もちろん、オープンソースのコードでは、終了時間をバーにマークすることができます。

同じボリューム、レンジ、またはその他のティックベースのカスタムバーのバーを作成すると、いずれにせよそのようなバーに単一のラベルを付けることになり、最高価格に関する情報がバー全体に漏れる(正確にはぼやける)ことになります。

 
Patrick Murimi Njoroge #:

同じ出来高、レンジ、その他のティックベースのカスタムバーのバーを作成した場合、いずれにせよ、そのようなバーには1つのラベルを付けることになり、最高価格に関する情報はバー全体に漏れる(より正確には、ぼやける)」というのはどういう意味ですか?

何が不明瞭なのか理解できない。私の文章は、前の投稿で 引用したあなたの文章に直接返信したものです。あなたがどのようにバーを形成しようとも、バーのすべてのプロパティは単一のタイムスタンプによって帰属し、プロパティの実際の「イベント」はその時間に一致しません。
 
Stanislav Korotky # :
I don't understand what is unclear. My sentence is a direct reply to your sentence that I quoted in the previous post . No matter how you form the bar, all the properties of the bar are attributed by a single timestamp, and the actual "events" of the properties do not match that time.

Now I understand the meaning of blur. Thank you for your explanation.