ランダムサンドボックス
本稿の目的は、MetaTraderが提供するエキスパートアドバイザー・パフォーマンスの計測、プロフィットファクターや相対ドローダウンなどに対するより良い理解を、ユーザーの皆様が得られるようにすることです。これは、EAと関連する測定をまねる、インタラクティブな"サンドボックス"を使用することで可能になります。
はじめに
エキスパートアドバイザーのパフォーマンスが実際にどの程度なのか、どうやって知ることができるでしょうか?
MetaTraderは初期設定状態でメトリックスのレンジを提供しており、トレードやバックテスト、最適化の際のEAパフォーマンスを教えてくれます。このデータはしばしば無視されるか単純に誤解されがちです。初心者トレーダーはこれらの数字を比較検討するたけの十分大きな結果を持っていないからです。トレーダーが十分なデータを生成し、適切なプロフィットファクターや許容ドローダウンとは何かを完全に理解するだけの経験を得るまで、数カ月あるいは数年を費やすかもしれません。
アドバイスを求めればすぐに見つけられるだけあるにも関わらず、人間の性か、軽視してしまい、テスト結果から自分で解釈した独自の結論に辿り着いてしまいます。残念なこと、にこれでは多くの費用がかかってしまう失敗をすることになります。本稿の目的は、ユーザーが素早く簡単かつ安全に、MetaTraderが提供するパフォーマンス・メトリックスの詳細な意味を探求することができるサンドボックスを提供することです。むやみに他人のアドバイスを聞いたり、さまざまなEAからテストデータを大量に生成するのに数カ月、数年を費やす必要はありません。
本稿にシンプルなエクセルファイルを添付しています(ページ下のZIPフォルダにあります)。即座に1000ものトレードをランダムにおこない、MetaTraderが提供するパフォーマンスメトリクスをグラフと共に表示します。これは作成されテストされた新たなエキスパートアドバイザー戦略の結果をシュミレートします。様々なキー入力パラメータを変更することができ、ランダム化したバックテストデータのシュミレートの膨大な結果を即座に生成することができます。多くのトレーダーが興味を持ち、これは使える思いそうな、とても早く簡単なインタラクティブな経験させてくれます。
データ結果の列は、自動的に新しい出力をワークシートが変わる度に生成するよう設定しています。新たなデータを生成するときは空白セルの箇所を選んで"delete"(削除)ボタンを押してください(選択したセルは変更されませんが、エクセルワークシートが更新され、新しい乱数が生成されます。)これらランダムなトレードはスタンダード・メトリックスと一緒に3つのグラフに表示されます。エクセルファイル内に3つのワークシートがあります。最初のワークシートは入力とグラフ、出力があります。2番目のワークシートはシュミレートしたトレード計算を含んでいます。3番目のシートにはトレードの予想勝率を決定するための計算が含まれています。
最初のワークシートには3つのチャートと関連するメトリックスがあります:
- 価値/負け 合計(win = 1, loss = -1)。
- 一定のロットサイズを使用した場合の利益/損失。
- 1回のトレードごとに資金に応じて設定したパーセンテージに基づいてロットサイズを調整した場合の利益/損失。
入力項目
- 初期投資金額
- ストップロス(小数単位)
- リスク:リワード率(この数値でストップロス値を掛けて利益確定までのスプレッド分を足します。)
- 固定ロットサイズ(2番目のグラフの計算に使います。)
- % トレードに投入する金額(3番目のグラフの計算に使います。)
- スプレッド(小数単位)
- £(ユーロ) 1標準ロット・ピップス単位(3番目のグラフの計算に使います。1 ロット = 100,000)
- 実行パフォーマンス(ランダムチャンスのみから予測される数値の上に、この数値パーセント分だけ人為的に勝率を増やしたもの)
出力項目
- 予想勝率パーセント(設定したストップロス:テイクプロフィット率とスプレッドを踏まえた勝率)
- 実行結果勝率パーセント(ランダム状態での実利益)
- 最大連勝数
- 最大連敗数
- プロフィットファクター(総利益/総損失)
- 相対ドローダウン(最大%ドローダウン)
- ROI %(投資リターンパーセント)
仮定事項
- 1度に1つのポジションをオープンする。
- どのトレードもストップロスかテイクプロフィットのどちらかの結果のみで、トレーリングストップは使用しません。
- すべてのトレードは同じストップロスです。
- テイクプロフィットはストップロスの2倍に設定しています。
- 勝率はストップロス:テイクプロフィットの割合とスプレッドに基づいています。ランダムに抽出しています。
- 固定スプレッド
ランダム生成データ
エクセルワークシートにおける結果の計算は、マーケットが完全にランダムに動き、トレードはそのマーケットでランダムに行われるという仮定のもとにおこなわれています(これは単純化されたものであり、マーケットの真実について言及する必要はないでしょう)。
時々トレーダーは、トレード結果は勝ちか負けのどちらかしかないから、ストップロスもテイクプロフィットも同じサイズで良いと思っています。ランダム・チャンスは50%の勝者と50%の敗者を生むものだと考えています。システムトレードの方向を単純に反転すれば負け戦略が勝ち戦略になるとすら考えています。現実はそんなに甘くはありません。
実際にマーケットがランダムなものであろうとなかろうとも、トレーダーは自分のトレードに、トレーダーに対するオッズを自動的に歪めてしまうスプレッドを払わなければなりません。そのため、勝利するか負けるかの確率は、ストップロスとテイクプロフィットがオープン値からどれだけ離れて置かれているか、これら2つの距離はスプレッドによってどれだけ歪められているか、と言ったことに基づくのです。計算はファイルにある2番目のワークシートにあります。
例えば、ストップロスは10ピップスで、テイクプロフィットも10ピップス、スプレッドは2ピップスとします。マーケットが好ましい方向へ10ピップス動き、ゲインはテイクプロフィットして10ピップスです。それからスプレッド分の2ピップスが支払われるので、結果、総利益は8ピップスになります。逆に、マーケットがトレードの意図に反して10ピップス動き、ロスはストップロスして10ピップスだとします。それからまたスプレッド分の2ピップスを支払うと、結果、総損失は12ピップスになってしまいます。両方向へマーケットが動かしたピップス比は10:10です。しかし、総利益と総損失のピップス比は8:12になります。
ストップロスで失う資金と、テイクプロフィットで得られる資金とが一致するためには、テイクプロフィットをスプレッド分をカバーできるようにほんの少しストップロスより大きくし、ストップロスは同じ分だけ小さくしてクローズするだけで良いのです。その結果ストップロスは8ピップス(10ピップスのロス)に設定し、テイクプロフィットは12ピップス(10ピップスのゲイン)に設定します。レンジ内でどこかのポイントにプライス・”ランディング”できる確率を考えると、テイクプロフィットになる確率は、1-(12/(8+12))=0.4=40%です。ストップロスになる確率は、その逆の60%になります。
3番目のワークシートの計算結果である表とチャートにはいくつかの例があります。ストップロス・テイクプロフィット比が大きいほど、予想パーセント勝率へのスプレッドの影響は小さくなります。
予想パーセント勝率はストップロス・テイクプロフィット率と関連している
予想パーセント勝率は、ストップロスとテイクプロフィットの比率で決定され、スプレッドは両者にいくらか影響を与えます。どのマーケットにおいても真実であるこの影響は変えることができるでしょう。しかし、根本のコンセプトは同じはずです。ここで、重要なポイントを2つ述べます。
- ストップロス・テイクプロフィット比率やスプレッド、それらがEA稼働中にどのトレードでも同じ影響を残すかどうかを知らないでパーセント勝率を語ることは無意味です。
- 高いパーセント勝率が必ずしも利益を得る戦略であることを意味しません。また反対に、低いパーセント勝率だからといって失敗する戦略だとも言えません。
例
画像1シナリオ1:リスクリワード比=10
画像2シナリオ2:リスクリワード比=0.1
増大するリスクの影響
良いトレードとは、どの1回のトレードでも口座資金のn%以上のリスクを絶対にとらないものだ、とよく言われています。これは普通、3~10%くらいです。なぜそうなのか、一般に説明はされないものです。確かにそうすることで、口座資金を吹き飛ばす大きなロス・トレードを防ぐことができます。おそらくもっと重要なことは、”複利計算でのロットサイズ”に驚くほど大きなインパクトを与える、ということです。
トレーダーが、”リスク”n%という言葉を使うときは、大概、ストップロスが発動した時に損失した口座資金に対するパーセントだと考えています。通常ストップロスまでの距離はトレードがオープンされる前に決めておくものですが、ロットサイズは口座資金のn%のロスになるようにピップス単位での距離を決めるように計算します。利益が増え新たなポジションをオープンするのに必要な資金が増加し、そのことでロットサイズも大きくなり、得られる期待利益も増加することになります。このようなやり方での利益は、”複利計算された”ものです(損失分もまた複利計算されることを知っておくことも当然需要です)。
3番目のチャートはこの方法の結果を示しています。チャートを見ると、システムの利益においてリスクの変更の影響が見て取れます。初期値はリスクを1%にします。
1%にリスクをセットすると、パフォーマンスは固定ロットサイズを使用した場合と、とてもよく似ています。リスクを増やしていくと潜在最大利益も増えていきます。しかし、ランダムなパフォーマンスのもとでは、大きなリスクほど、そのトレード戦略は期間の終わりを迎える前にクラッシュしてしまうことになるでしょう。これはまた、相対ドローダウンが非常に大きくなる原因にもなります。
画像3この1番目の画像は1%のリスクで設定したトレードと全く同じものです。2番目の画像は10%のリスクで設定したものです。
1%以上の%リスクを増やすと利益が上がっていますが、あるポイントを越えると、リスクを増やすほど大きな利益を得るのではなく、むしろリスクを増やすほど利益が減少していることに気が付きます。
リスク・リワード比率を変更したり、初期投資資金を増やしたりしても、この問題は解決しないでしょう。これを根本から解決するにはただ1つ、勝率を上げることだけです(ありがちな連続するたくさんの損失を減らすのです)。このようなことがあるので、入力ボックスは、"フォース・ベター・パフォーマンス"と呼ばれています。この入力値を増やすことによって、EAが予想よりもチャンスをしっかり掴むかどうかテストすることができます。
初期値は15%の改善に設定しています(もし15%でなければ、ほとんどのランダム化したトレードは、一貫して、これまで説明した予想勝率におけるスプレッドの影響のために純利益を得ることに失敗することになるからです)。しかし、トレード戦略がほとんど機能しなくなるであろうパーセント・リスクはまだ残っています。
この方法が上手くいけば、実際に使用されているEAの予想パフォーマンスの、どのパーセント・リスクでもよさそうなグラフになるパフォーマンスの向上を、より簡単に比較することができるようになるでしょう。
ランダムに(バックテスト中に)トレードをシュミレートするEA
ランダム(偶然性)の利用法はより幅広くあります。実際にバックテストにおいてランダムにトレードをおこなうEAは簡単に作成することができます。実際のEAのパフォーマンスは、このランダム・パフォーマンスと同じ期間で比べてみることができます。科学的実験が、”コントロール”テストと並んで行われるようなものと全く同じ方法です。これをまだ試験していないトレーダーは、単純にランダムなトレードをおこなうだけで得られる結果に驚くかもしれません。
この目的のために、とても簡単なEAが本稿に添付されています。名前を"Random EA"と呼びます(一番下の添付ファイルを参照してください)。このEAはバックテストと最適化の時だけに、ランダムにトレードをおこなうようにできています(このEAは実際のトレードやデモ口座でのトレード用にも作られていません)。
入力パラメータは、セットされるバーにおける、トレードが行われる確率(%)を決めます(0~100%)。1度に1つだけトレードをオープンします。1本のバーに1つだけのトレードです。トレードはバーの始値に置かれます。
ストップロスとテイクプロフィットの距離(小数値)を選択できます。これらの距離は口座が失う実際のロスと同じとみなします(そのため、スプレッドの影響も含まれているものとします)。300ポイントのテイクプロフィットは、ここでは300ポイントのストップロスとディポジット通貨単位で同じです。トレード1つ1つに使用されるランダムなストップロスとテイクプロフィットを選択することも可能です。トレード1つにつき100から1000までの値でランダム化することができます。ロングかショート・トレードをオープンする機会は同じになるように設計されています。
ロットサイズは変更することができます。固定ロットサイズか、トレードごと事前に決めておいた口座資金の割合パーセントのリスクをとる可変ロットサイズかのどちらかです。
ランダム化はあらゆるバックテストで機能するでしょう。最適化が必要な場合は、"OptimizationNumber"を選択し、最適化値を必要な数だけ入れてください。
この実際にランダムなトレードをおこなうことから、学び取れる2つの大事なことがあります。
- ストップロス・テイクプロフィット比率は、与えられたヒストリー期間において、コンスタントに利益がでるランダムなトレードを作ることができます。
ストップロス・テイクピロフィット比率を変更すること、つまり、テイクプロフィットをストップロスよりはるかに大きくするか小さくするかすると、パフォーマンス特性に多大な影響を及ぼすことになる、ということを知るでしょう。大事なことは、ランダム化したトレードの大半が利益をだすようなヒストリー期間から、このような好ましいストップロス・テイクプロフィット比率を選択することは可能だということです。例えば、テストされているヒストリー期間が主に強気相場であるならば、テイクプロフィットをストップロスよりはるかに大きく設定することによって、ユーザーは好きなように結果を歪めることができるのです。このようなケースではトレードがいつ置かれたかは問題ではありません。トレードは確かにランダムに置かれてはいます。純利益はとて良いものになっているでしょう。
このシチュエーションでは、バックテスト中のシステムの有用性に大きな影響を及ぼすのがストップロス・テイクプロフィット比率となり、トレードを選択するようなことは重要でなくなります。これが、同じテスト期間でランダムにトレードをおこない、同じストップロス・テイクプロフィット比率を使用しているEAのパフォーマンスに対して、より良いEAのパフォーマンスをテストすることが有用である理由です。
トレーダーは、EA作成のために(バックテストの結果から)利益を上げそうなインディケーターの組み合わせを作成できた時は、自画自賛したいものです。事実それは、トレードシステムにおいて最もよく”機能するもの”を生み出すストップロス・テイクプロフィットです。大きなトレンドが発生しているヒストリー期間でテスト下から生まれたのです。フラットなマーケットでこのようなシステムをテストすると、良いパフォーマンスは消えてしまいます。通貨ペアによっては、トレンドは1年、またはそれ以上長く発生することもあるので注意してください。
ランダムにトレードするEAと同じヒストリー期間で、あるEA(同じストップロス・テイクプロフィット比率とロットサイズ・ルール)のパフォーマンスをテストすると、パフォーマンスは同じようにみえます。それはあなたのトレード戦略にとって何か大切なことを伝えようとしているのかもしれません。 - ランダムなトレードは多くのトレードにとって有効である
いくつかバックテストをおこなうと、ランダムにトレードをおこなっていても、あるトレード設定で長い期間ずっと利益を出し続けているものを見つけるかもしれません。このことは、良いトレード戦略かどうか判別するのに、根拠となるトレード数が少ししかない、といことを意味していることが考えられます。ランダムにトレードするEAは、例えば300回ものトレードでコンスタントに利益を出すようにみえることもあります。しかし、次のたった50回のトレードで失敗することもあるのです。ユーザーはこのことを、トレード戦略のパフォーマンスを調べるのに有効に使ってください。
おわりに
本稿はトレードのアドバイスを提供するものではりません。単にトレード探求のためのサンドボックスを提供する目的で書かれました。ユーザーは自分自身で良いトレード戦略を描かなければいけません。
注意
- エクセル2003バージョンで書かれています。
- たまにランダムナンバー・ジェネレータはナンバーを使い果たしランダムトレードを停止します。このようなことが発生したら、エクセルファイルを一回閉じて、再度開いてみてください。
- 計算は小数第4位または第5位の値をもつ通貨ペアでシュミレートするよう設計されています(そのためドルストレート、クロス円のものには対応していません)。
- 結果のランダム性はエクセルファイルのランダムナンバー・ジェネレータと予想勝率を予測する雑な計算のクオリティにもとづいており、そのため、現実のトレード結果を完全に反映することはありません。しかし、本稿の目的は十分に達成されたと考えています。
MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/1360
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索