fc2ブログ
  1. Top » 
  2. システムの評価 » 
  3. フォワードテストと再現性指数

フォワードテストと再現性指数

◆前回の続き

システムのパラメータNに対する総利益や総利益/最大DDの分布が提示され、
さてでは最適なパラメータ値はどれか?というところまでお話ししました。

前回の記事は→最適パラメータを選択することは意外に難しい

前回使用したグラフの中で図2を再掲しておきます。
FXシステムトレード研究
  (横軸はパラメータN、縦軸は総利益)


※画像が表示されない場合は何度かリロードしてみてください。


前回申し上げていませんでしたが、
この分布図は1999年1月~2009年6月までのバックテストを行って出てきたものです。
この時点ではN=4、6、12、13といったあたりが最適候補でした。



◆フォワードテストでは最適候補が苦戦

フォワードテストとして、2009年7月~直近までのデータを使い、
パラメータN=1~90に対する総利益の分布を見てみましょう。
FXシステムトレード研究
  (横軸はパラメータ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番目と悪い方の属しています。


◆全パラメータのパフォーマンス推移を追いかける

これまで述べたようにフォワードテストの結果は
一見バラバラな傾向で、その目的を達成できていないように見えます。


しかし、それぞれのパラメータでのバックテスト、フォワードテストでの総利益をプロットすると以下のような図になります。

FXシステムトレード研究
  (横軸はバックテストの総利益、縦軸はフォワードテストの総利益)


個別のパラメータだけ追っても傾向がつかませんでしたが、
こうして全体をまとめて見てみると、バックテストの総利益とフォワードテストの総利益には一定レベルの相関があることがわかります。


従来、再現性というと、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 システムトレード派はこちら


Comment

うーーーーーん

かなり考えさせられる記事ですね。

まず、単純に図5はショックでした。シストレの厳しい現実を目の当たりにしました。

>選択しなかったものも将来きちんと悪い成績であるかどうかも気にするべきだと考えたのです。

たしかにそうでしょうね。そもそもパラメーターに依存したくなければ、ロジックの中核部分に確かな優位性がなければならないところ、検証時期によってパラメーターの優良候補が大きく入れ替わるということは、ロジックの中核部分が怪しいことになってしまいますからね。

>あるいはN=4、6、13の3つに分散して運用してもおもしろいかもしれません。

「全パラメーター値の再現性」が高いロジックほど、優良パラメーター候補間での相関性も高く、リスクヘッジにはなりにくいと思います。実際、私も、同一ロジックで優良パラメーター候補間でのポートフォリオを組むことがありますが、勝つときは一斉に勝ち、負けるときは一斉に負けてしまい、「どこがリスクヘッジなんだろう」と首をかしげています。

ただ、それでも一つのパラメーターだけで単独で運用するよりは、パフォーマンスはわずかながら向上するようです。それは、パラメーターが少しずれることによって、エントリーのタイミングが少しずつずれ、それが不思議なことに功を奏しているのです。

この点については、以下のfaiさんの記事にも共通認識を見出せそうな気がします。

http://d.hatena.ne.jp/fai_fx/20101126/1290701203

いやー、それにしても、読みごたえのある記事でした。

  • takechan [#-] |
  • URL |
  • 2011 06/24 (Fri) 22:58
いつもためになる記事に感謝です

初めまして、umigame1975と申します。コメントは初めてですが、いつもとても勉強になる記事で、半年くらい前から欠かさず拝読しています(過去記事もすべて読ませていただきました)。ありがとうございます。一度はお礼を申し上げないとと考えていたところです。

今回の『再現性指数』もたいへん興味深い指標だと思います。ただ、少し気になったのは、最適パラメータの選択と再現性指数との直接的な関連が今一つしっくりきませんでした。再現性指数は、結局、そのシステム総体として、バックテスト→フォワードテストの再現性がどの程度かということを示している指標であるように感じられます。

>※1
R2乗は0.21で、この数値は再現性が高いのか低いのかという議論は残されています。
比較実験として「終値とN日間の移動平均のクロス売買」で同様の解析を行ったところR2乗は0.04と著しく小さい値となりました。

再現性指数は、上のように、異なるシステム間の将来の再現性を比較するのに有効なツールとなり得るように感じますが、最適パラメータの選択には他にもいろいろ考えるべきことがあるように思います。

初めてのコメントで、偉そうなことを書きつづってしまいましたm(__)m。私もちょうど今、取り組んでいるシステムで最適パラメータの選択に悩んでいたものですから(^^;)。

システムのロジックは別にして、とりあえず今は『いわゆるプロフィットスパイクを伴う総利益極大化でなく、パラメータを動かしていってなだらかな高原状態になる部分』を最適パラメータ選択の1つの条件としています。言い方を変えると、そういう高原状態にならない場合はシステムの設計自体を考え直す、という方向です。これを定性的でなく定量的な指標にでもできるといいのですが難しそうです(^^;)。

  • umigame1975 [#Jy9Pezm2] |
  • URL |
  • 2011 06/25 (Sat) 18:17
  • Edit
驚きました。

貴重な記事ですね。ありがたいです。
統計をこのような形で利用できるんですね。
ちょっとチャレンジしてみようかと思います。

  • さとしぃ [#-] |
  • URL |
  • 2011 06/25 (Sat) 18:54
Re:うーーーーーん

> takechanさん

> 優良パラメーター候補間での相関性も高く、リスクヘッジにはなりにくいと思います。

きちんと調べてはいないのですが相関は高いでしょうね。
そうなると一点突破でN=4のみとした方がいいのかもしれないです。

  • Phai [#qbIq4rIg] |
  • URL |
  • 2011 06/25 (Sat) 20:52
  • Edit
Re:いつもためになる記事に感謝です

> umigame1975さん

はじめまして、Phaiです。

> 最適パラメータの選択と再現性指数との直接的な関連が今一つしっくりきませんでした。

最適パラメータは何を最適化したものかという問題があります。
総利益か(総利益/最大DD)のどちらに注目すべきかという際に、再現性指数が大きかった総利益を最大化するパラメータを最適パラメータとしました。

ご指摘にように、定量化ということが一番重要で、
いままで定性的に語られてきた部分を定量的にやろうとしているわけです。

でもまだ問題点もあることは確かです。


>『いわゆるプロフィットスパイクを伴う総利益極大化でなく、
> パラメータを動かしていってなだらかな高原状態になる部分』を最適パラメータ選択の1つの条件

そうなんです。
教科書にはそう書いてあるのですが、
現実的にそんな条件はなかなか整わないですよね。
それはシステム設計に問題があるのか、それとも高原状態という仮説に無理があるのか・・
と考えていたところです。

  • Phai [#qbIq4rIg] |
  • URL |
  • 2011 06/25 (Sat) 20:55
  • Edit
Re:驚きました。

> さとしぃさん

お久しぶりです。
再現性指数、ぜひ試してみてください。
うまくいったらご報告くださいね。

  • Phai [#qbIq4rIg] |
  • URL |
  • 2011 06/25 (Sat) 20:59
  • Edit
期間を区切ったバックテストは?

いつも楽しみに拝見しています。

今回の件、詳しい内容は承知していませんが、バックテストとフォワードが一致しない理由に試行回数の違いがあるのではないかと思いました。

以前、Phai様はバックテストで1000回程度の試行回数がないとシミュレーション結果が安定しないとコメントされていたと思いますが、今回のケースでいえば、フォワードテストについてもそれが当てはまるのではないかと...

つまり、2年のフォワード期間では十分な試行回数が得られないためバックテストほど成績が安定しなかったのではないか? と考えれば良いのではないかと思います。

今回、2年のフォワードで思う結果が得られなかった理由は、戦略の巧拙によるものではなく、おそらく試行回数が足りないことによるのだと思いますが、そうであれば、選んだパラメータ何れにおいてもプラスになっているので、それでよしと判断すれば良いのではないかと思います。


ちなみに、当方バックテストするときは(スキャルピングなので十分な試行回数が確保できるという違いはありますが)、数ヶ月の移動平均を取り成績の安定性を確認したり、似たアセットクラスで同じストラテジーを試して有効性を確認したりした上で実践投入しています。

今回のケースでいえば、例えば2年毎のバックテスト結果を踏まえた最適パラメータを選べば、結果は異なったかもしれないと思ったりしました。
2年では最適パラメータが選べないと言うことであれば、フォワードテスト期間も2年では足りないと言うことだろうと思います。ちなみにその場合、実践でも2年では結果がでないということになろうと思います....


つらつらとすみません。
何が申し上げたかったかと言うと、フォワードテストなり実践で結果を評価しようと思えば、それなりの試行回数を経てから出なければならないのではないかと思ったのです。

  • コバンザメ [#z5OccHQI] |
  • URL |
  • 2011 06/26 (Sun) 09:18
  • Edit
Re:期間を区切ったバックテストは?

> コバンザメさん

Phaiです。
返事が遅れてすみません。

2年間では再現性が期待できるほど十分なトレード数が確保されていない。だから2年間のフォワードテストで成績が安定しないのだ

というご指摘はその通りだと思います。

個別のパラメータを追いかけてもよくわからなかったのですが、全パラメータの動きを見た結果、良い傾向が続いているということを確認できました。
これなら2年間でも十分ではないかと思ったのです。
なぜなら再現性指数は(2年間×全パラメータ)とかなりのデータ数の上に計算される数値だからです。

フォワードテスト後にパラメータN=4をなおも最適と位置づけたのは、全パラメータの動きを見た上でのことで、N=4(個別)の2年間のフォワードテスト結果をそんなに重視していないということです。

  • Phai [#qbIq4rIg] |
  • URL |
  • 2011 06/28 (Tue) 10:25
  • Edit
ご返事有難うございます

Phai様

ご返事有難うございます。

パラメータ依存度が低そうなストラテジーでも十分な試行回数が稼げなければ成績は安定しないこともある、という教訓をお示し頂いたと当方では(勝手に)解釈しました。

当方で現在開発途中の先物日足ストラテジーにおいてもこの辺の教訓を活かしてブラッシュアップしていきたいと思っています。
日足シグナルの方向に日中複数回逆張りで取引したほうが成績が早く安定するのかもしれませんね。

  • コバンザメ [#z5OccHQI] |
  • URL |
  • 2011 06/28 (Tue) 17:36
  • Edit
思いつかなかった!!

Phai様

かなり遅コメですが、この記事をず~っと眺めてやっと理解できました。。。

「再現性指数」の考え方面白いですね!
ウォークフォワード分析してるとき、本当にバックテスト時のパラメータとフォワード期間のパラメータに相関関係があるんだろうかと疑問に思った事があったのですが、これだと定量的&客観的に判断できますね!!

ところで、もうひとつ私の中でモヤモヤしてるものがあって、それはバックテスト期間とフォワード期間の適正な期間はカーブフィッティングの元にならないのだろうかというものです。

そこでお伺いしたいのですが、今回はどうやってバックテスト期間とフォワード期間を決めたのでしょうか?

#ちなみに、Chrome話ですが、前回記事に載せてたChromeのバージョンでも、画像でないのが発生しましたが、リロード繰り返すと表示できました!




  • ahaha_fxtrader [#-] |
  • URL |
  • 2011 07/02 (Sat) 04:22
Re:思いつかなかった!!

> あははさん

> どうやってバックテスト期間とフォワード期間を決めたのでしょうか?

フォワードテスト期間はバックテスト期間よりも短くなるようにしました。

フォワードテスト期間がバックテスト期間よりも長いと、
バックテストに使用したデータがそれ以上の情報量を持つフォワードテスト期間の振る舞いを予測するという形になってしまいそれが気持ち悪かったからです。

フォワードテスト期間2年、3年とかはけっこう適当にやってます。
フォワードテスト期間に対する最適パラメータの依存度も調べる必要があるかもしれません。

あとこの再現性指数の考え方を利用して1ヶ月ごとに最適パラメータをどんどん更新する適応型システムといったようなこともおもしろいかもしれません。この辺りはfaiさんやahahaさんの方がすでに似たようなことを試されていることでしょう。

http://d.hatena.ne.jp/fai_fx/20110401/1301592612

  • Phai [#qbIq4rIg] |
  • URL |
  • 2011 07/03 (Sun) 17:13
  • Edit
Re: Re:思いつかなかった!!

Phai様

返信ありがとうございます!
#遅レスすみません!

フォワード期間の決定は裁量的にされてたんですね~

紹介いただいたURLは既に見てましたが、1つのテーマでもいろんな考え方があるはずなので、いろんな考え方を知りたかったという次第です。

また続きの記事を楽しみにしてます!

  • ahaha_fxtrader [#-] |
  • URL |
  • 2011 07/06 (Wed) 18:35
「再現性指数」について別ブログでコメントのやりとりしました

Phai様

あははです。

本記事の「再現性指数」について、別ブログで本人不在なままコメントのやりとりをしたので、念のため報告です。

●該当ブログ記事
http://blog.livedoor.jp/y_102/archives/3368672.html

#Phai様にその旨を伝える事が目的のコメントですので、本コメントは否認していただいて結構です。

  • ahaha_fxtrader [#-] |
  • URL |
  • 2011 07/11 (Mon) 01:13
初めまして。

勝手に引用してしまって申し訳ありません。単なる自己解釈ですので、大目に見てやってください^^;

  • Y102 [#-] |
  • URL |
  • 2011 07/12 (Tue) 01:27
Re:初めまして。

> Y102さん

はじめまして、Phaiです。
引用の件、全然問題なしです。
また、わかりやすく解説していただきありがとうございます。
作った本人も「どうなんだろ、これ?」っていう状態ですので、まだまだこれからの概念です。

  • Phai [#qbIq4rIg] |
  • URL |
  • 2011 07/12 (Tue) 07:26
  • Edit
コメントフォーム
このエントリへコメントを書く
(任意)
(任意)
(任意)
(必須) HTMLタグは使用できません
(任意) ID生成と編集に使用します

Page Top

Page Top

プロフィール

Phai

Author:Phai
4年前に専業トレーダーに転身。
トレンドフォロー系のシステムをメインに複数のシステムで資産運用を行っています。
メンバー100名以上→【FC2限定システムトレードコミュニティを立ち上げました

最新記事
最新コメント
月別アーカイブ
カテゴリ
RSSリンクの表示
リンク
管理人に質問する

ハンドルネーム(必須):
メール(必須):
件名:
本文: