◆前回の続き
システムのパラメータNに対する総利益や総利益/最大DDの分布が提示され、
さてでは最適なパラメータ値はどれか?というところまでお話ししました。
前回の記事は→
最適パラメータを選択することは意外に難しい前回使用したグラフの中で図2を再掲しておきます。

(横軸はパラメータN、縦軸は総利益)
※画像が表示されない場合は何度かリロードしてみてください。
前回申し上げていませんでしたが、
この分布図は
1999年1月~2009年6月までのバックテストを行って出てきたものです。
この時点では
N=4、6、12、13といったあたりが最適候補でした。
◆フォワードテストでは最適候補が苦戦フォワードテストとして、2009年7月~直近までのデータを使い、
パラメータN=1~90に対する総利益の分布を見てみましょう。

(横軸はパラメータN、縦軸は総利益)
最大値はN=32のときの4157pipsで、次点はN=1のときの3912pipsです。
N=4、6、12、13といった
最適候補はフォワードテストにおいて上位10%にも入ってきません。
2009年以前と以降のNの値に対する総利益を個別に書き出すと、
N=4 12219pips(以前)→ 1549pips(以降)
N=6 9335pips(以前)→ 2556pips(以降) フォワードテスト10位
N=12 9466pips(以前)→ 1229pips(以降)
N=13 10026pips(以前)→ 1633pips(以降)
となっています。
バックテスト期間は126ヶ月、フォワードテスト期間は24ヶ月ですので
月平均の利益に直すと、
N=4 97.0pips(以前)→ 64.5pips(以降)
N=6 74.1pips(以前)→ 106.5pips(以降)
N=12 75.1pips(以前)→ 51.2pips(以降)
N=13 79.6pips(以前)→ 68.0pips(以降)
となります。
バックテスト時には最適パラメータの最有力であったN=4は、
フォワードテスト期間の平均月間利益がバックテスト時に比べ劣化している
ことがわかります。
一方、N=6は唯一平均月間利益が良化しているパラメータです。
バックテストで最有力だったN=4の平均利益は減少し、
代わりにフォワードテストで最上位に進出してきたパラメータN=32は
バックテスト時の総利益は上から32番目の平凡な成績でした。
さらに次点のN=1は68番目と悪い方の属しています。
◆全パラメータのパフォーマンス推移を追いかけるこれまで述べたようにフォワードテストの結果は
一見バラバラな傾向で、その目的を達成できていないように見えます。
しかし、それぞれのパラメータでのバックテスト、フォワードテストでの総利益をプロットすると以下のような図になります。

(横軸はバックテストの総利益、縦軸はフォワードテストの総利益)
個別のパラメータだけ追っても傾向がつかませんでしたが、
こうして全体をまとめて見てみると、バックテストの総利益とフォワードテストの総利益には一定レベルの相関があることがわかります。
従来、再現性というと、1つのパラメータ値による良いバックテスト結果が将来も再現されるかどうかを問題にしています。
これに対し、全パラメータ値の再現性(良いパラメータは良い結果に、悪いパラメータは悪い結果にという)を調べてみたのが新たな試みと言えます。
パラメータを選択してそれが将来良い成績を収めるかどうかを気にするのであれば、
同時に、選択しなかったものも将来きちんと悪い成績であるかどうかも気にするべきだと考えたのです。
そうなると1つのパラメータ値のみを追いかけるのではなく、
全パラメータ値を追いかけてみる必要があるのです。
私は上図に出てきたR2乗値を
再現性指数と呼ぶことにしました。
再現性指数は0~1の間の値で、1に近いほど再現性の高いシステムであることを意味します。
言い換えると、
1に近いほど将来の利益がそれまでのバックテストの利益の大小で予測可能だということです。
※1
R2乗は0.21で、この数値は再現性が高いのか低いのかという議論は残されています。
比較実験として「終値とN日間の移動平均のクロス売買」で同様の解析を行ったところR2乗は0.04と著しく小さい値となりました。
※2
全くの直観ですが、R2乗が0.50以上のものは相当すごいと思います。
今回の0.21も悪くない数字だと思いますが、今後さらに他の事例を増やして調査してみます。
※3
バックテストの全体の成績が芳しくないものは、再現性が高くてもダメです。
「安定して良くない」成績を出し続けるシステムだからです。
※4
総利益ではなく、(総利益/最大DD)でも同様に再現性指数を調べてみました。
R2乗は0.13となり総利益よりも小さな結果でした。
以上のことから、最適化の目的指標を総利益と定めてみます。
◆最適パラメータの選択一般に、フォワードテストを行った後で我々に用意されている道筋は
以下のようなものがあります。
1)バックテスト時に最適候補パラメータを1つに絞り、
それがフォワードテストでも傾向どおりのパフォーマンスを維持しているかどうかをチェックする。もしダメなら、その戦略自体を諦める。
2)バックテスト時に最適候補パラメータをいくつか用意し、
その中でフォワードテストをパスするものを選択する。
テストをパスしたものが複数ある場合は、
2-1)フォワードテストの成績最上位のパラメータを選択。
2-2)バックテストの成績上位のパラメータを選択。
2-3)「バックテスト+フォワードテスト」合計の成績上位のパラメータを選択。
今回は再現性指数という概念を盾として2-3)の道を選択してみます。
基本的に2)のように将来パラメータの変更を考慮に入れている場合は、
個別ではなくパラメータ全体のパフォーマンスを調べる必要があると考えています。
さて、「バックテスト+フォワードテスト」合計で考えたとき、
総利益の大きいN=4、6、13が最適候補として挙げられます。
1つだけとなると
利益が最大となるN=4が最適パラメータです。
フォワードテストでは期待ほど良い成績ではありませんでしたが、
依然総利益については最上位のパラメータですのでその再現性にかけるというのが良いと判断しました。
あるいはN=4、6、13の3つに分散して運用してもおもしろいかもしれません。
(本当にリスク分散になっているか相関をチェックする必要はありますが)
この辺の運用スタイルにはある程度自由度をもたせても問題ないでしょう。
以上長くなってしまいましたが、
1.バックテストを行う
2.パラメータによってパフォーマンスのばらつきがないことを確認
3.最適候補をいくつか選ぶ
4.フォワードテストを行う
5.バックテスト-フォワードテスト間で全パラメータの再現性を確認
6.どの指標を最適化するかを決める
7.最適パラメータを決める
という一連の手順を紹介しました。
今回の手順は、まだまだ試行段階ですのでいろいろツッコミどころもあるかと思います。ご了承ください。
◆追伸(7月11日)
ahahaさんとY102さんが別ブログで議論してますので
そちらも参考にしてみてください。
http://blog.livedoor.jp/y_102/archives/3368672.html私自身も勉強になりました。
【
FX システムトレード派はこちら】