FX自動売買基礎と応用

モンテカルロシミュレーションを活用してバックテストから将来のドローダウンを想定する方法


バックテストでの最大ドローダウンは過去データ上で発生した損益の並びによるものであり、将来のドローダウンがどの程度になるかを想定するための材料としては根拠が弱いです。
単一のバックテストでの最大ドローダウンは偶然浅く済んだ結果だったのか、偶然深く沈み込んでしまった結果だったのかは、この時点では判断のしようがありません。

バックテストであきらかになったドローダウンを後付けで説明するのではなく、バックテスト傾向から今後起こりうるドローダウンを想定することが大切です。

モンテカルロシミュレーションを用いて「将来どの程度のドローダウンを許容しなくてはいけないのか」を考察する方法

この記事では、モンテカルロシミュレーションを用いて「将来どの程度のドローダウンを許容しなくてはいけないのか」を考察する方法を解説します。

許容しなくてはいけないドローダウンの大きさを知ることで、将来ドローダウンが発生したときにシステムの運用を継続するべきか、運用を停止するべきかが判断できます。

モンテカルロシミュレーションとは

システムの損益におけるモンテカルロシミュレーションとは、乱数を利用してシステムの損益のさまざまな出現シナリオを想定し、システムの評価やリスク管理などに活かそうとする手法です。

イメージを掴むため、先にシンプルなモンテカルロシミュレーションの手順について解説します。
まず、バックテストやリアルフォワードでサンプリングした損益データを用意します。
任意の取引回数n回分の損益を、用意した損益データからランダムサンプリングします。
ここでのランダムサンプリングはランダムな並び替えや非復元抽出ではなく、復元抽出(重複をゆるす抽出)であることに注意してください。

ランダムサンプリングして得られた取引回数nの新たな損益データが用意できます。
この工程をくり返すことで、ランダムサンプリングされた取引回数nの損益データを無数に生成できます。

例を挙げます。
下の図は取引回数100のランダムサンプリングです。

取引回数100のランダムサンプリング

次は取引回数100のランダムサンプリングを1000回くり返しすイメージ図です。

取引回数100のランダムサンプリングを1000回くり返しすイメージ図

生成した損益データからは複数(この例では1000)の評価指標(プロフィットファクター、最大ドローダウンなど)が得られます。

モンテカルロシミュレーションの狙い

生成された損益データはバックテストやリアルフォワードでは得られなかった経路の損益データです。
複数経路の損益データにはプラスの方向に偏ったものもあれば、マイナス方向に偏ったものも発生します。
システムを実際に運用するときに運悪くマイナス方向に偏る結果も起こり得るのですが、そのような事態に陥ったときに想定外の損失を発生させないよう、あらかじめモンテカルロシミュレーションを用いて「運悪くマイナス方向に偏る結果」を推定しておくことがこの分析の狙いです。

モンテカルロシミュレーションはランダムサンプリングされた結果を評価に利用するため、システムの損益が独立試行である仮定で行うこととなり、強い従属性があるシステムには適さない可能性があります。

損益の従属性について

独立試行である仮定でドローダウンのシミュレーションをすることが適さない理由について考察していきます。
独立試行とはコイントスのようなものを示します。
コイントスはそれまでの結果が何回連続で表であっても、何回連続で裏であっても、次の一回の結果は常に50%です。
このように次の結果が過去の結果の影響を受けない、確率や期待値が常に一定のものが独立試行です。

独立試行に対して従属施行はそれまでの結果が次の確率や期待値に影響を与えます。
下の図は従属性が高い損益をイメージしたものです。

従属性が高い損益をイメージしたもの

ランダムに勝ちと負けが発生する損益の傾向(独立試行)に比べて、正の従属性が高い場合は最大ドローダウンが大きくなりやすく、負の従属性が高い場合は最大ドローダウンが小さくなりやすいです。

つまり、独立試行として行うモンテカルロシミュレーションを用いて正の従属性が高いシステムの最大ドローダウンを想定すると、過小評価された結果が返ってきます。
同様に、負の従属性が高いシステムの場合は過大評価された結果が返ってきます。

従属性の有無を調べる連検定について

従属施行となっているかを評価する方法は多く存在しますが、ここでは連検定について解説します。
連検定は調査する数列が「どれくらい独立試行に近いか」その度合いを数値で示す検定です。

連検定は通常、中央値より大きい値が連続しやすいか交互に発生しやすいかを調べます。
トレードの損益に対して連検定を実施するのであれば結果が0より大きいか小さいか、つまり、トレードの結果が勝ちか負けかで区別します。

連続する勝ちトレードまたは負けトレードの一続きのまとまりを連といい以下のようにカウントしていきます。

連続する勝ちトレードまたは負けトレードの一続きのまとまり

正の従属性が高い場合は連の数が少なくなり、負の従属性が高い場合は連の数が多くなります。
独立試行であるときは、連の数の平均と分散は次の式で求められるため、そこから計算できるZスコアから「独立試行の範疇なのか、従属試行として扱うべきか。」が判断材料です。

