モンテカルロ・シミュレーションとは、乱数を使って同じ計算を何度も繰り返し、結果がどのくらいの幅でばらつくかを確かめる方法で、FXの検証では取引結果の順番を入れ替えて、最大ドローダウンがどこまで大きくなりうるかを確認するために使えます。バックテストやデモ取引で出た最大ドローダウンは、たまたまその順番で取引が並んだ結果の1つにすぎず、同じ勝ち負けと損益でも並び方が変われば値が変わります。
まずは自分の取引記録の損益を1列に並べ、表計算ソフトで順番の入れ替えと最大ドローダウンの計算を繰り返し、中央値と悪いケースの値を確認するところから始めてください。
この記事の前提:この記事に出てくる取引結果(勝ち12回・負け8回、勝ち1回あたり+15,000円・負け1回あたり-10,000円、初期資金100万円)は、計算方法を説明するために作った仮のデータです。特定の手法・EA・通貨ペアの成績ではありません。
シミュレーションは過去の取引結果を材料にした計算であり、将来の成果や損失の上限を保証するものではありません。投資助言ではなく、取引の判断はご自身の責任で行ってください。
モンテカルロ・シミュレーションとは?FXの検証で使う目的
FXの検証で使うモンテカルロ・シミュレーションは、「同じ取引結果でも、並び順しだいで途中の落ち込みがどう変わるか」を数多く試して確かめるための計算です。将来を予測する道具ではなく、手元の記録から読み取れるリスクの幅を広く見るための道具と考えてください。
乱数で何度も試して「結果の幅」を見る考え方
モンテカルロ・シミュレーションは、偶然の要素を乱数で再現し、計算を数百回~数千回と繰り返して、結果の分布(どの値がどのくらい出やすいか)を調べる方法の総称です。FXの取引記録に当てはめる場合は、「取引の順番」を偶然の要素とみなし、順番だけを入れ替えた取引の並びを何通りも作って、それぞれの最大ドローダウンを計算します。
最大ドローダウンとは、資金がそれまでの最高値からどれだけ減ったかを表すドローダウンのうち、期間中で最も大きかった下落のことです。計算は「最高値-その後の最安値」で金額を出し、最高値で割ると%になります。定義と計算例はFXのドローダウンとは?最大ドローダウンの計算方法と資金回復に必要な上昇率で詳しく説明しています。
順番を入れ替えても最終損益は変わらない
取引の順番を入れ替えるだけなら、勝ちと負けの回数も1回ごとの損益も同じなので、最後の合計損益は必ず同じになります。仮のデータでは、どう並べても15,000円×12回-10,000円×8回=+100,000円です。
変わるのは、途中でどこまで資金が減るか(最大ドローダウン)と、連敗が何回続くかです。つまり、このシミュレーションで確認できるのは「最終的にいくら残るか」ではなく、「同じ成績でも、途中でどのくらい深い落ち込みを経験しうるか」という資金の耐久性の目安です。
取引の順番で最大ドローダウンが変わる仕組み|仮のデータで比較
最大ドローダウンが順番で変わるのは、負けが連続してまとまるほど、最高値から一気に資金が減るためです。同じ12勝8敗の仮のデータを3通りに並べて比べます。
同じ12勝8敗を3通りに並べた計算例
次の表は、初期資金100万円で、勝ち+15,000円・負け-10,000円の取引20回を並べ替えたときの結果です(すべて仮のデータです)。
| 並び方 | 最終損益 | 最長の連敗 | 最大ドローダウン |
|---|---|---|---|
| 勝ちと負けを交互に近い形で並べる(負けが2回続かない) | +100,000円 | 1回 | 10,000円(約1.0%) |
| 勝ち12回が先に続き、その後に負け8回が続く | +100,000円 | 8回 | 80,000円(約6.8%) |
| 負け8回が先に続き、その後に勝ち12回が続く | +100,000円 | 8回 | 80,000円(8.0%) |
最終損益はどれも同じですが、最大ドローダウンは10,000円から80,000円まで8倍の差があります。2番目と3番目は金額が同じでも、最高値の大きさが違うため%は異なります(2番目は最高値118万円から、3番目は初期資金100万円からの下落です)。
差を生むのは「負けのまとまり方」
ドローダウンは、資金が最高値を更新すると0に戻り、そこから次の下落を測り直します。負けの間に勝ちが挟まれば、そのたびに資金が持ち直し、下落が深くなりにくくなります。反対に負けがまとまって続くと、最高値から連続して資金が減るため、最大ドローダウンが大きくなります。
実際の取引記録やバックテストの結果は、この3通りのどれでもない「たまたま起きた1通り」です。その1通りから出た最大ドローダウンだけを見ると、運よく負けが分散していた場合にはリスクを小さく見積もってしまうおそれがあります。勝率から連敗がどのくらいの確率で起こるかは、コイントス計算ツール|連勝・連敗の確率シミュレーターでも試すことができます。
表計算ソフトでモンテカルロ・シミュレーションを行う手順
順番の入れ替えと最大ドローダウンの計算は、表計算ソフトの乱数と並べ替えの機能で行えます。特別なソフトがなくても、考え方は次の流れで再現できます。
準備:取引ごとの損益を1列に並べる
最初に、検証に使う取引記録を用意し、決済した取引ごとの損益(円)を1列に並べます。あわせて、次の条件をシートの上部などに書き残しておくと、あとで結果を読み違えにくくなります。
- 記録の期間(いつからいつまでの取引か)
- 取引回数(何回分の損益を使ったか)
- 取引の条件(デモか実取引か、バックテストか、ロットは固定か)
- 計算の基準(初期資金、決済済みの残高で見るか)
乱数を使って取引の順番を入れ替える
Microsoft Excelの場合、SORTBY関数は範囲を別の配列の値に基づいて並べ替える関数で、RANDARRAY関数は乱数の配列を返す関数です。Microsoftの公式ヘルプでも、SORTBYとRANDARRAY、COUNTAを組み合わせて値のリストをランダムに並べ替える使い方が紹介されています(参考:Microsoft サポート「SORTBY 関数」)。
たとえば損益がA2~A21にある場合、別の列の先頭に次のような式を入れると、順番を入れ替えた損益の列ができます。
=SORTBY(A2:A21,RANDARRAY(COUNTA(A2:A21)))
SORTBYやRANDARRAYが使えない版の表計算ソフトでは、損益の隣の列にRAND関数(0以上1未満の乱数を返す関数)を入れ、その乱数の列を基準に並べ替える方法でも同じことができます。RAND関数などの乱数は、シートが再計算されるたびに新しい値に変わります。結果を残したいときは、値として貼り付けてから記録してください。
累積損益から最大ドローダウンを計算する
並べ替えた損益の列から、1回分の最大ドローダウンを次の順で計算します。
- 残高の列を作る(1行目は「初期資金+1回目の損益」、2行目以降は「1つ上の残高+その行の損益」)
- その時点までの最高値の列を作る(1行目は「初期資金と1行目の残高の大きい方」、2行目以降は「1つ上の最高値とその行の残高の大きい方」をMAX関数で求める)
- ドローダウンの列を作る(その行の最高値-その行の残高)
- ドローダウンの列の最大値をMAX関数で求め、これを1回分の最大ドローダウン(金額)とする
- 必要に応じて、最大ドローダウンが出た行の最高値で割り、%も計算する
同じ要領で、最長の連敗回数を数える列を足しておくと、連敗と最大ドローダウンの関係も一緒に確認できます。
繰り返して結果を一覧にする
1回分の計算ができたら、それを何度も繰り返し、最大ドローダウンの値を一覧にします。方法は主に次の2つです。
- 並べ替えから最大ドローダウンまでの列のまとまりを横にコピーし、1列のまとまりを1回分の試行として数を増やす
- 再計算(ExcelではF9キー)のたびに出た最大ドローダウンを、値として別の列へ貼り付けて記録する
繰り返す回数が少ないと、集計した中央値や悪いケースの値そのものが、試すたびに大きくぶれます。数十回で判断せず、少なくとも数百回程度は繰り返し、同じ計算をもう一度行っても値が大きく変わらないかを確かめてから読むのが安全です。
結果の読み方|中央値と悪いケースの幅を見る
シミュレーションの結果は、最大ドローダウンの「中央値」と「悪いケースの値」を分けて読みます。実際に記録された1つの値と比べると、その値が起こりやすい側なのか、運よく小さく済んだ側なのかが分かります。
集計しておきたい値
最大ドローダウンの一覧ができたら、次の値を計算しておくと全体像をつかみやすくなります。
- 中央値(MEDIAN関数):並べ替えた結果のちょうど真ん中の値。「典型的な並び」での落ち込みの目安
- 悪いケースの値(PERCENTILE.INC関数で90%や95%の位置の値):試した結果のうち、大きい側の1割や5%に入る境目の値
- 最大値:試した中で最も大きかった最大ドローダウン
- 実際の記録の最大ドローダウン:元の順番のまま計算した値
仮のデータで1,000回試した計算例
12勝8敗の仮のデータについて、順番の入れ替えを1,000回行った計算例を2回分示します。乱数を使うため、同じ条件でも実行するたびに値は少し変わります。
| 集計した値 | 1回目の1,000回 | 2回目の1,000回 |
|---|---|---|
| 最大ドローダウンの中央値 | 30,000円 | 30,000円 |
| 90%の位置の値 | 40,000円 | 40,000円 |
| 95%の位置の値 | 50,000円 | 45,000円 |
| 試した中での最大値 | 60,000円 | 70,000円 |
中央値や90%の位置の値は2回でそろっていますが、95%の位置の値や最大値は試すたびに変わっています。悪い側の端ほど、まれな並びに左右されやすいためです。なお、このデータで理論上最も悪い並びは負け8回がすべて連続する場合で、最大ドローダウンは80,000円ですが、1,000回の試行ではどちらの回にも現れていません。
この例で、実際の記録の最大ドローダウンがたまたま20,000円だったとすると、それは中央値より小さく、負けが分散していた側の結果だったと読めます。その場合、20,000円を基準に資金計画を立てると、典型的な並びでも落ち込みを小さく見積もることになります。
読み方の注意点
95%の位置の値は「100回中95回はこれ以下に収まる」と約束する値ではありません。あくまで、手元の記録を並べ替えた範囲の中での位置を示す値です。シミュレーションの最大値も、試した回数の中での最大にすぎず、起こりうる最悪の値ではありません。
結果を1回の許容損失とロットの見直しに使う
シミュレーションで分かった悪いケースの落ち込みを、資金に対する割合で受け止められるかどうかが、1回の許容損失とロットを見直す判断材料になります。
悪いケースを資金に対する割合で確認する
まず、95%の位置の値などの悪いケースの最大ドローダウンを、資金に対する割合(%)に直します。仮のデータの95%の位置の値50,000円は、初期資金100万円に対して5%です。この割合が、生活資金とは別に用意した資金の中で無理なく受け止められる水準かどうかを、取引を続ける前に確認します。
あわせて、ドローダウンからの回復には減少率より大きな上昇率が必要になる点も確認しておくと、落ち込みの重さを実感しやすくなります。
ロットを変えると最大ドローダウンも比例して変わる
ロットを固定して取引した記録なら、ロットを半分にすると1回ごとの損益も半分になり、同じ並びの最大ドローダウン(金額)も半分になります。たとえば仮のデータの95%の位置の値50,000円は、ロットを半分にした場合の計算では25,000円になります。
ただし、ロットを小さくすると利益も同じ割合で小さくなります。1回の取引で資金の何%までの損失を許容するかという考え方は、1回の取引で許容する損失は資金の何%?2%ルールの考え方と限界で整理しています。
見直すときに確認したいこと
- 悪いケースの最大ドローダウン(%)を、事前に決めた許容範囲と比べたか
- 許容範囲を超える場合、1回の許容損失やロットをどこまで下げれば収まるかを計算したか
- 見直したロットで、証拠金維持率やロスカットまでの余裕も確認したか
- シミュレーションの値を「損失の上限」ではなく「少なくともこのくらいは起こりうる目安」として扱っているか
前提と限界|将来の最大ドローダウンを示すものではない
順番を入れ替えるシミュレーションは、過去の取引結果の中身がそのまま将来も続くという前提に立った計算です。前提が崩れれば、結果の幅も当てはまらなくなります。
「各取引は独立している」という前提
順番を自由に入れ替えるのは、各取引の結果が前後の取引に左右されないと仮定しているためです。実際の相場では、値動きの大きい時期や方向感のない時期が続くことがあり、負けが特定の時期にまとまって起こる場合もあります。そうした場合、ランダムに並べ替えた結果は、現実より負けが分散した並びを多く含み、落ち込みを小さく見積もる可能性があります。
記録の数・期間が少ないと幅を正しく映せない
並べ替えに使えるのは手元にある取引結果だけです。記録の期間が短い、取引回数が少ない、特定の相場環境の取引しか含まれていない、といった場合は、記録にない大きな損失や長い連敗は計算に現れません。順番の入れ替えだけでは最終損益も変わらないため、勝率や損益の大きさそのものがずれる可能性は、この方法では確認できません。
記録に含まれないリスクがある
シミュレーションでは表せないリスク:経済指標の発表時や週末をまたぐときの急な価格変動、スプレッドの拡大、スリッページ(注文した価格と約定した価格のずれ)などで、想定した損切り額を超える損失が出ることがあります。
金融先物取引業協会は、FX取引は少額の資金で多額の取引ができるため、時として多額の損失を被る危険を伴うと注意を促しています(参考:金融先物取引業協会「FX取引を行おうとする個人投資家の皆さまへ」)。シミュレーションの結果を「将来の最大ドローダウンはこの範囲に収まる」と読まないでください。
よくある質問(FAQ)
モンテカルロ・シミュレーションをすれば、将来の最大ドローダウンが分かりますか?
分かりません。手元の取引結果の順番を入れ替えたときに起こりうる最大ドローダウンの幅を示すだけで、将来の相場で同じ結果が続くことや、損失がその範囲に収まることを保証するものではありません。
何回くらい繰り返せばよいですか?
決まった回数はありませんが、回数が少ないと中央値や悪いケースの値そのものがぶれるため、少なくとも数百回程度は繰り返すのが目安です。同じ計算をもう一度行い、値が大きく変わらないかを確認してから読むと安全です。
デモ取引の記録でもシミュレーションできますか?
できます。取引ごとの損益が1列にまとまっていれば、デモ取引でもバックテストでも同じ手順で計算できます。ただし、デモ取引と実取引では約定やスリッページの条件が異なる場合があり、記録の条件を書き残しておくことが大切です。
取引回数が少ない記録でも意味はありますか?
計算はできますが、読み取れる幅は限られます。取引回数が少ないと、記録にない大きな損失や長い連敗が計算に含まれないため、結果は参考程度にとどめ、記録が増えたら計算し直してください。
順番の入れ替えで最終損益が変わらないのはなぜですか?
勝ち負けの回数と1回ごとの損益が同じまま、並び順だけを変えているためです。足し算の順番を入れ替えても合計が変わらないのと同じで、変わるのは途中の資金の落ち込みと連敗の長さです。
まとめ
モンテカルロ・シミュレーションは、取引結果の順番を何度も入れ替えて、同じ成績でも最大ドローダウンがどのくらいの幅で変わるかを確認する方法です。実際の記録の最大ドローダウンは、たまたま起きた1通りの並びの結果にすぎません。
- 仕組み:順番を入れ替えても最終損益は同じで、変わるのは負けのまとまり方による途中の落ち込みと連敗の長さ
- 手順:損益を1列に並べ、乱数で並べ替え、残高・最高値・ドローダウンの列から最大ドローダウンを求め、数百回程度繰り返して一覧にする
- 読み方:中央値と、90%・95%の位置の値などの悪いケースを分けて見る。悪い側の端ほど試すたびにぶれる
- 活用:悪いケースを資金に対する割合で確認し、1回の許容損失やロットを見直す材料にする
- 限界:各取引が独立で、過去の結果が将来も続くという前提の計算であり、将来の成果や損失の上限を保証しない
まずは自分の取引記録の期間・条件・回数を書き出したうえで損益を1列に並べ、1回分の最大ドローダウンの計算から試してみてください。









