Helios新バージョン(4.0)のバックテスト最適化結果

この投稿文は次の言語で読めます: 日本語

ようやくバックテストが一巡終わりましたので、結果を整理したいと思います。

最終的には、実際に運用上で使用する特定のパラメータセットについての評価が必要ですが、
その特定の1本だけ見てしまうと、「木を見て森を見ず」状態に陥って、改修が意図した方向性と合致しているのか
見えなくなりそうなので、まずは最適化結果全体を俯瞰してみたいと思います。

最適化の実行条件

実施件数

最適化の実行回数: 229回
最適化内の総バックテスト件数: 4,202,807件

4,000,000件もバックテストを実施したのは個人的には初めてのことで、流石に時間がかかりました。
最適化は遺伝的アルゴリズムを使用しましたが、 4,202,807 ÷ 229 = 18,352回 。 つまり最適化を1回実行する毎に約18,000回のバックテストが実施されていたようです。

※遺伝的アルゴリズムのバックテスト件数の目安は10,000件前後のようですが、最適化中に良好なパラメータセットが発見されると、その周囲のパラメータも評価しにいくことから1回の最適化あたりの実行件数が増加することがあるようです。

最適化の実行条件

最適化の実行条件を色々変更しながら実施しました。 変数とした条件は以下の通りです。

  • 通貨ペア
  • 初期証拠金
  • 売買区分(買/売)

最適化の基準は「残高+最大利益係数(=PF値)」を使用。 途中まで、 その他の基準も使用していましたが、比較的似通った結果に落ち着いたことから
時短のためにPF値基準で最適化を行う方針に切り替えましたが、それらを含み都合229パターン実施。

EAパラメータの組み合わせ

最適化対象に含めるパラメータがかなり多く、今回は約22億パターンも存在していました。

パラメータの全組み合わせのバックテストを行うと

22億 x 229 = 約5,000億パターン の検証をしなければならないことになり、これは非現実的な規模感ですので、
これを遺伝的アルゴリズムによって 22億パターンの中から約18,000パターンのパラメータを選別し、トータルで4,202,807件のバックテストを実施したことになりました。

遺伝的アルゴリズムは、直前の最適化結果に基づいて良好な結果が得られたパラメータ付近のパラメータを検証しに行くような動きになるので、
全くの無作為に18,000件を選別しているのではなく、段階的に良い結果が出やすいパラメータ群というものを学習しながら探索的に良いパラメータを特定していくようなイメージです。

よって、最適化の最初の方はダメダメな結果が出やすく、後半は良好な結果が多くなります。

評価方法

バックテストの最適化を実施した結果の各種指標を確認します。
安定性を増すことを念頭に改修を行ってきたため、それを各指標の分布から判断したいと思います。

また安定したとしても、まともに利益の上がらない仕組みでは意味がないので、利益の分布も見ておきます。

Profit Factor(PF)

PF値 =  総利益 / 総損失 を指す指標です。

  • 1を超えていれば利益が出ており、値が大きいほど優秀なロジックである
  • しかし極端に値が高い場合、過剰にカーブフィッティングしているか、損切りを避け含み損を多く抱えるロジックの可能性あり

という視点で評価することが多いと思いますが、今回は最適化の内訳となる個々のバックテストのPF値の分布を見たいと思います。

 

ナンピン系のロジックは過剰にポジションを保有しロスカットに到達するリスクがありますが、

ロスカットに到達すれば元本割れをしていることになるのでPF値はマイナスになります。

一方でバックテストが最後まで完走すれば、多くの場合で利益が出てクローズすることになります。

つまり最適化全件の内、PF値が大きいものがより多く残る結果となれば、より多くのパラメータセットで安定するようになった ということができます。

ドローダウン(DD%)

有効証拠金( = 残高 + 未確定損益)ベースで評価した場合の最大の残高損失率(equity drawdown ratio)について評価します。

ナンピンのため、基本的に含み損を抱える前提のロジックではありますが、精神衛生上ドローダウンが極端に大きくなる局面が少ない方が有り難いです。

 

中央値で評価

各指標の評価は中央値を見ます。

