記事「ペア取引における平均回帰による統計的裁定取引:数学で市場を攻略する」についてのディスカッション

 

新しい記事「ペア取引における平均回帰による統計的裁定取引:数学で市場を攻略する」はパブリッシュされました:

本記事では、ポートフォリオレベルの統計的アービトラージの基本的な概念を紹介します。数学の深い知識がない読者にも理解しやすく説明し、実際の運用を始めるためのコンセプトフレームワークを提案することを目的としています。記事には、動作するエキスパートアドバイザー(EA)と、1年間のバックテストに関する注記、再現用の設定ファイル(.iniファイル)も含まれています。

本記事の目的は、RenTechやジェームズ・シモンズの運用モデルを再現することでも、彼らの「秘密のコード」を暴くことでもありません。それは先述のとおり、外部の人間には不可能です。ここでの狙いは、私自身の理解に基づき、彼らの成功を支えていた普遍的な原則を紹介することにあります。これらの原則は、たとえごく限られたリソースで運用されるリテールトレーダーの取引システムにおいても、十分に応用可能です。成果に違いが出るとすれば、それは投入可能な資金や技術、人材などの規模に由来するものです。

この記事の内容は、書籍、ビデオドキュメンタリー、専門コミュニティでのリサーチに加え、私自身の金融業界における数年間の実務経験(主にビジネスサイド、開発サイドではありません)をもとに構成しています。RenTechの戦略は巨大なシステムによって運用されていますが、ここで紹介するのはその縮小モデル、いわばスーパーヒーローのアクションフィギュアや高層ビルの縮小モデルのようなものです。 

本稿の目的は、MetaTrader 5プラットフォーム上で動作し、一般的なノートPCでも実行可能な、低コスト・軽量・開発容易な分析手法を紹介することです。この手法は、アルゴリズムトレーダーにとっても、裁量トレーダーにとっても、有用なものとなるはずです。私たちは、最も基本的な構成から始めます。それは、プロセスを説明するのに必要最小限のセットアップです。

モデルの基本的な概念を理解したのち、統計的アービトラージの最も単純な形に対応したミニマルなポートフォリオを構築し、それをエキスパートアドバイザー(EA)で自動運用します。その結果からいくつかの観察をおこない、最後に今後の発展に向けて必要となるステップについて考察していきます。私は、この経験が読者の皆さんにとって、この強力な取引手法への出発点となることを願っています。そしてやがては、この知識をもとにさらにスキルを深め、新たな銘柄をポートフォリオに追加したり、他のアルゴリズムを試したりしながら、各自のリソースと目標に応じたフル機能のStatArb戦略を構築できるようになることを心から期待しています。

著者:Jocimar Lopes


作者: Jocimar Lopes

 

あなたのやり方とコードが理解できません。5秒タイマーを使い、気配値配列を更新しているのだから、なぜ最初に_PeriodにCopyCloseを使う のですか?5秒間隔と標準的なタイムフレーム(M1でも)を同じ配列で比較・処理することはできません。

最初のCopyCloseの後、最も古い(0番目)から最も新しい(n-1番目)要素までの順序を持つ相場配列ができます。

次に、最後の(最新の)要素を削除し、(最も古い要素が格納されている)0番目のインデックスに1つの新しい終値の値を挿入することによって、配列を(タイマーによって)更新します。

つまり、あなたの配列は5秒間隔であるにもかかわらず、この値を_Period上のMAと比較するモードがあります。これは大きな矛盾です。

また、最終的にバーを使用するのであれば(あなたの意図は今のところ不明です)、タイムスタンプによって異なるシンボルのバーを同期させるようにしてください。

 
Stanislav Korotky CopyCloseを使う のですか?5秒間隔と標準的なタイムフレーム(M1でも)を同じ配列で比較・処理することはできません。

最初のCopyCloseの後、最も古い(0番目の)要素から最も新しい(n-1番目の)要素までの順序を持つ相場配列ができます。

次に、最後の(直近の)要素を削除し、(最も古い要素が格納されている)0番目のインデックスに1つの新しい終値の値を挿入することによって、配列を(タイマーによって)更新します。

つまり、あなたの配列は5秒間隔であるにもかかわらず、この値を_Period上のMAと比較するモードがあります。これも大きな矛盾です。

