この記事では、勝率50%のEAでも、分解モンテカルロ法でロット数を調整すればリカバリーファクターを大幅に改善させることが可能かどうかを検証し、その結果を考察します。
以下の流れでお送りしますので、是非最後までご覧ください。
- 10年間で勝率が50%程度のEAを用意します。
- ロット数を調整する方法をいくつか試します。
- リカバリーファクターがどの程度改善するか確認します。
リカバリーファクターとは
リカバリーファクターは、EA(Expert Advisor)のバックテストで使用される指標でトレード戦略のパフォーマンスを評価するための指標の一つです。獲得した利益とドローダウン(一時的な損失)の比率を示しており、計算式は以下の通りです。
勝率50%のEA(ベースモデル)
まずは、勝率が50%程度のEAを用意します。
トレード戦略
このEA(ベースモデル)のトレード戦略は以下の通りです。(非ナンピン型EAです。)
- MAとDMIというテクニカル指標を使って売買タイミングを判定します。
- 利確幅とロスカット幅はATRを基準に定めます。
- 利確幅とロスカット幅はほぼ同じにしていますが、勝率50%でも損益がプラスになるように少しだけ利確幅のほうが大きくなるように設定しています。
- buyポジションおよびsellポジションそれぞれで同時に最大4つまでポジションをとりますが、それぞれのポジションは独立に利確とロスカットを行います。(ナンピンではなく、4つのトレード戦略が並行して稼働するイメージです。)
このベースモデルのパフォーマンスは以下の通りです。
バックテスト設定
銘柄: | GBPJPY | |||||||||||
期間: | 10年間 (2013.01.01 – 2022.12.31) | |||||||||||
通貨: | JPY | |||||||||||
初期証拠金: | 100万円 | |||||||||||
ロット数: | 0.01固定 |
バックテスト結果
パフォーマンス分析
- 10年間で総損益は106,345円です。証拠金最大ドローダウンは93,373円です。
- 取引数は6,154回、勝率は50.34%です。
- プロフィットファクターは1.04、リカバリーファクターは1.14です。
グラフをご覧になって視覚的に分かるように、10年間で勝率が約50%ですので、勝ち続ける時期もあれば負け続ける時期もあり、期間の切り取り方によってはパフォーマンスが50%以下になってしまうこともあると思います。このグラフ形状をロット数調整だけで可能な限り良いものにしてみようというのが今回の試みです。
ロット数の設定
ベースモデルでは、ロット数は0.01で固定とします。つまり、バックテストでは取引数が6,154となっていますが、この全ての取引はロット数0.01で行われた結果です。
以降の戦略では、このロット数の設定部分のみを変更してバックテスト結果がどのように変わるのかを検証していきます。
マーチンゲール法の導入(ロット数制限なし)
まずは、ロット数設定にマーチンゲール法を導入することについて検証します。
ここでは、1つのエントリーは必ず利確またはロスカットのどちらかになり、利確することを勝ち、ロスカットすることを負け、と捉えてマーチンゲール法を適用します。
ロット数決定ルールの確認
負けたらロット数を2倍にするマーチンゲール法では、連続してロスカットが発生するたびにポジションサイズ(ロット数)を2倍に増やします。最初のロット数が0.01の場合、以下のようなシナリオが考えられます。
- 1回目:ロット数 0.01(ロスカット)
- 2回目:ロット数 0.02(ロスカット)
- 3回目:ロット数 0.04(ロスカット)
- 4回目:ロット数 0.08(ロスカット)
- 5回目:ロット数 0.16(ロスカット)
- 6回目:ロット数 0.32(利確)
この例では、6回目のトレードで利確するまでに5回連続でロスカットが発生しています。負け取引の総ロット数は0.31です。しかし、6回目のロット数が0.32ですので、利確した場合はそれまでのロスカットによる損失を取り戻し、ロット数0.01に相当する利益を上げることができます。
また、実際に確かめてみると分かりますが、何回目のトレードで勝ち(利確)になったとしても、最終的な利益はロット数0.01に相当します。以上が、マーチン倍率が2倍のマーチンゲール法の例です。
なお、一度利確をしたら、その次のトレードは0.01から再び始めるのがルールです。連敗し続ければ無限にロット数が増え続けて行くのでリスクが高いですが、まずはロット数の制限は設けずに検証することにします。
バックテスト設定
銘柄: | GBPJPY | |||||||||||
期間: | 10年間 (2013.01.01 – 2022.12.31) | |||||||||||
通貨: | JPY | |||||||||||
初期証拠金: | 1億円 | |||||||||||
ロット数: | マーチンゲール法(ロット数制限なし) |
バックテスト結果
パフォーマンス分析
- 10年間で総損益は1,891,290円です。証拠金最大ドローダウンは2,329,485円です。
- 取引数は6,154回、勝率は50.34%です。(ベースモデルと全く同じ)
- プロフィットファクターは1.13、リカバリーファクターは0.81です。
10年間で189万円の利益が上げられるのですが、最大ドローダウンは232万円ということで、リカバリーファクターが1を下回ってしまっています。これはつまり、利益の絶対額は大きくなっていますが、破綻しないために必要な証拠金の額も大きくなって資金効率が悪くなっているということです。
また、ここで確認しておいていただきたいのが、取引数と勝率が先のベースモデルと全く同じになっていることです。取引タイミングは全く同じでもロット数の戦略を変えるだけで結果が大きく異なってくるということがよく分かるかと思います。
なお、このようなグラフはマーチンゲール法を取り入れているEAではよくある形状です。無限に資金があれば必ず損失を取り返すという戦略なので、このような右肩上がりの損益グラフになりやすいです。
マーチンゲール法の導入(ロット数制限あり)
続いて、マーチンゲール法にロット数制限を加えたモデルで検討してみます。
バックテスト設定
銘柄: | GBPJPY | |||||||||||
期間: | 10年間 (2013.01.01 – 2022.12.31) | |||||||||||
通貨: | JPY | |||||||||||
初期証拠金: | 100万円 | |||||||||||
ロット数: | マーチンゲール法(最大ロット数 0.30) |
ここでは初期証拠金は100万円に戻して、最大ロット数は0.30とします。
バックテスト結果
パフォーマンス分析
- 10年間で総損益は152,477円です。証拠金最大ドローダウンは273,116円です。
- 取引数は6,154回、勝率は50.34%です。(ベースモデルと全く同じ)
- プロフィットファクターは1.02、リカバリーファクターは0.56です。
ロット数制限を設けたことで、利益もドローダウンも10分の1程度になっています。ただし、リカバリーファクターはさらに悪化してしまいました。最大ロット数の制限を0.30(5連敗)と設定したところがそこまで効果的に機能していないことが分かります。勝率50%でも、5連敗くらいはわりと頻繁に起きるという結果でしょう。
確率を計算してみると、50%(1/2)の負けを5回連続引くということで3%程度ですが、6,000回も取引していれば180回は起こる頻度なので、そんなにレアな印象は受けません。
以上、マーチンゲール法でリカバリーファクターを向上させるのはなかなか難しいことが分かりました。
分解モンテカルロ法の導入(ロット数制限あり)
続いて、分解モンテカルロ法について検証します。
EAに適用するということを意識した上で、この分解モンテカルロ法の特徴を簡単にまとめると以下の通りです。
- 数列がリセットされると最終的な収支はプラスになる。
- ロット数の増大が緩やかで、損失は時間をかけて緩やかに回収する。
- 以上より、リスクを軽減させたマーチンゲール法の改良版ともいえる。
ロット数決定ルールの確認
数列のルール
- 初めに[0, 1]という数列を準備する。
- 数列の左端と右端を足し合わせた数だけ賭ける。(最初は0+1=1)
- 負けた場合:賭け金額を数列の右端に加える
- 勝った場合:数列の一番右端と一番左端を消す
- 数列が完全に消えた場合は、数列をリセット。数列は[0, 1]から再びスタートする。
- 数列が1つ残った場合は、数字をなるべく均等に分解する。数列は、分解した2つの数字を並べた数列を使用する。
例:数字分解時は、小さい数字を左に、大きい数字を右に書く。
「5→[2, 3]」、「8→[4, 4]」、「11→[5, 6]」
ロット数決定ルール
上記数列のルールから導出された賭ける数値の0.01倍のロット数をトレードに使用します。
ルールに従い、3回負けて、1回勝ち、4回負けて、4回勝った場合のロット数を計算してみましょう。(少し長いですが具体例で見た方がルールがわかりやすいのでお付き合いください。)
- 1回目
- 数列:[0, 1](最初の数列)
- ロット数:0.01(0+1=1)
- 結果:ロスカット
- 2回目
- 数列:[0, 1, 1] (前回負けたので1を右端に追加)
- ロット数:0.01(0+1=1)
- 結果:ロスカット
- 3回目
- 数列:[0, 1, 1, 1] (前回負けたので1を右端に追加)
- ロット数:0.01(0+1=1)
- 結果:ロスカット
- 4回目
- 数列:[0, 1, 1, 1, 1] (前回負けたので1を右端に追加)
- ロット数:0.01(0+1=1)
- 結果:利確
- 5回目
- 数列:[1, 1, 1] (前回勝ったので左端と右端の数字を消す)
- ロット数:0.02(1+1=2)
- 結果:ロスカット
- 6回目
- 数列:[1, 1, 1, 2] (前回負けたので2を右端に追加)
- ロット数:0.03(1+2=3)
- 結果:ロスカット
- 7回目
- 数列:[1, 1, 1, 2, 3] (前回負けたので3を右端に追加)
- ロット数:0.04(1+3=4)
- 結果:ロスカット
- 8回目
- 数列:[1, 1, 1, 2, 3, 4] (前回負けたので4を右端に追加)
- ロット数:0.05(1+4=5)
- 結果:ロスカット
- 9回目
- 数列:[1, 1, 1, 2, 3, 4, 5] (前回負けたので5を右端に追加)
- ロット数:0.06(1+5=6)
- 結果:利確
- 10回目
- 数列:[1, 1, 2, 3, 4] (前回勝ったので左端と右端の数字を消す)
- ロット数:0.05(1+4=5)
- 結果:利確
- 11回目
- 数列:[1, 2, 3] (前回勝ったので左端と右端の数字を消す)
- ロット数:0.04(1+3=4)
- 結果:利確
- 12回目
- 数列:[2] (前回勝ったので左端と右端の数字を消す)
- 数列:[1, 1](数字が1つになったので2を分解)
- ロット数:0.02(1+1=2)
- 結果:利確(数字が全て消えたので終了)
改めて、表形式で結果をまとめると以下の通りです。
回目 | 数列 | ロット数 | 結果 |
---|---|---|---|
1 | [0, 1] | 0.01 | ロスカット |
2 | [0, 1, 1] | 0.01 | ロスカット |
3 | [0, 1, 1, 1] | 0.01 | ロスカット |
4 | [0, 1, 1, 1, 1] | 0.01 | 利確 |
5 | [1, 1, 1] | 0.02 | ロスカット |
6 | [1, 1, 1, 2] | 0.03 | ロスカット |
7 | [1, 1, 1, 2, 3] | 0.04 | ロスカット |
8 | [1, 1, 1, 2, 3, 4] | 0.05 | ロスカット |
9 | [1, 1, 1, 2, 3, 4, 5] | 0.06 | 利確 |
10 | [1, 1, 2, 3, 4] | 0.05 | 利確 |
11 | [1, 2, 3] | 0.04 | 利確 |
12 | [1, 1] | 0.02 | 利確 |
以上より、ロスカットの総ロット数は0.17で、利確の総ロット数は0.18です。つまり、最終的にロット数0.01の利益を確保してそのセットを終了することが可能ということです。
一連の流れでは、負けてもロット数が増えない、または0.01ずつしか増えてないということがわかります。マーチンゲール法であれば倍々にロット数が増えるところ、分解モンテカルロ法ではロット数の増加が緩やかです。また、マーチンゲール法であれば1回の勝ちで1セットが終了するところ、分解モンテカルロ法の場合は5回勝ってようやく1セット終了という形で、損失を回収する過程も緩やかです。
バックテスト設定
銘柄: | GBPJPY | |||||||||||
期間: | 10年間 (2013.01.01 – 2022.12.31) | |||||||||||
通貨: | JPY | |||||||||||
初期証拠金: | 100万円 | |||||||||||
ロット数: | 分解モンテカルロ法(最大ロット数 0.30) |
バックテスト結果
パフォーマンス分析
- 10年間で総損益は783,670円です。証拠金最大ドローダウンは239,494円です。
- 取引数は6,154回、勝率は50.34%です。(ベースモデルと全く同じ)
- プロフィットファクターは1.14、リカバリーファクターは3.27です。
リカバリーファクターがベースモデルの3倍程度に向上しています。グラフの形状も視覚的にもわかりやすい感じに右肩上がりで、大きなドローダウンも少なくなっていることが見て取れます。
まとめ
この記事では、全部で4つのEAのバックテスト結果をご紹介しましたが、いずれも取引数が6,154回、勝率が50.34%と全く同じであったという点に改めてご注目ください。
つまり、4つのEAが全て同じタイミングでエントリーを行い、同じタイミングで利確またはロスカットを行っていて、勝ち負けも同じ、違いは、毎回のエントリーでどのようなロット数を選択するか、というポイントのみです。
改めて4つのEAのロット数決定に関する戦略はそれぞれ以下の通りです。
- 常に0.01固定
- 前の取引でロスカットしたら2倍、利確したら0.01に戻る。ロット数の制限なし。
- 前の取引でロスカットしたら2倍、利確したら0.01に戻る。ただし、次のロット数が0.30を超える場合は0.01に戻る。
- 勝敗に応じて導出される数列に従いロット数を決定する。ただし、次のロット数が0.30を超える場合は0.01に戻る。
以上の4つのモデルのバックテスト結果を確認したところ、最後にご紹介した分解モンテカルロ法がリカバリーファクターを最も向上させることが確認出来ました。
10年間で取引数は6,154回、プロフィットファクターは1.14、リカバリーファクターは3.27ということで、EAのバックテストとしても悪くない結果となっています。
EAのダウンロード
分解モンテカルロ法を取り入れたEAは以下からダウンロード可能です。是非ご自身でもバックテストを試してみてください。