いくつかのEA販売サイトでEAを探す中で、基本的な探し方が固まってきたのでまとめてみました。
よろしければご自分でEAを探す際の参考にしてください。
- バックテストの成績がフォワードテストで再現されていることを重視する
- 再現性を確認するためにはある程度の期間が必要となる
- バックテスト・フォワードテストが複利で実施されている場合はあまり参考にならない
- プロフィットファクターなどの指標を重視しすぎない
- 使用に制約がないか確認する
基本的な流れ
- フィルターをかける、あるいはキーワード(”スキャルピング”とか”ナンピン”など)を検索してふるいにかける
- 注目する項目(”プロフィットファクター”とか”利益率”など)でソートする
- 一覧の状態で表示されている内容を順に確認する
- 気になるものがあれば個別ページを開いて詳細を確認する
- バックテストとフォワードテストの成績がおおむね一致するか
- 制限事項(両建て、スプレッド、ストップレベルなど)が許容できるか
重視すること
フォワードテストでバックテストの成績が再現されているか、つまり、今後もバックテストに近い成績をあげる可能性が高いかどうかを重視します。
他人が作ったロジックの詳細がわからないEAを、調子の悪い時も我慢して長く使い続けるには何らかの心のよりどころが必要だと思います。
その心のよりどころになるものがバックテストの成績と、フォワードテストでの再現性だと思います。
単利と複利について
ここでいう「単利」とは、常に同じロット数(固定ロット)で取引することを言います。
また「複利」とは、口座残高や余剰証拠金の増減に合わせて発注するロット数も増減させることを言います。
実運用する際はどちらでも構わないと思いますが、EAの性能を確認する際には単利のほうがいいです。
というのも、だいたいの指標は金額ベースで記載、あるいは金額を元に算出されているので、ロット数の増減によって損益額が増減するとロット数が少ない取引の結果が埋もれたり、比重が下がってしまうからです。
↓は同じEAを単利と複利で実行したときのバックテスト結果です。
残高グラフを見れば、各指標の算出において後半の比重が大きくなるのがイメージできると思います。
(画像はクリックすると拡大できます)
つまり、せっかく長期間テストしても(というか長期間テストするほど)、前のほうの結果が指標に反映されないことになります。
そういうわけで、バックテストとフォワードテストは単利で実施してあるのが望ましいんですが、実際には複利で実施されたものも結構あります。
じゃあどうするかというと、テスト結果から取引履歴を抽出して、表計算ソフトを使ってPipsベースで計算しなおすという方法もありますが、完全ではないし何よりも面倒です。
なので、複利の結果は参考程度にしておいて、どうしても詳細を確認したいときだけPipsベースで計算するというのが現実的な落としどころではないでしょうか。
テスト期間について
バックテスト
EAの性能を判断するためには、おおむね「10年以上」あったほうがいいと思います。
調子のいい年もあれば悪い年もあるでしょうし、リーマンショックやコロナ過のように相場が変化する年もあるでしょうから。
また、開発する側の立場で言うと、期間が短いと過剰最適化しやすいので、仮にバックテスト時間短縮のために5年くらいの期間で開発していたとしても、最終的には10年以上の期間(というか手持ちのデータの最長期間)で確認すると思います。
なので、2~3年のバックテスト結果しか添付されていないと「わざとかな?」とか、うがった見方をしてしまいます。
フォワードテスト
たとえば期間が10年とか15年あればフォワードテストだけで性能を判断することができる気もしますが、そこまで長期間テストしているものは稀です。
したがってバックテスト結果を基準にして、それがフォワードテストで再現されていそうかどうかで性能を判断しますが、そのために必要なテスト期間は「最低3年、できれば5年以上」という感じです。
1~2年だと、たまたま調子がいいだけとか、逆にたまたま調子が悪いだけという場合があります。
そういうことは3年でも5年でもありますが、期間が長くなるにつれて“たまたま”の可能性は減っていくはずです。
指標について
プロフィットファクター
プロフィットファクターとは?
プロフィットファクターは「総利益 ÷ 総損失」で求めることができ、数値が大きいほうが「少ない損失」で「多くの利益」を生んだことを意味します。
ネット上では、良いEAの条件として「1.3以上」とか「1.5以上」などの数字を見かけますが、確実なのは「1.0」を切るとテスト期間内は損失のほうが多かった(=赤字)という事だけです。
どう使う?
一応、「1.2以上」でフィルターをかけますが、根拠はあまりないです。
しいて言えば、実運用で少し下がることを想定すると「1.1」だとちょっと心もとないかなというぐらいです。
あと、「2.0以上」あるものはナンピンしていないか説明文をよく確認します。
ちなみにナンピンがダメだというわけではなく、知見がない間は避けたほうが無難だと思っているだけです。
リカバリーファクター(リスクリターン率)
リカバリーファクター(リスクリターン率)とは?
リカバリーファクターは「総損益 ÷ 最大ドローダウン」で求めることができ、数値が大きいほうがドローダウンから回復する力が高いことを意味します。
また、リカバリーファクターはリスクリターン率とも言って、この場合は「リスク(最大ドローダウン)」に対して多くの「リターン(総損益)」を得られたいう意味になります。
なお、値を比較する際には期間を統一する必要があります。
というのも、計算に使う“総損益”をどのくらいの期間で獲得したのかによって意味合いが変わってくるからです。(たとえば最大ドローダウンが10万円の場合、総損益が1年で10万円でも、10年で10万円でもリカバリーファクターは「1」で同じです)
一般的には期間を10年として換算することが多いと思います。(1年で「1」だったら、10年換算だと10倍の「10」)
あと、期間が短い場合にはあまり信用できません。
まだ最大ドローダウンが来ていないだけの可能性が高いからです。
たとえば、下図を例にすると全体では「1」ですが、赤枠で囲った部分だけだと「18」です。
したがって、期間が10年以上の値を10年に換算するのは問題ないと思いますが、10年未満の値を換算する場合には期間が短いほど信用度が落ちると考えるのが妥当だと思います。
ネット上では、良いEAの条件として「10年で10以上」というものをよく見かけますが、確実なのは「0」を切るとテスト期間内にドローダウンを回復できていない(=赤字)ということだけです。
どう使う?
一応、「10年で5以上」でフィルターをかけますが、やっぱり根拠はないです。
ある程度、候補が絞れるかなという程度です。
実際に探した感覚で言うと、使えそうなEAの中で「10年で10以上」のものは少ない印象です。(バックテストだけなら「20以上」とか、短い期間のフォワードテストで「10以上」というのはあります)
「10年で7~8以上」あればいいほうじゃないでしょうか。
基本的には「自分が許容できる最大ドローダウン * リスクリターン率」で「期待できる損益」が決まるので、それを良しとするならいいんじゃない?という感じです。
たとえば、最大ドローダウンの許容額が30万円の場合、リスクリターン率が「10年で10」のEAだと「10年で300万円」の利益が期待できるし、「10年で5」のEAだと「10年で150万円」の利益が期待できます。
また、最大ドローダウンの許容額が1,000万円の場合、リスクリターン率が「10年で10」のEAだと「10年で1億円」の利益が期待できるし、「10年で5」のEAだと「10年で5,000万円」の利益が期待できます。
許容できる最大ドローダウン額が小さい人はリスクリターン率が高くないと満足する利益を得られないかもしれないし、逆に許容できる最大ドローダウン額が大きい人はリスクリターン率が低くても満足する利益を得られるかもしれません。
つまり、許容できる最大ドローダウン額や、期待する利益は人によって異なるので、リスクリターン率がどのくらいあればいいかというのは一概に決められないということです。
期待利得
期待利得とは?
期待利得は「総損益 ÷ 総取引数」で求めることができ、1回の取引で期待できる平均損益を意味します。
当然大きい値のほうがいいですが、取引数が多くて期待利得が低いタイプもあれば、取引数が少なくて期待利得が高いタイプもあるので、どの程度の値がいいのかは一概に言えません。
ただ、「期待利得 + フォワードテストで使用している口座の取引コスト」から「自分が使用しようと思っている口座の取引コスト」を引いた値がプラスにならないと、計算上では利益が出ないことになります。(取引コスト = スプレッド + 外付けの手数料。正確な値は見積もりにくいですが、実運用ではスリッページも考慮する必要があります)
なお、値を比較する際には取引ロット数を統一する必要があります。
というのも、計算に使う“総損益”をどのくらいの取引量で獲得したのかによって意味合いが変わってくるからです。(たとえば総損益が100万円で総取引数が100回の場合、取引量が1ロットでも、0.1ロットでも期待利得は「1万円」で同じです)
一般的には取引量をを1ロットとして換算することが多いと思います。(0.1ロットで「1万円」だったら、1ロット換算だと10倍の「10万円」)
どう使う?
Pips換算で2~3pips程度しかないものについては、バックテストのスプレッド設定や、フォワードテストを実施している口座を確認します。
そして、バックテストのスプレッドが一般的なものより狭かったり、フォワードテストで使用している口座がスプレッドの狭いものだった場合は、ちょっと使いづらいかもしれないと判断します。
実際に探してみた感覚としては、取引数が多くて期待利得が低いタイプ(スキャルピングなど)が多くて、取引数が少なくて期待利得が高いタイプ(スイングトレードなど)は少ない印象ですが、実運用で使いやすいのは後者だと思います。
前者は取引環境など、使いこなす知識と技量が必要になると思います。
注意が必要なこと
ナンピン
ナンピンとは、ポジションを持ったあとにレートが期待しないほうへ動いたとき、さらにポジションを追加することで損益分岐点を下げる手法です。
詳細は↓の記事をご覧ください。
ロマンは感じますが、常に破産のリスクが伴います。
ロジックの詳細がよくわからない以上、他人の作ったものはあまり使いたくないなというのが正直なところです。
やるなら十分に勉強、研究したうえで自作します。
マーチンゲール
マーチンゲールとは、もともとはカジノで考えられた手法で、”「負けたら次は倍掛け」というのを勝つまで続ける”というものです。
単純にFXへ適用すると”「負けたら次の取引量を倍にする」というのを勝つまで続ける”ということになると思いますが、厳密には”「負けたら、次の取引でその損失額を取り戻せるように取引量を加算する」というのを勝つまで続ける”というのが正しいと思います。
詳細は↓の記事をご覧ください。
ナンピンよりはリスクが低いと思いますが、固定ロットでやるより破産リスクが高くなるので、できれば避けたいところです。
両建て
両建てとは、ロング(買い)ポジションとショート(売り)ポジションを同時に持つことを言います。
FX業者の中には両建てを禁止しているところもあるので、両建てするEAを使う場合には注意が必要です。
スプレッド
“平均スプレッドが~pips以下の口座を推奨”など、狭いスプレッドが前提のEAもあります。
そのため、自分が使っている口座のスプレッドを確認して、場合によっては条件を満たす口座を探す必要があります。
ストップレベル
ストップレベルとは「指値/逆指値注文をするときに現在の価格から離さないといけない値幅」のことを言います。
例えばストップレベルが「5.0pips」でドル円の現在価格が「100.000円」の場合、「99.951」から「100.049」までの価格を指定することはできません。
EAの中にはストップレベルが「ゼロ」であることが前提のものもあるので注意が必要です。
タイムゾーン
タイムゾーンとは「同じ時刻を使う地域」のことを言います。
FX業界ではグリニッジ標準時(GMT)が使用されていて、日本はグリニッジ標準時で「GMT+9」というタイムゾーンに含まれます。
EAの中には、FX業者の取引サーバーのタイムゾーンを制限していたり、サマータイムによるタイムゾーンの変更をパラメータで設定する必要がある場合もあるので注意が必要です。