正の従属性が高い場合は連の数が少なくなり、負の従属性が高い場合は連の数が多くなります

この例ではZスコアが±1.96より0に近いときを独立試行、+1.96以上のときを負の従属性が高い状態、-1.96以下のときは正の従属性が高い状態となるように式の値を当てはめています。
1.96という数値は統計学の標準正規分布表をもとにしています。

連検定は従属性の有無を調べているわけですが、従属試行か独立試行かをはっきりさせる手段としてはやや頼りないものです。
重要なことは、モンテカルロシミュレーションのZスコアが0となる損益をシミュレーションしていることです。
Zスコアがあまりにも低いシステムの最大ドローダウンの想定をモンテカルロシミュレーションで行えば、過小評価された最大ドローダウンが結果として返り、Zスコアがあまりにも高いシステムの最大ドローダウンの想定をモンテカルロシミュレーションで行えば、過大評価された最大ドローダウンが結果として返ってきます。
連検定によってわかるZスコアはモンテカルロシミュレーションを用いた最大ドローダウンの想定が「どれくらい信用できるものか」を測る指標のような役割でもあります。

最大ドローダウンのシミュレーション

実際のデータを使用してモンテカルロシミュレーションを実施し、検出した複数の最大ドローダウンをヒストグラムで表示させます。
ここでは、一回の抽出を100取引分として試行回数5000回のモンテカルロシミュレーションを行います。
つまり、評価したいシステムのバックテストやリアルフォワードから100取引分をランダムに抽出して新たに損益経路を生成、これを5000回くり返して合計5000の損益経路を生成します。

左のグラフは生成した5000の損益曲線を示しています。
右は5000の損益経路一つ一つから最大ドローダウンを算出してヒストグラムにしたものです。

左のグラフは生成した5000の損益曲線で、右は5000の損益経路一つ一つから最大ドローダウンを算出してヒストグラムにしたもの

生成した5000の損益経路は、損益の出方が独立であることを前提として「損益データの特性が変化しないとする場合の将来たどる可能性がある損益経路。」を想定しています。
もともと優位性がある場合は、「その優位性が維持され続けるなら、今後このようなシナリオが考えられる。」というものがモンテカルロシミュレーションの結果と捉えられます。

検出した5000の最大ドローダウンは10個にビン分割されたヒストグラムにすることで、どの程度の大きさの最大ドローダウンが発生しやすいのかを視覚的に確認できます。

検出した5000の最大ドローダウンは10個にビン分割されたヒストグラム

次にビン分割したデータの中身を確認していきましょう。

ビン分割したデータの中身

最も発生しやすい2つ目のビンが実際に検出した数値で、確率が38.04%、最大ドローダウンの大きさが16431〜27073であったことがわかります。
このシステムを運用すると100取引を行ったときに、この程度の最大ドローダウンは発生しやすいものであると想定しておく必要があると考えられます。

では、許容しなくてはいけない大きな最大ドローダウンが発生するシナリオについて考えます。
今回は許容しなくてはいけない発生確率を95%程度と考えてみます。
同じ表の5つ目に注目します。
5つ目の累積(%)は96.46となっているため、ほとんどの最大ドローダウンが5つ目までの大きさに収まっていると考えられます。

許容しなくてはいけない大きな最大ドローダウンが発生するシナリオ

6つ目以降の大きな最大ドローダウンが発生確率は5%以下なので、これを異常と判断するなら、5つ目までの最大ドローダウンの大きさは許容しなくてはいけません。
つまり、最大ドローダウンが58998までは許容し、それよりも大きなドローダウンが発生したら異常事態と考えるという運用方針ができます。

まとめ

もう一度、モンテカルロシミュレーションについて確認すると「独立試行でかつ検証データの優位性がそのまま継続していることが前提」で、異常事態(許容範囲を超えた大きな最大ドローダウンの発生)はこの前提が崩れたと考えるべきです。
システムを運用する根拠が検証データで優位性が確認できたのなら、この前提が崩れた事態は運用を停止するべき根拠となりうるのではないでしょうか。

本記事の執筆者:藍崎@システムトレーダー

               
本記事の執筆者:藍崎@システムトレーダー 経歴
藍崎@システムトレーダー個人投資家としてEA開発&システムトレード。
トレードに活かすためのデータサイエンス / 統計学 / 数理ファイナンス / 客観的なデータに基づくテクニカル分析 / 機械学習 / MQL5 / Python

EA(自動売買)を学びたい方へオススメコンテンツ

EA運用の注意点

OANDAではEA(自動売買)を稼働するプラットフォームMT4/MT5の基本的な使い方について、画像や動画付きで詳しく解説しています。MT4/MT5のインストールからEAの設定方法までを詳しく解説しているので、初心者の方でもスムーズにEA運用を始めることが可能です。またOANDAの口座をお持ちであれば、独自開発したオリジナルインジケーターを無料で利用することもできます。EA運用をお考えであれば、ぜひ口座開設をご検討ください。


本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。

この記事をシェアする

ホーム » FX自動売買基礎と応用 » モンテカルロシミュレーションを活用してバックテストから将来のドローダウンを想定する方法