収益性の高いEURUSD戦略の構築
マーク・フリック作
この記事では、EURUSD向けの収益性が高く堅牢な戦略を構築するための完全なステップバイステップのプロセスを説明します。さらに、 異なる堅牢性テストの複数のステップ.
この記事には別のバリエーションもあります。 E-Mini S&P 500先物の戦略構築:Process.
遺伝的プログラミングなどの機械学習手法を使用する場合 戦略構築プロセスにおいて最も重要な部分は、戦略の堅牢性を検証することである それが過去のデータに対して過剰適合(カーブフィッティング)していないことを保証するため。.
私はダブルOOSフィルターとロバストネス(堅牢性)テスト、そしてウォークフォワード・マトリックス・テストを使用しています。.
入力
私が使用する入力は、戦略に対する自分の期待値のみです。つまり、EURUSD向けに、利益が出てドローダウンができるだけ少ない戦略を構築したいのです。また、他の銘柄(GBPUSD)でも機能するほど頑健であり、再最適化がこの戦略で機能することを確認するために、ウォークフォワード・マトリックス・テストに合格させたいのです。.
戦略構築プロセス
- 多数の潜在的な候補者のプールを作成する
- 最初のフィルター – サンプル外(OOS)チェック
- 第2フィルター – 再試験および2回目のOOS確認
- 第3フィルター – GBPUSDの確認
- 第4のフィルター – ロバストネス試験
- 5番目のフィルター:ウォークフォワードマトリックス検定
多数の潜在的な候補者のプールを作成する
最初のステップでは、後で堅牢性をテストするための、潜在的に「良い」戦略の大規模なプールを生成するだけでよい。初期のすべての戦略が(ある程度)利益を生み出し、堅牢であることを望むため、この最初の段階でもいくつかのフィルターを採用している。.
このステップの設定
以下のリンクから、このステップで使用している設定をダウンロードできます。リンクをマウスの右ボタンでクリックし、「名前を付けてリンクを保存…」を選択してください。
次に、StrategyQuantで「設定の読み込み」機能を使用して、この設定ファイルをプログラムに読み込みます。.
build_eurusd_strategy.xml
設定の説明
まず、私はすべての戦略を複数のシンボルで生成します。私の目標はEURUSDに適した戦略を見つけることですが、戦略の堅牢性を高めたいと考えているため、GBPUSDでも利益が出るようにしたいのです。追加データにGBPUSDを追加することで、戦略は両方のシンボルでテストされるようになります。.
画像1:データを設定する
2007年1月1日から2011年6月30日までの4年半分のデータを使用します。残りのデータは、後ほど追加のアウトオブサンプル(OOS)テストのために残しておきます。.
遺伝的進化モードを使用する。アイデアは、200個の戦略からなる集団を作り、30世代にわたってそれを進化させた後、最初からやり直すというものだ。こうすることで、進化のが行き止まりになるのを防ぎ、最良の戦略はデータバンクに継続的に保存される。.
初期集団の唯一の条件は、少なくとも100回のトレードを行わなければならないことであることも確認できます。利益が出る必要はありません。遺伝的進化によってそれが改善されるはずです。.
画像2:遺伝的選択肢
設定の最後の重要な要素はランキングオプションです。今後の選定プロセスのために十分なベースを確保したいため、データバンクに上位2000個の戦略を保存するように設定しました。また、選定基準には私のお気に入りであるリターン/ドローダウン比率を設定しました。他の選定基準を使用すれば、さらに良い結果が得られるかもしれません。.
画像3:ランキングオプション
もう1つ重要なことは、Databank内の戦略に対する初期フィルタ条件を設定することです。 利益が少なくとも$2000あり、リターン/DD比率が3以上で、取引回数が300回以上、かつポートフォリオのリターン/DD比率が2.5以上である戦略のみを検討したいと考えています。.
EURUSDとGBPUSDの2つのシンボルで戦略をテストしているため、戦略のポートフォリオ結果も計算されます。この条件を用いることで、ポートフォリオのパフォーマンスがEURUSD単体のパフォーマンスよりも著しく悪化しないことを単純に指定し、プログラムはポートフォリオのパフォーマンスが悪い戦略をすべて除外します。.
あとは~を叩くだけだ 開始 ボタンをクリックして、プログラムに処理を任せます。.
フィルター処理に進む前に、少なくとも2000個の「優れた」戦略を生成したいということを覚えておいてください。.
コンピュータの設定や速度によっては数時間、あるいは数日かかることもあるため、気長に待ってください。プログラムが長期間にわたって戦略をまったく生成しない場合は、H4やD1などの上位の時間足に切り替えるか、制約を緩める必要があるかもしれません。.
1. 最初のフィルター – サンプル外(OOS)チェック
データバンクに有望な戦略が2000個溜まったら、生成を停止してフィルタリングプロセスを開始します。.
まず最初のフィルタを適用します。具体的には、アウト・オブ・サンプル(OOS)のパフォーマンスが不良なシステムをすべて除外します。これは、データバンク内の戦略を並べ替え、OOS利益が$500未満のものを削除するだけで、素早く行うことができます。.
画像4 OOS Net Profit順に並べ替えられた戦略のプールを含むデータベース
この最初のステップで通常は大部分の戦略が除外されるため、最初の2000候補から約1500に減少します。.
2. 第2フィルター – 再試験および2回目のOOS(規格外)確認
このステップでは、すべての戦略を再テストします。 1分単位の精度 未知のホールドアウト期間において。.
ビルド段階ではテストをできる限り高速化するために「選択された時間枠の精度」を使用しましたが、さらなる評価の前にバックテストの信頼性が確かなものであることを確認するため、より高い精度で全戦略の再テストを行います。.
戦略の再テストは簡単です。データバンク内のすべての戦略を選択し、「再テスト」ボタンをクリックするだけです。これにより、すべての戦略が「再テスト」タブに移動します。また、再テストにビルド設定を使用するかどうかを確認するダイアログが表示されるので、それを承認します。
次に、データ期間を利用可能なデータの最後まで拡張します。戦略は2007年1月1日から2011年6月30日までのデータで生成されましたが、今度は2013年6月30日までのデータで戦略を再テストし、サンプル外(Out of Sample)期間を2011年7月2日から2013年6月28日までに設定します。.
これは未知の新しいデータで戦略を再テストするものであり、OOS(サンプル外)の部分は過去1年半の戦略のパフォーマンスを示します。.
画像5:テスト精度を1分に設定する
私にはDukascopyからダウンロードした無料データというもう一つのEURUSDの歴史的データソースもあるため、それらを追加データとして加え、両方のEURUSDデータソースにおけるパフォーマンスを比較します。.
テストには多少時間がかかるかもしれませんが、完了したら、アウト・オブ・サンプル(OOS)のパフォーマンスが不十分なシステムをすべて再度削除します。今回も、Databank内の戦略を「Net Profit (OOS)」で並べ替え、OOS利益が$500未満のものを削除します。.
3. 3番目のフィルター – GBPUSDのチェック
このステップでは、GBPUSDシンボルにおける戦略のパフォーマンスを確認します。「Results」>「Equity chart」に移動し、チャートをGBPUSD/H1またはポートフォリオに切り替えて、GBPUSDのチャートを見ながら戦略を1つずつ確認していきます。.
画像6:GBPUSDのパフォーマンスの良し悪しの例
私はGBPUSDで少なくともある程度の収益性を示す戦略のみを検討します。エクイティカーブは完璧である必要はありませんが、極端なドローダウンなしに右肩上がりであるべきです。.
このフィルターは非常に厳しいため、このテストを通過する戦略は通常ごくわずかしか見つかりません。.
したがって、初期の2000個から通常は5〜15個の戦略に絞り込まれます。.
4. 第4のフィルター – ロバストネス検定
GBPUSDのパフォーマンスが悪い戦略をすべて除外した結果、良好なISおよびOOSのパフォーマンスを示し、かつGBPUSDでも満足のいくパフォーマンスを持つ戦略は10個未満になりました。これから、各戦略が入力値のわずかな変更にどのように対応するかを確認し、戦略同士を比較できるようにするため、ロバストネステストと資金管理(マネーマネジメント)を用いて戦略を再度テストします。.
資金管理を「固定サイズ」から「固定額」に変更し、すべての戦略で1トレードあたり$100のリスクを取るようにします。これにより、各戦略が1トレードあたり同じ金額のリスクを負うことになるため、戦略間の比較がより容易になります。.
画像7:資金管理を固定額に設定する
ロバストネス(堅牢性)テストでは、少なくとも20回のシミュレーションを使用し、あらゆる種類のストレステストで戦略を検証します。ロバストネス・テストの設定後、戦略を再度テストします。.
今回はデータバンクに残っている戦略が少ないため、すぐに終わります。.
画像8:ロバスト性テスト
ロバスト性テストの評価方法
ロバスト性テストは、取引の欠落や異なる履歴データなどが存在する場合、その戦略が現実においてどのように振る舞うかを示してくれます。私は、95%の信頼水準において、Net Profitとドローダウンの値が許容範囲内にある戦略を探しています。.
画像9:頑健性テストの結果
上記の例では、2つの戦略に対するロバスト性の結果を確認できます。左側の戦略は許容範囲内の利益を示していますが、ドローダウンは元の結果と比較して2倍以上に増加しています。.
右側の戦略も許容範囲内の利益を出しており、ドローダウンはほとんど変わりませんでした。.
このステップでは、次のロバスト性テストの対象となる最終的な戦略を1〜3個だけ選択します。.
これら最終的な戦略は、堅牢性テスト、総合的な収益性、そしてシンプルさにおいて最良の結果を出したものから選定されています。私は戦略のルールをできる限りシンプルにしたいと考えており、また、トレードルールはある程度理にかなったものであるべきです。.
5. 第5フィルター – ウォークフォワードマトリックス・テスト
私たちに残された戦略はわずかであり、ロバスト性のための究極のテスト、すなわちウォークフォワード・マトリックス・テストを実行することができます。WFマトリックスは、異なる実行回数と実行期間を持つウォークフォワード最適化を並べた単なるマトリックスです。.
戦略がウォークフォワードマトリックス・テストを通過した場合、それはパラメータの再最適化の助けを借りて、その戦略が 多様な市場環境に適応できる さらに、リアプティマイゼーション(再最適化)を行うことで異なる多くの期間において機能することから、この戦略が特定のデータに過剰最適化(カーブフィッティング)されていないことも確認されています。.
このWFマトリックスのテストは、戦略を恒久的に再最適化すべきかどうか、また最適な再最適化期間がどれであるかも教えてくれます。.
ウォークフォワード・マトリックス・テストは、戦略ごとに個別に実行する必要があります。まず、自分の戦略をオプティマイザーに読み込み、「ウォークフォワード・マトリックス」オプションを選択します。さらに、実行ステップ数とOOSの割合も設定します。StrategyQuantは、これらすべての組み合わせを順に処理し、戦略のウォークフォワード最適化を実行します。.
画像10:ウォークフォワード・マトリックスの設定
最適化のためのパラメータの設定
最適化を意味のあるものにするためには、最適化される戦略パラメータを設定する必要があります。各戦略は異なるロジックを使用し、異なるパラメータを持っているため、それぞれ異なる方法で最適化を設定する必要があります。.
画像11:パラメータの最適化
この戦略は比較的シンプルなので、ストップロス値とトレーリングストップ係数のみを最適化します。.
すべてのパラメータを最適化する必要はありません。戦略のパフォーマンスに最も大きな影響を与えるパラメータのみで十分です。.
これでWFマトリックスの最適化を開始できます。設定、ステップ数、最適化するパラメータ、およびお使いのコンピュータの速度によっては、数時間かかる長時間のプロセスになる可能性があります。.
ウォークフォワードマトリックスの評価
最適化が完了したら、データバンク内のウォークフォワードマトリックスの結果をクリックして詳細を確認します。.
画像13:ウォークフォワード・マトリックスの結果
最終的に、この戦略はロバスト性のためのウォークフォワード・マトリックス・テストに合格しました。3Dスコアチャートを見ると、24通りの組み合わせのうち16通りが私たちの基準をクリアしています(デフォルト設定を使用)。.
この戦略は、すべての組み合わせで合格する必要はありません。私が探しているのは、ほとんどの組み合わせが合格している2×2または3×3の領域です。これが、再最適化による最良の組み合わせのグループとなります。 この場合、30%のアウトオブサンプルで10回実行した組み合わせが最良の組み合わせの一つであることがわかります。というのも、その組み合わせは、同様に合格した他の組み合わせに囲まれているからです。.
ウォークフォワード最適化のチャートを確認すると、再最適化の期間中もその戦略が収益性を維持していることがわかります。.
画像 14: ウォークフォワード最適化チャート
ウォークフォワードマトリクスは、戦略をどのくらいの頻度で再最適化すべきかという、もう一つの重要な情報も与えてくれます。
「30%」のアウトオブサンプルを含む、選択した15回の実行の組み合わせについては:

まとめ
StrategyQuantを用いた作業の全プロセスを解説したところ、そこからいくつかの興味深い新しい戦略が生まれました。.
あなた自身で試してみたり、インスピレーションを得たり、あるいは独自のアイデアでプロセスを改善し、私たちの フォーラム.
プロセスの改善案 – ロング方向とショート方向の戦略を別々に探すことを検討できます。方向ごとに独自のダイナミクスがあり、ロングとショートで異なる戦略を用いることで、より良い結果が得られる可能性があります。.
言ってません 改善者 – パフォーマンスにまだ満足していない場合、既存の戦略のより良いバリエーションを探すことを可能にする強力なツールです。.
留意してください。ポイントは、過去データ上で完璧な戦略を見つけることではありません。それは失敗の元です。なぜなら、過剰最適化された戦略は、実際の取引において必ず失敗するからです。.
私たちの目標は、異なるデータやシンボルに対して頑健な戦略を見つけることでなければならない。なぜなら、これは市場に対する真の優位性を持っていることを意味するからだ。.
SQ4の設定はどうすればよいでしょうか?新しい機能が追加されており、優れた戦略を生成するために設定をアップロードできれば素晴らしいと思います。.
ありがとうございます!!!