中央値とは、 データを小さい順に並べていった場合にデータ個数のちょうど半分の地点にある値のことを指し、データの分布をみる際に役に立ちます。

平均値を見てしまうと、データの分布に歪があった場合、「中間付近のデータはどの辺りか?」という問に対して平均値を見てしまうと、誤った認識をしてしまう恐れがあるので中央値の方が適切かと思います。

※平均値と中央値の違いがよく分かる例として、日本人の年収が挙げられます。

日本人の民間企業の平均給与は441万円 だそうですが、
例えば年収3,000,000円の人が99人、1億円の人が1人 の100人の集団の場合、
年収の平均値: 3,970,000円
年収の中央値: 3,000,000円

ということになり、「中間付近のデータはどの辺りか?」という観点では、平均値よりも中央値の方が適切であることが分かります。

スポンサーリンク

結果(安定性)

PF 中央値

ver 3.0.0が従来運用していたEA(ブログ内で運用成績を公表していたやつ)。 今回改修したものが 4.0.188。

尚、口座通貨については前者が円建、後者がドル建での評価になっていますが、、

従来はXM(円建)で運用していましたが、 XM社は法人口座が開設できないという問題を抱えています。※厳密には日本以外で法人設立すればOK
個人口座しか開設できないということは、個人事業の雑所得としてFX収入を計上することになり、FXで利益を上げれば上げるほど税が上がる超過累進税率の影響を強く受けることになります。

この問題を避けるため、今後は法人口座が設立可能な別の証券会社での運用を検討しているのですが、その証券会社の場合は証拠金はドル建が前提だったので、新バージョンはドル建で評価をしている という背景があります。
※実際に該当証券会社へ入金してみましたが、 普通に日本円で海外送金すれば証券会社内の口座残高がドル表記されるだけだったので、運用上のハードルはありませんでした。

上記理由もあり、表の中で対比がしづらいのですが、
USDJPY, M1, 証拠金約500,000円 という基準で新旧比較すると、

画面右側にあるヒストグラムの内、上がver 3.0.0、下が4.0.188。

旧バージョンは PF値が 0.2 ~ 0.3 付近にピークがあり、 かつ 3以上の範囲に広く薄く分布しており、その結果、中央値が 0.71となっていました。
一方新バージョンは0.8 ~ 0.9 付近にピークがあり、 かつ1.5~2.0といった、現実的なラインに結果が固まる様になりました。

以前の挙動は少々リスクが強かった部分があり、ロスカットに到達する可能性が高かった部分を少し緩和できたことになり、
意図した改修が出来ていると考えられます。

 

尚、今回は網羅的に最適化を行ったため、特定の説明変数を変えた場合に挙動がどう変わるかを見ることも出来るようになりました。

例えば、USDJPY, 買, 証拠金$5000 という条件下で足をM1~M4まで変化させた場合の結果がどうだったかというと、以下の通りでした。
※MT5には、 1分足(=M1)、2分足(=M2)、3分足(=M3)、4分足(=M4)が存在します。 MT4にはありません。

少々評価が難しいのですが、「足を長くするほど安定しやすい」という感覚は概ね正しいようにみえます。

もう一つ。 証拠金を増やすと、安定度はどの程度増すのか? という疑問がありましたので、証拠金は $2,000、 $5,000、$10,000の3パターンで比較してみると・・・

ヒストグラムを見る限り、分布の形は違うものの、パッと見の有利/不利が明確に分かるような違いはないように感じました。

 

全体的な分布を見ると、$2,000よりは$5,000の方が中央値が高めに出ているので、やはり資金が多い方が安定すると言えるのだと思いますが、
$5,000と$10,000については、PF値の分布については大きな差は無いように見えます。

 

DD% 中央値

ドローダウンについても旧バージョンよりは全体的に改善できているようです。

尚、ドローダウンの中央値が100 を超えている箇所がありますが、 バックテスト時には瞬間的な含み損が証拠金を上回るような場合は
残高がマイナス表記になることもあるため、ドローダウンが100%を超えて記録されることがあります。 その結果、中央値が100以上になることはあり得ます。

