1. Top » 
  2. システムの評価

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Genre:

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

◆前回の続き

システムのパラメータ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 システムトレード派はこちら


スポンサーサイト

最適パラメータを選択することは意外に難しい

バックテスト時のパフォーマンスが
システムのパラメータに対しどれくらいロバスト(堅牢)であるかを知ることは大切だと思います。

しかし例えばPF(プロフィットファクター)や累積利益が
パラメータの関数として書けるかどうか?
といったことについては現実的に微妙だと思いますし、
さらに言えば、えいやと決めた関数で本当に未来に最良パフォーマンス
が得られるパラメータを推定できるかどうかという点についても懐疑的です。


今回例として自作のシステムを用意しました。
このシステムはパラメータは観察日数を決めるNの1つだけ。
いたってシンプルな売買ルールです。

Nは1~90まで90通りのバックテストを行い、パフォーマンスのロバスト性を確認しました。

図1はNに対するPFをグラフにしたものです。
FXシステムトレード研究
     (横軸はパラメータN、縦軸はPF)

PFの最小値はN=1のときの1.11で、最大値はN=46のときの2.26でした。
PF90通りの平均値と標準偏差は1.65±0.21です。

90通り全てにおいてPFは1を超え、また1.5以上のものは69通り存在しました。

パラメータの数値がこれほどまでにパフォーマンスに影響を及ぼさないのは
すばらしく良い傾向だと思います。

優位性はほとんどシステムの原型、つまりアイデアの部分に存在しており、
パラメータの数値には依存しないということがわかります。


これなら適当に良さげな数値を選択して運用しても負けはしないでしょう。
しかし、いざ「最適な」値を選択しようとなると問題は別です。

上のグラフを見ると小さな山がいくつも存在するような形で、
どれが最適なパラメータなのかすぐに決められそうにありません。


図2はNに対する累積利益をグラフにしたものです。
FXシステムトレード研究
   (横軸はパラメータN、縦軸は累積利益)

こちらも小さな山がいくつもありますが
グラフの左サイドの山の方が頂点が高いことがわかります。
最大値はN=4のときの12219pipsで、次点はN=13で10026pipsでした。


図3はNに対する(累積利益÷最大DD)をグラフにしたものです。
FXシステムトレード研究
   (横軸はパラメータN、縦軸は累積利益/最大DD)

(累積利益÷最大DD)が大きいと損益曲線もだいたいきれいな形となる場合が多く、
個人的には気に入っているパフォーマンス指標の1つです。

最大値はN=4のとき10.3、次点はN=6で9.3でした。


最後にNに対するトレード数の変化を見てみましょう。

Nは日数で、短期の動きを見るとなると当然トレード数は多くなり、
長期の動きを見るとトレード数は少なくなります。

Nに対するトレード数をグラフにすると図4のように
非常に規則的な関係性がわかります。
FXシステムトレード研究
   (横軸はパラメータN、縦軸はトレード数)

つまりこのパラメータはトレード数に影響を及ぼすものということがわかります。


以上、限られた情報ではありますが、
一応最適パラメータを選ぶための材料が提出されました。


さて、パラメータNは一体どれを選んだらいいのでしょう?
どれが将来的に最も良いパフォーマンスをもたらしてくれるでしょう?

図2、3よりパフォーマンスの安定性と収益性のバランスを重視するなら
N=4が最有力、あとはN=6、12、13あたりが良さそうです。



次回へつづく・・・

神レシオ20%は相当キツイ

以前、くーちゃんさんからのコメントで「神レシオ」なる
トレーディングシステムのパフォーマンスを測る指標を紹介いただきました。

私はトレーディングシステムのパフォーマンスを図るのに「神レシオ」(私の命名です)をよく使います。
OP-CLで常に正しく当日の変化を言い当てる、勝率100%の「デイトレの神様」のこの期間の合計利益は約1100日で615円です。
「神レシオ」とは「神様の利益の何%が取れているか?」というものです。

大体の目安ですが、OP-CLのデイトレシステムでは
10% システムとして使えません。
15% まずまず。
20% かなり優秀。
25% 超優秀。
30% 見たことありません

 

ちょっと調べてみたところ、
FX、特にドル円において、この神レシオ20%は相当高いハードルだと感じてます。

それどころか10%さえ、ままならないレベルです。


(1)Open-Closeのデイトレで毎日参戦型で、

損益曲線を

(累積利益) = (傾き)×(経過日数)+(切片)

に回帰させたときの

(2)R^2が0.95以上

