Strategy Tester Report(ストラテジーテスターレポート)日本語訳すると、運用試験報告。
今回はバックテスト結果であるこのストラテジーテスターレポートの見方と、それを利用した効率の良いEAのOptimize(オプティマイズ)最適化について書こうと思います。間違った解釈をしている方が多いですのできちんと抑えておきましょう。また、ここを頭に入れておくことで使えるEAと使えないEAの区別ができるようになっていただければ幸いです。ネット上で安全に使えるEAというのはなかなかお目にかかれませんよ。
これは今開発検証中の、Monkeyシリーズのポン円Verのあるテスト結果です。パラメータはすべて削除してあります。注文ロットは固定で0.1ロットです。
まずは各項目の説明です。
- Bars in test ・・・ テストをしたBarの数
- Tick modeled ・・・ テストで使用したティック数
- Modelling quality ・・・ テストで利用したティックの割合
- Mismatched charts errors ・・・ 試験時間足と測定に使用に使用した時間足データとの相違数
- Initial deposit ・・・ 初期準備額
- Total net profit ・・・ 総純損益(純利益-純損失)
- Gross profit ・・・ 純利益
- Gross loss ・・・ 純損失
- Profit factor ・・・ プロフィットファクター(総利益/総損失)
- Expected payoff ・・・ 1トレード当たりの期待損益(総純損益/総トレード数)
- Absolute drawdown ・・・ 初期投資額からのドローダウン
- Maximal drawdown ・・・ 最大ドローダウン(最大金額)
- Relative drawdown ・・・ 相対ドローダウン(最大比率)
- Total trades ・・・ 総トレード数
- Short positions (won %) ・・・ 売りトレード数(勝率)
- Long positions (won %) ・・・ 買いトレード数(勝率)
- Profit trades (% of total) ・・・ 勝ちトレード数(率)
- Loss trades (% of total) ・・・ 負けトレード数(率)
- Largest profit trade ・・・ 1トレード当たりの最大利益
- Largest loss trade ・・・ 1トレード当たりの最大損失
- Average profit trade ・・・ 勝ちトレードの平均利益
- Average loss trade ・・・ 負けトレードの平均損失
- Maximum consecutive wins ・・・ 最大連続勝ちトレード数(利益)
- Maximal consecutive losses ・・・ 最大連続負けトレード数(損失)
- Maximal consecutive profit ・・・ 最大連続利益(勝ちトレード数)
- Maximal consecutive loss ・・・ 最大連続損失(負けトレード数)
- Average consecutive wins ・・・ 平均連続勝ちトレード数
- Average consecutive loss ・・・ 平均連続負けトレード数
のようになります。とても便利ですよね。
さてここで、このテスト結果のいくつかのパラメータに注目して、EAの最適化をしていくことを考えます。
あくまで、engineeeerのやり方でもありますがまあ見て下さい。基本的に重要であるのが、
9. Profit factor ・・・ プロフィットファクター(総利益/総損失)
12. Maximal drawdown ・・・ 最大ドローダウン(最大金額)
13. Relative drawdown ・・・ 相対ドローダウン(最大比率)
14. Total trades ・・・ 総トレード数
になります。目標の目安ですが、
Profit factor は、一般的に2.0以上あれば優秀であると言われています。engineeeerもそう思います。というか、3.0やそれ以上のPFをたたき出すEAにはろくなものなありませんし、ろくな結末がありません。この辺は後で説明します。
Maximal drawdown と Relative drawdownですが、これが一番大事です。かつ、皆さんとらえ違えているところだと思います。説明します、
前者はレポート画像の①の場所にあたります。後者は②の場所にあたります。どちらも山の頂上から谷の最下点以下までの金額差になります。
ここで今、最下点以下と書きました。そうです、その通りなんです。グラフを見ると青と緑の折れ線グラフがあるのが分かりますね?青はBalance(口座残高)、緑はEquity(純資産)を表します。こう書くとわかりにくいですが、
Balance(青)は、オーダーを出しても減りません、そしてオーダーが決済されて始めて増減されます。
Equity(緑)は、オーダー時にブローカーに預ける証拠金分がすぐ引かれます、そして当然オーダーが決済されるとロスカットで無い限りもちろん証拠金は口座に戻ってきますのでその分元に戻ります。
金額差と書いたのもこの辺を分かってもらうためにあえてあいまいな言葉を使いました。
ということは・・・、私たちが最悪の事態を想定して考えなければならない、余剰証拠金の推移がグラフに出ていないのです!
テスターレポートの金額差(ドローダウン)は、余剰証拠金の高低の金額差です。
そして、なぜ Maximal drawdown と Relative drawdown が違うドローダウンの場所になっているかです。ここも捉え違えている人が多いです。金額と割合を入れ替えただけとか言っている人もいます。違いますよ^^; これは、金額と割合のどちらに注目しているかで取り扱うポイントが違うからです。
Relative drawdown は、テスト期間中に起きたドローダウンの中で、上記の割合が最大になったときのドローダウンの割合を算出しています。その括弧内の金額は、そのドローダウン額です。
グラフの横軸は決済したオーダーの順番です。その最中に他にいくつのオーダーがあって、それらがどれだけ損失を抱えているかはグラフからは分かりません。しかし、グラフには出ていなくても、数値としては Maximal drawdown と Relative drawdown として算出されているのです。EA視点で言いますと、よくあるナンピンをフル活用してマネーマネジメントしているEA(ナンピンは使い方を間違わなければ効果バツグンです。数学的に考えての話です。)は、ストラテジーのグラフで見るときれいな右肩上がりの一直線を出します。でも実際の口座内の動きは恐ろしいものです。そんなときこのRelative drawdown をチェックしてください。
もう一度話を戻します。
上の画像での、
Maximal drawdown (①) 4684.64(12.90%) は、
最大ドローダウン額=4684.64$
最大ドローダウン額/ドローダウンが起きる前の口座残高×100=最大ドローダウン率(%) ですので、
4,684.64/36,315.04×100=12.90% となります。
Relative drawdown (②) 27.86%(2876.39)は、
ドローダウン額=2876.39$
ドローダウン額/ドローダウンが起きる前の口座残高×100=ドローダウン率(%) ですので、
2876.39/10324.44×100=27.86% となります。(初期投資額より324.44$多いのは、一瞬プラス損益が出たからでしょう。)
このデータから推測しなければならないことは、このテストの注文ロットは固定で0.1ロットですので、グラフのどの位置の事象もどこでも起き得ると考えなければなりません。ですので、
最大ドローダウンがもし、EAスタート直後に起きたらどうなるかを考えなければなりません。テストの期間を①の直前からに設定してテストしてみると分かります。Relative drawdown 50% になります。スタートしていきなり口座資金が半分になります。
また、Maximal drawdown と Relative drawdown の両方が小さい数値を出しいてる場合は、初期投資額を見てみてください。グラフの縦軸の最下段は0ではありません。ストラテジーの結果で自動調節されています。
どうでしょう? 50000$とかになっていませんか?500万円ですよ?大金スタートですねぇ。それならドローダウンの値が小さくなるのは当然です。
ここまで来て初めて、投資計画を考えます。そのままのEAのパラメータで取引を行うなら、テストから算出される最大ドローダウンの十倍くらいの資金を用意しましょう。でなければ、パラメータを変更して、最大ドローダウンが小さくなるようにしましょう。小さくならなければそのEAはあなたに適していません。破産する前にしかも1銭も市場にお金をさらさずに判明してよかったですね。(有料EAならEA購入代金分は損しちゃいますけどね)
次に、総トレード数ですね。
これはですね、2つの点から考えます。
投資心理面 と 統計学的見解 です。
PFもDDもバッチリだけど、取引は1回/月程度・・・ ってどうですか?
engineeeerはイヤです。両方の見方からです。月一回の取引のために、PCを24時間フル稼働ですか?なら、ここぞとばかしの指標発表時にスキャルを一回やったほうがいいのではないでしょうか?投資という枠から外れるような気がします。でももっと納得がいかないのは、統計学的見解からのことです。
1回/月ってことは、過去5年のバックテストを行っても、60回の取引データしかないことになります。たった60回のバックテストによる統計を信じる気ですか・・・。
というわけで、engineeeerの作るEAも最低でも月20回は取引できるようにしています。なら平均1日1回は取引を見れるでしょう?
これらをTotalで見て、もう一度PF(プロフィットファクター)を考えます。すると、不思議ですね~。やっぱり年間ベースでPF3.0を超えたりすることはなかなかないです。engineeeerがまだ未熟で作れていないだけかもしれません。作れている人がいたら是非教えてください。w(教えてくれるわけはないでしょうがねw)
そして、仮に偶然ではなく作れたりしたとします。そのようなものは、engineeeerは攻略法的EAだと思っていますので、誰かに知られれば、すぐさま連鎖的に広がっていきます。そしてなんらかの対策が打たれ終焉を迎えます。最近のユロポンのようにですね。
そう、出る杭は打たれるんです。私も本職でそんな経験をいっぱいしてきました。
この研究所発のEAが将来出たとしたら、努力した私たち研究員だけで使っていきたいですね。そうできるように、アルゴリズムがばれたりしないようengineeeerは頑張ります。
Maximal drawdown は、テスト期間中に起きたドローダウンで最大の金額差になったところを指し、その金額を算出してます。その括弧内の割合は、そのドローダウンが起きる直前の余剰証拠金の最大額を100%としたときのドローダウンの割合です。
うーん、感服しました。Strategy TesterのDDの読み取り方(破綻度合いは何で判断すればよいのか)を探して市販本を読みましたが満足できずにネットでさがしていたところ、貴サイトにめぐり合えました。まさに、私の知りたかったことが実践的に説明されています。このような説明は、EAの開発者か熟練したEA運用者しかできないと感じました。
おかげさまで、やっと手持ちのEAのポートフォリオ(特に資金配分とロット設定)を納得してできます。ありがとうございました。