※ゼロカット制度が適用される海外証券会社を選定すれば追証を回避することが出来るため、実運用でドローダウンが100%を超えるようなことは存在しませんが、
日本の証券会社の場合は追証が義務づけられている(ゼロカット制度は存在しない)のでこの限りではありません。

 

USDJPY、 買、証拠金 約500,000円で新旧比較した結果。 ※100以上は丸めて100として表記。

ドローダウンが小さめに収まるケースが多くなったのが分かります。

 

スポンサーリンク

結果(利益)

PF値が極端に良くても、ほとんどトレードせず利益も僅かで、ただ負けトレードがほぼ無い みたいなケースもありますので、
PF値が現実的な範囲で良好であり、かつ利益も見込める条件があったのかを見ておきます。

利益(Profit)とPF値の散布図を表示し、それを通貨ペアと売買区分で分割、かつ証拠金を色で分割しました。

 

  • USDJPY
    • BUYは良好な結果もありそうですが、SELLは壊滅的。 ブル/ベアの波形の違いはあるとは思いますが、恐らくはスワップマイナスの影響で SELLが不利ではないかと思われます。
    • 証拠金別の色を見ると、$2,000 よりも $5,000とした方がProfitの山が高い = 利益が伸びやすいことがわかります。が、 $10,000としてもあまり差が出ませんでした。
      これはパラメータの最適化で指定した各種変数を変化させる範囲が、十分にリスクを取る方向に設定できていなかった可能性はあると思います。
      つまり、よりリスクの高いパラメータで$10,000で運用すれば、Profitの山はもっと上昇する可能性はあるということになりますが、
      証拠金をいきなり$10,000突っ込む人の比率はかなり低いと思いますので、テストの範囲としては妥当ではないかと思っています。
  • EURUSD
    • スプレッドが狭いため、できればEURUSDは運用の候補に含めたいところです。 利益とPF値のバランスはそこそこ良い感じです。
  •  GBPUSD
    • 全体的にかなり優秀な結果に見えますが、結構な含み損を抱えながら、耐え続けた結果、最終的には利確に至った というケースも多く、
      単純にGBPUSDで運用するのがベスト とも言い切れないと思われます。 ポンドは荒れやすいので、ナンピンすると時と場合によっては激しい展開が想像されます。
  • AUDUSD
    • スプレッドの狭い方から通貨ペア選定をしましたが、結果的にUSD関連のペアばかりになってしまったので、
      あまりこの通貨ペアを検討してもリスク分散になっていないような気がしました。 結果も極めて良好というわけでもないので、優先度は低そうです。

所感

  • 最適化の序盤はデタラメなパラメータセットも含まれることを考慮すれば、全体的な結果としては比較的良い方向に改善できたのではないかと思います。
    これで理想形というつもりはありませんが、以前よりは安心して運用できる物に仕上がったと思います。
  • 今回の改修では、短期的に大量のロットを保有しないような工夫をいくつかしたことから、リスクが下がった一方で、決済までにかかる所要時間も長くなった印象です。
    これによって、マイナススワップがじわじわ積み上がっていく問題の影響を受けやすくなったのは、少々つらいところです。
  • 安定性を追求した結果、総取引ロット数が少なくて済むようになったことを受け、IB報酬が上がりづらくなってしまいました。
    良いものを作ろうと努力するほど自分の収入が上がりづらくなる・・・ というのは複雑な気分ではありますが、
    利用者の方々に継続運用してもらってこそのEAなので、今後もこの方針で改善は続けたいと思います。
  • β版で評価してくださった方からフィードバックがありましたが、「パラメータの組合わせが多すぎて理解しきれない」というご意見は正直多かったです。
    気づいたらパラメータが60個以上存在しており、、これを制御するのは至難の業だと、私自身も思いました。
    自由度が高いにしても程度の問題があるので、リリース時には変更可能なパラメータの範囲は限定的にする予定です。
    バックテストも、パラメータが多いとキリが無いですし・・・
  • 今回ブログに纏めたもの以外にも様々な指標を体系的に取得/蓄積できたので、今後、他の切り口でもテスト結果を評価してみようと思います。
スポンサーリンク

Twitterでフォローしよう

おすすめの記事