この2つの条件の元で作ってみたドル円のシステムを例として出します。

FXシステムトレード研究


このシステムは1999年から直近までにおよそ14,100pips(=141円)を稼ぐシステムで、ドローダウンも小さくまずまずな印象です。

上記条件(2)のR^2についても0.97あるので安定性については合格点というところでしょうか。


一方、検証期間で勝率100%の神の累積利益は165,956pipsです。
つまりこのシステムの神レシオは

14100 ÷ 165956 = 0.085

8.5%しかないことがわかります。


考えてみると、
ペイオフレシオ=1で利益と損失が一定のとき
勝率55%のシステム(=一般的には良いとされるシステム)でも神レシオ=10%です。

同じくペイオフレシオ=1で、勝率が60%あってようやく神レシオは20%。
Open-Closeのデイトレでこの数値を見ることはかなり稀だと思います。

※トレード数を少なくすれば可能ですが、
※そうすると今度は条件(2)を満たすことが難しくなります。


ドル円で神レシオの数値が20%もあると、まず検証ミスを疑うレベルなんですが・・・
FXと先物では少し話が違うのかもしれません。

ちなみに以前作った日経225先物システムの神レシオは14.9%でした。
FXでは、10~15%レベルを一応の目安にするのがいいのではないかと思います。

みなさんもご自分のシステムで試してみてください。

エクセルを使ってシステムの信頼度をチェックする方法

今回はトレード損益の頻度分布が
(対数)正規分布で近似できる場合の話です。

例えばバックテストにおいて、

トレード数:N 200
平均獲得pips:m 10pips
獲得pipsの標準偏差:σ 80pips

という結果があるとします。

さて、この結果が統計的に意味があるのかどうか調べてみましょう。

検証にはt検定を使用します。
やり方はエクセルさえあれば簡単で誰でもできます。

T = SQRT(N-1)*(m) / (σ)

を計算します。

いまN=200、m=10、σ=80ですから、

T = SQRT(199)*10 / 80 = 1.763

となります。

と、ここまでは電卓さえあれば計算可能です。

ここからエクセルを使います。
関数「TINV」を使用し、

=TINV(0.05,N-1)

を計算させます。

 = 1.972

と出てきました。

さて、最初に計算したTと後に計算したT
この2つを比べてます。

t検定において統計的に意味があるとされるレベルは
T>Tとなるときです。

いまT=1.763 < T=1.972
つまり、T < Tですから、例に挙げたバックテスト結果は
統計的に意味がない
ということになります。

ちなみに、上式の

=TINV(0.05,N-1)

の0.05は5%の有意水準を示しています。

「5%有意水準」は逆に「95%の信頼度」と言いかえる方がわかりやすい
かもしれません。

より厳しい検定を行うなら、この0.05の値を0.01(=1%有意水準)に変えて
TとTを比較してください。

バックテスト結果を元にエクセルでちょっとした計算してやるだけで
その結果にどれくらい信頼度があるかがわかるt検定の話でした。

以上手順のみサラッと紹介しましたが、このt検定はシステムトレードの
様々な場面において応用できるものですので、覚えておいて損はないと思います。


   【FX システムトレード派はこちら

トレード数を考慮したシステムの性能指標PRR(悲観的リターンレシオ)

トレーディングシステムの性能を表す指標
としてPF(プロフィットファクター)は有名ですが、
ラルフビンスが提唱するPRR(悲観的リターンレシオ)
さほど知られていません。


PF=総利益÷総損失
で定義されており、その式の中にトレード数は含まれません。

それに対し、PRRはトレード数も考慮した指標です。

W:勝ちトレード数
L:負けトレード数
AW:平均勝ちトレード額
AL:平均負けトレード額
T:トレード数

PRR = { ((W - √W)/T)*AW }/ { ((L + √L)/T)*AL }


※『投資家のためのマネーマネジメント』より引用
FXシステムトレード研究




ちなみに上の式は書籍に紹介されている通り忠実に書いたものですが、
よく見ると計算結果のみを出すにあたっては式内のTはなくても良いことがわかります。


PRRは同じPF値を示すシステムの中で、
よりトレード数を多いものを高評価します。

(例1)トレード数が100

W=64
L=36
AW=50pips
LW=50pips
T=100

のとき、

PF = 1.78
PRR = 1.33


(例2)トレード数が1000

W=640
L=360
AW=50pips
LW=50pips
T=1000

のとき、

PF = 1.78
PRR =1.62

Page Top

プロフィール

Phai

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

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

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

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。