EAを作り始めた頃、僕がバックテストで見ていたものはかなり単純でした。
資産グラフが右肩上がりになっているか。
ほぼこれです。
10万円からスタートして、20万円、30万円と増えている。
グラフも右肩上がり。
それを見れば、
「これ、勝てるEAなんじゃないか?」
と思っていました。
でも、EAを何本も作ってバックテストを繰り返していくうちに、それだけでは全然足りないことが分かってきました。
利益は出ている。
でも、取引回数が異常に少ない。
ある期間では勝っているのに、別の期間では負ける。
勝率は高いけれど、一度の大きな損失で利益を失う。
バックテストでは良かったのに、フォワードテストでは同じ結果にならない。
見れば見るほど、
「そもそも、何をもって『勝てるEA』と判断すればいいんだ?」
という疑問が出てきました。
この記事では、僕が実際にEAを作ってバックテストとフォワードテストを続ける中で、見るようになった評価項目を整理します。
先に書いておくと、
僕自身、まだ「これを満たせば勝てるEA」と言い切れる答えを持っているわけではありません。
むしろ調べれば調べるほど、そんなに単純ではないと感じています。
最初は「右肩上がりなら勝てるEA」だと思っていた
最初にEAを作った頃、PFや最大ドローダウンを細かく分析していたわけではありません。
バックテストを実行する。
結果を見る。
資産が増えている。
まず見るのはそこでした。
当時は、とにかく稼げるEAを作りたかったので、
「このEAには統計的に十分な優位性があるのか?」
というより、
「最終的にいくらになった?」
という見方に近かったと思います。
グラフが綺麗な右肩上がりになっていると、それだけでかなり良いEAに見えました。
ところが、あるEAのバックテスト結果を詳しく見ていて気づきました。
「これ、トレード回数少なすぎない?」
結果は良い。
勝率も悪くない。
でも、そもそもほとんどトレードしていない。
条件を厳しくすれば、バックテストの見た目を良くできることがあります。
僕が試したEAでも、4時間足まで条件を絞ると勝率が良さそうに見えることがありました。
でも、エントリーポイントがほとんど来ない。
それでは、
「このロジックが本当に強いから勝っているのか、それとも数少ないトレードがたまたまうまくいっただけなのか」
分かりません。
ここから、最終利益だけではなく、バックテストの中身を見るようになりました。
取引回数|その結果をどこまで信用できるのか
今では、バックテストを見るときに取引回数を必ず確認します。
例えば、
100回取引して60回勝ったEAと、
10回取引して6回勝ったEA。
どちらも勝率は60%です。
でも、同じ60%だからといって、同じようには見られません。
後者は、あと数回の結果だけで勝率が大きく変わります。
これは僕がEAを作っていて何度もぶつかった問題でもあります。
条件を追加していくと、バックテスト結果が良くなることがあります。
「この条件も追加しよう」
「この時間帯だけにしよう」
「この時間足も一致したときだけ入ろう」
そうすると、負けるトレードを排除できる。
成績も良くなる。
でも同時に、
トレードそのものがどんどん減っていく。
最終的には、
「ものすごく成績は良いけれど、ほとんどエントリーしないEA」
ができることがあります。
だから今は、
利益が出たかだけではなく、その結果が何回のトレードから作られたものなのか
を見るようにしています。
ただし、
「○回以上なら絶対に信用できる」
という単純な線引きができるとも思っていません。
取引回数だけで優位性が証明できるわけではないからです。
それでも、数回・数十回程度の結果だけを見て「勝てるEAができた」と判断しないための重要な数字だと思っています。
勝率|高ければ勝てるわけではなかった
最初は当然、
勝率は高い方がいい
と思っていました。
今でも、同じ条件なら勝率が高い方が嬉しいです。
ただ、EAを検証する中で、
勝率だけでは利益が決まらない
ことが分かりました。
例えば、
10回トレードして9回勝つ。
かなり強そうです。
でも、
9回の利益がそれぞれ1,000円で、
残り1回の損失が2万円だったら、
トータルでは負けています。
逆に、勝率が40%しかなくても、
負けたときは小さく損切りして、勝ったときに大きく取ることができれば、最終的にはプラスになることがあります。
つまり、
勝率と、1回の利益・損失をセットで考える必要がある。
これはEAを作ってバックテストすることで、かなり実感しました。
一方で僕自身、
「高勝率で、細かく利益を積み重ねるEAを作ったらどうなるんだろう?」
という興味は今もあります。
勝率を高くすればいいわけではない。
でも、高勝率型のEAそのものがダメという話でもない。
利確幅、損切り幅、取引頻度まで含めて、最終的にどうなるのか。
これも今後検証してみたいテーマの一つです。
PF|勝率だけでは見えない収益性を見る
そこで見るようになった数字の一つが、**PF(プロフィットファクター)**です。
PFは簡単に言えば、
総利益 ÷ 総損失
で計算されます。
例えば、
総利益が150万円。
総損失が100万円。
なら、
PFは1.5です。
1.0を超えていれば、少なくともそのバックテスト上では総利益が総損失を上回っています。
PFを見ると、勝率だけでは分からなかったことが見えてきます。
勝率が低くてもPFが1を超えるEAはあります。
逆に、勝率が高くても大きな損失を抱えるEAでは、PFが悪くなることがあります。
ただ、これも、
「PFが○以上なら勝てるEA」
と単純には考えないようにしています。
取引回数が少なければ、数回の大きな利益だけでPFが良くなることもあります。
特定期間だけ非常に相性が良かった可能性もあります。
だからPFも、EAを見るための一つの材料として使っています。
最大ドローダウン|いくら増えたかだけでなく、途中でどれだけ減ったか
利益だけ見ていると見落としやすいのが、**ドローダウン(DD)**です。
最終的に資産が増えていたとしても、その途中で資金が大きく減っているEAがあります。
例えば、
10万円が最終的に30万円になった。
これだけ聞けば良い結果に見えます。
でも途中で、
10万円 → 3万円 → 30万円
だったとしたらどうでしょう。
最終結果だけを見れば3倍です。
でも実際に運用していたら、3万円になったところで、
「これ本当に大丈夫か?」
となるはずです。
資金が耐えられずに破綻する可能性もあります。
ロットを上げれば、さらに危険になります。
僕自身、FXでは何度も資金を増やしたあとに大きく失っています。
だからEAでも、
「いくら増えたか」だけではなく、「そこへ到達するまでにどれくらい資金が減ったのか」
を見る必要があると考えるようになりました。
期待値|1回トレードすると平均でいくら残るのか
研究を進めるにつれて、期待値も重要だと考えるようになりました。
かなり単純化すると、
同じ条件でトレードを何度も繰り返したとき、1回あたり平均してどれくらい利益または損失が残るのか
を見る考え方です。
勝率だけではなく、
どれくらい勝つのか。
どれくらい負けるのか。
それを全部含めて考える。
EA研究をしていると、これが重要になります。
僕が知りたいのは、
「次の1回が勝つかどうか」
ではありません。
次の1回が負けてもいい。
10回のうち6回負けてもいい。
それでも同じ条件を何百回、何千回と繰り返したときに、
最終的にプラス方向へ進む性質があるのか。
そこを調べたいからです。
特定の期間だけ勝っていないか
もう一つ気にするようになったのが、検証期間です。
バックテストで利益が出ても、
「この数年間だけたまたま相場環境が合っていたのでは?」
という問題があります。
トレンドが強い時期。
レンジが多い時期。
ボラティリティが高い時期。
低い時期。
相場環境は変わります。
だから現在の研究では、長期間まとめて利益が出たかを見るだけではなく、
期間を分けても成績が維持されるのか
を見るようになっています。
全期間では大きくプラス。
でも中身を見ると、
ある期間だけ大量に稼いでいて、それ以外では負けている。
そんなEAなら、
未来の相場環境が変わったときに同じ結果になるのか?
という不安が残ります。
僕が探したいのは、
特定の相場だけに偶然ハマったロジックではなく、環境が変わってもある程度生き残れるロジック
です。
これも、研究を続けるほど気にするようになりました。
条件を調整しすぎると「過去専用EA」ができる
バックテストには厄介なところがあります。
条件を変えて何度もテストしていると、
バックテスト結果を良くすること自体はできてしまう
からです。
この時間帯は負けるから除外。
この条件では負けるからフィルターを追加。
この数値を少し変えたらPFが上がった。
さらに変えたらもっと上がった。
これを繰り返していけば、過去の相場に対して非常に綺麗なEAができることがあります。
でも、それは、
本当に相場の優位性を見つけたのか。
それとも、
過去の値動きに答え合わせしながら条件を合わせただけなのか。
区別しなければなりません。
いわゆる**過剰最適化(オーバーフィッティング)**です。
これはAIを使ったEA開発では、特に注意しなければならないと思っています。
AIなら、修正案をいくらでも出せるからです。
バックテスト結果を見せて、
「もっと良くして」
と頼む。
またバックテストする。
悪いところを伝える。
また修正する。
これを延々と繰り返せます。
便利だからこそ、
気づかないうちに過去相場へ合わせ込んでいるだけ
という可能性があります。
僕自身、今もここはかなり警戒しています。
バックテストで勝てても、それだけでは完成ではない
そして現在、僕が一番重要だと思っているのがここです。
バックテストの結果が、フォワードテストでも再現するのか。
バックテストは、過去の相場です。
すでに答えが存在するデータを使っています。
一方、フォワードテストでは、EAを実際に動かして、これから発生する相場でどうなるのかを確認します。
僕が本当に欲しいのは、
過去に勝てたEAではなく、未来でも勝てるEAです。
当たり前の話ですが、これが難しい。
バックテストで良い結果が出ても、フォワードで同じようにならないことがあります。
だから現在は、バックテストだけでEAを完成扱いせず、実際にデモ口座などで動かして結果を見るようにしています。
でも、フォワードテストは何ヶ月やればいい?
ここで、また別の問題が出てきます。
フォワードテストをどれくらいやれば十分なのか。
1週間?
1ヶ月?
3ヶ月?
半年?
1年?
当然、長く確認した方が安心できます。
でも、
「未来でも有効だと確信できるまで何年も待つ」
となったら、EAはいつまで経っても完成しません。
しかも、その数年間で相場環境が変わる可能性もあります。
これは今の僕にも、まだ明確な答えがありません。
十分なトレード数を見るのか。
期間を見るのか。
バックテストとの乖離を見るのか。
複数の相場環境を経験するまで待つのか。
現在も検証しながら考えているところです。
この問題についても、フォワードテストのデータが蓄積した段階で改めて検証したいと思っています。
資金を増やすほど「破綻する確率」も重要になった
EA研究をさらに進めると、
「このEAは利益が出るか」
だけではなく、
「この運用方法だと、どのくらいの確率で資金がなくなるのか」
も考えるようになりました。
特に、短期間で資金を大きく増やそうとすると、この問題を無視できません。
ロットを上げれば、資金が増えるスピードは上がります。
でも当然、逆方向へ動いたときの損失も大きくなります。
そこで現在の研究では、バックテストの損益だけでなく、
目標金額への到達率と、破綻率(Ruin)
を比較するような資金シミュレーションも行っています。
これは僕自身が、
「早く稼ぎたい」
という気持ちから何度もロットを上げ、最終的に資金を失ってきたからこそ、無視できない数字でもあります。
利益を最大化するEAと、
資金を守るEAは、
必ずしも同じではありません。
今、僕がEAを見るときに確認していること
最初は、
「グラフが右肩上がりか」
だけを見ていました。
今は少なくとも、
- 最終的に利益が残っているか
- 取引回数は十分にあるか
- 勝率だけに依存していないか
- PFや期待値はプラスか
- 最大DDは許容できるか
- 特定期間だけ勝っていないか
- 条件を最適化しすぎていないか
- バックテストの結果がフォワードでも再現するか
- 資金を増やしたときの破綻リスクはどの程度か
といったところを見るようになりました。
ただし、このリストを満たせば、
「絶対に未来でも勝てる」
という意味ではありません。
むしろ、これだけ見ても未来は分からない。
そこがEA研究の難しいところだと思っています。
僕にとって「勝てるEA」とは何なのか
では今、
「勝てるEAとは何ですか?」
と聞かれたらどう答えるか。
僕が欲しいのは、
過去にあった様々な相場でも長期的に資産を残すことができて、まだ見ていない未来の相場でも、その優位性が再現するEAです。
そんなEAあるのかよ、という話ですが。
でも、結局そこを目指しています。
バックテストで100万円が1,000万円になった。
それだけでは足りません。
勝率80%。
それだけでも足りません。
PFが高い。
それだけでも足りません。
過去で確認した優位性が、未来でも再現するのか。
今の僕が一番知りたいのは、そこです。
そして厄介なのは、
未来の相場はバックテストできない
ということです。
だから、
仮説を作る。
過去で検証する。
期間を変える。
条件を変えすぎていないか確認する。
そして実際の相場で動かしてみる。
それを繰り返すしかありません。
「勝てるEA」の答えは、まだ出ていない
EAを作り始めた頃の僕は、
右肩上がりのバックテストを作ること
がゴールに近いと思っていました。
でも今は、
右肩上がりのバックテストができたところから、本当の検証が始まる
くらいに考えています。
取引回数は十分か。
別の期間でも勝つか。
偶然ではないか。
過剰最適化していないか。
実際の相場でも再現するか。
そして、資金が破綻しないか。
確認することは大量にあります。
それでも、どこまで確認すれば「未来でも勝てる」と言っていいのか。
まだ答えは出ていません。
だからZerokaLifeでは、
「PF○以上なら勝てるEA」
のように最初から答えを決めるのではなく、実際にEAを作って、バックテストして、フォワードテストして、その結果を残していきます。
次の研究では、さらに根本的なところを調べます。
そもそもFXの値動きに、機械的に利用できる優位性なんて存在するのか。
僕がこの疑問から試したのが、
Random Walk(ランダムウォーク)のEAでした。
「相場なんてランダムウォークだから予測できない」
という話が本当なら、適当に売買したEAはどうなるのか。
次の記事では、その実験についてまとめます。