また、最終的にバーを使用するのであれば(あなたの意図は今のところ不明です)、タイムスタンプによって異なるシンボルのバーを同期させるようにしてください。

コードのチェックに時間を割いていただきありがとうございます。

5秒間隔というのは現時点では任意です。1秒かもしれないし、10秒かもしれない。このアイデアは、CountQuotesでカバーされている期間の平均スプレッドと、最終的にはその他の統計を計算するための最初のウィンドウを持つことです。その後、時間枠に関係なく、X秒間隔で移動ウィンドウを更新し続ける。

バーについてはその通りです:私はバーには興味がないし、バーを同期させることにも興味がない。ほとんどすべての取引は数秒間で、バー内で始まったり閉じたりします。

とはいえ、このアプローチについてどう思いますか?より明確になりましたか?間違った計算につながったり、パフォーマンスに影響したりするような致命的な欠陥はありますか?

あなたのコメントには本当に感謝しています。このコードは公共の場で進化していくものであり、あなたはすでに私に考える材料を与えてくれた。)

良い週末を。

 

親愛なる友人の皆様、テスターの設定ファイル(*.ini 設定)をアップロードした際にミスを犯してしまいました。明らかに、バックテストはゼロTP/SLで実行されるべきです。つまり、ポジションはスプレッドが「平均に戻った」ときにクローズされるべきであり、ストップロスやテイクプロフィットでクローズされるべきではありません。

記事で報告されているバックテストを 正しく再現するには、ここに添付されている設定ファイルを使用してください。

このたびはご迷惑をおかけして申し訳ございませんでした。

 

シェアしてくれて本当にありがとう。一日中、君の資料の作成に追われていたよ。あちこちに手を加えて...ああ、フィルターもいくつか追加した。

過去3ヶ月のチャート

EURUSD


XAUUSD

あなたは素晴らしい仕事をしている!

 
Eric Ruvalcaba #:

シェアしてくれて本当にありがとう。一日中、君の資料の作成に追われていたよ。あちこちに手を加えて...ああ、フィルターもいくつか追加した。

過去3ヶ月のチャート

ユーロドル


XAUUSD

あなたは素晴らしい仕事をしている!

エリック、君がチェックしてくれて嬉しいよ。

ただ1つ注意してほしいのは、リアル口座で運用する場合は注意が必要だということだ。スリッページや大きなプレーヤーがあなたの注文をフロントランニングすることは、損失につながる可能性があります。

幸運を祈ります!

 
Jocimar Lopes #:

チェックしてもらえて嬉しいよ、エリック。

ただ1つ注意してほしいのは、リアル口座で運用する場合は注意が必要だということだ。スリッページや大きなプレーヤーがあなたの注文をフロントランニングすると、損失につながる可能性があります。

幸運を祈ります!

ご忠告ありがとうございます。おっしゃる通り、まずはテストして、必要に応じて調整したいと思います。

あなたの仕事の大ファンです。

 

こんにちは。とても興味深い記事ですね。私は結果を再現しようとしましたが、何も起こりませんでした。何が足りないのでしょうか?pairs-trading.mq5とPairsTradingFunctions.mqhを アップロードしました。

ありがとうございました。

 

xxxusd = xxxeur *eurusd.

xxx = xau, aud, ....

 
Jocimar Lopes #:

この時点では5秒という間隔は任意だ。1秒でも10秒でもいい。このアイデアは、CountQuotesでカバーされている期間の平均スプレッドと、最終的には他の統計を計算するための最初のウィンドウを持つことです。その後、時間枠に関係なく、X秒間隔で移動ウィンドウを更新し続ける。

バーについてはその通りです:私はバーには興味がないし、バーを同期させることにも興味がない。ほとんどすべての取引は数秒間続き、バー内で始まったり閉じたりします。

とはいえ、このアプローチについてどう思いますか?より明確になりましたか?間違った計算につながったり、パフォーマンスに影響したりするような重大な欠陥はありますか?

そうすると、iMAを使ったモード全体が間違っていることになります。5秒間のサンプルでMAを手動で計算する必要があります。

 
Stanislav Korotky #:

そうすると、iMAを使ったモード全体が間違っていることになる。5秒間のサンプルでMAを手動で計算する必要がある。

どのように