先日のやーくさんからご質問いただいた、「事前フォワードテスト」(勝手に命名w)について書いてみようと思います。
事前フォワードテストとは、イザナミでシステムトレードの販売ルールを作成する際に、検証期間をわざと一定期間の過去の時点までにしておき、販売ルールが出来たときに、残しておいた期間で検証してみてそのパフォーマンスを確認するというものです。
先日の私の記事(カーブフィッティングになりにくいシステムの作り方(1))でフォワードテストは3か月ぐらい見ないと判断できないと書いたので、やーくさんもコメントで3か月と書いていますが、この期間は人それぞれだと思います。私も3か月試して大丈夫ならもう安心とは思っていません。
私のいう3か月とは結果が大負けしていなければ、手を入れずに様子を見る期間程度の意味合いです。
さてこの事前フォワードテストの手法なのですが、基本的には有効そうに思います。しかし私はこの手法を使っていません(厳密にいえば使っているのかも?)。それはなぜなのかを書いてみようと思います。
1.期間を長くとらざるを得ないから
私は全期間で機能する単一のシステムはないと思っていて、得意な地合いでのみ稼いでくれればそれでよいと思っています。よってもし順張りなら、少なくとも2015年の最初からの期間で見てみないと機能しそうかどうかは判断できません。
そしてその事はシステム作成時に分かりきっているので、2015年の成績は特に重視します(2015年のトレードを個別にみて対応するわけではありません、作成した結果として2015年がどうなのかという全体俯瞰しつつ見るというイメージです)。それを最後に事前フォワードという形で別にチェックする必要を感じないという事になります。
2.事前フォワードテストの結果が悪かったとしてもどうしようもないから
ここが問題で、もし事前フォワードテストという形で最後に確認して、良い状態ならそのまま運用する事になると思いますが、もしあまり良くなければそうするのでしょうか?ここに疑問があります。
事前フォワードテスト期間の成績を良くするようなシステムの改造は、そのまんまカーブフィッティングの可能性を高めるだけだと思います。これは危険と言わざるを得ないでしょう。
少なくとも事前フォワード期間以外で再度作成しなおして、また最後に事前フォワードテストを行うという方法にしなければならないと思いますが、それなら最初から全期間で検証しておいても良いかなと思います。
3、ミリミリと期待値や利益率を高めるシステムの構築を目指していないから
この項はご批判も覚悟で書いていますが、販売ルールは見た目が重要なので、利益率は極力高めるようにルールが組まれています。このような場合は、カーブフィッティングの可能性が高いので、事前フォワードテストは効果的かつ重要になってくると思います。
みなちゃんさんからはご批判をいただきましたが、私は前回ご紹介したように「ゆる~く」作っているつもりなので、私のシステムの中にはリーマンショックでかなりやられるものもありますし、地震の時にやられて取り返す事すらできていないシステムもあります。それらを承知で使っているという事です。
前回のサイコロシステムはさすがにパフォーマンスが低すぎる(これもみなちゃんさんご指摘の通り)ので採用しませんでしたが、最近運用開始したキュルLBFも同じような緩さで作っています。サイコロは確保したい期待値やパフォーマンスを求めるとミリミリと条件を締める必要があり、それがカーブフィッティングの可能性を高めると思いました。キュルLBFは同程度のゆるさで作ったら、使えそうなパフォーマンスが得られたという違いがあるだけという事です。
このように緩めに作ると検証によるパフォーマンスそのものは物足りないかもしれませんが、カーブフィッティングかどうかという点では私にはある程度の自信と、2年の運用で完全独自に開発したシステムは、一つも運用停止していない(空売りのゲラフォーSは別の理由による)という実績から、事前フォワードテストの必要を感じていないのは正直な思いです。
そしてそれならリーマンショックや地震が来たらどうするんだという事になりますが、それに対する備えはシステムの複合化に尽きると思っています。さすがに両方やられてしまうようなシステムは使っていないつもりだし、合計するとプラスになるようなシステムを運用しているつもりです(あくまでつもりですが)。最終的な要は資金管理に行きつくのは言うまでもありません。
ちなみにですが、このように緩めに作っておくと、運が良ければ、フォワードテストの時の方が、期待値が高くなる事があり得るのかと思いました。私のシステムでいうとSDR_Xがそれで、検証時の期待値は2.7%程度でしたが、実運用後の実績期待値は4%を超えています。まだ1年未満なので、今年はたまたまという事なのだと思いますが、それでも悪くなるよりはずっと良いと思います。
勿論緩いといっても、逆張りなら勝率70%を確保できるところまでは作りますし、期待値も2%は最低限確保するように作っています。私が言いたいのはリーマンショックも、地震も今年8月の暴落もすべてに対応できるシステムが必須かと言われれば、上記のうち2つで勝てていればOKと考えているという事です。
なお、記事の前の方に事前フォワードテストを(厳密にいえば使っているのかも?)と書きました。これに関して私はシステムの検証時は必ず2013年、2014年、2015年の3年のPFをエクセルに書き出しています。というのはも2013年以降は明らかにトレードの傾向が変わっていると思っていて、それは制度の変更による影響が多分にあると思っています。
よってこの3年のパフォーマンスが良くないものは使わないようにしています。そういう意味でこの3年の事前フォワードを行っているのとあまり変わりがないやり方をしていると思います。
繰り返しになりますが、勿論だからといって2013年以降のやられている箇所を探してそこを改善するような事はしていません。あくまでも全体の傾向を見てチューニングをして、その結果で2013年以降の数字が良化していれば採用するというやり方です。
今回記事の内容と私のやり方はあくまで「私がこうしている」というだけで、これらを推奨するつもりはありません。最終的にはご自分が納得できるやり方で検証し、それを実運用に持っていけば良いと思います。
「システムトレードは勝てば官軍で正しい」という事ですね、本日も最後までお読みいただきありがとうございました。
同カテゴリーの前の記事⇒カーブフィッティングになりにくいシステムの作り方(2)
同カテゴリーの次の記事⇒暴落で「投げたそこが底だった」になる理由
いつもご覧いただきありがとうございます。このサイトが役立ったと思ったら、押してくださるとうれしいですm(_ _)m
こんばんわ!
丁寧に解説してくださいありがとうございます。
他のトレーダーさん方の考え方を知るのは非常に勉強になりますm(_ _)m
2.事前フォワードテストの結果が悪かったとしてもどうしようもないから
ということでしたが、例えば逆張りで2000/01/01~2015/5/15の期間でバックテストし勝率80%で期待値がプラスの戦略が出来たとして、これを2015/10/15まで伸ばしてテストを行う事でこの間(この場合だと5カ月間)の勝率を見て、カーブフィッティング判定(ダメな場合のみ)できるのではないのかと思いました。そしてダメな場合はこの期間の勝率を調整するようにするのではなく1から作り直します。効率的ではないのかもしれませんが、全期間で検証し実運用後にカーブフィッティングと判明するより無料で出来るので、カーブフィッティングをしないようなルールを作るためには良いのではないかと思いました。Sandさんの考えではこの伸ばした期間の成績が良くなかった(勝率が50%などになった)としても緩く作ろうとしている(毎月勝率80%付近のルールを作ろうとしているわけではない)ので事前フォワードテスト期間を設ける必要性を感じないという事でしょうか?
やーくさん、コメントありがとうございます。
たしかに書かれているようにやれば、効果はあると思います。
全体勝率が80%で、ここ最近50%だったらカーブフィッティングの可能性が非常に高いでしょうね。
そして1から作り直す。かなり大変な事だと思います。
私も年度別成績は毎回必ずチェックしている(特にここ3年は)という意味で同じ作業をしていると
いう認識なのです。。。が、
今回自分で記事を書いてみて、やーくさんにもコメントをもらい、一度事前バックテストも
やってみようかなという気になっていたりします。
返信ありがとうございます。
私も自分のやり方に疑問を抱いていたので、質問させて頂きました。
また色々質問させて頂く事があると思いますが、よろしくお願いいたしますm(_ _)m
はじめまして、こんばんは
システムトレードに興味があるのですが大変そうなイメージがあります。
単純に、チャートで5分線で買って5分線で売ってということはできますか?
初心者さん、こんばんば。
私がシステムトレードに使っているイザナミは、日中足には対応していないので、
5分線でのトレードは私にはできませんし、分からないです。
システムトレードに限らず、どんなトレードでも儲けるのは大変だと思いますが、
システムトレードはある程度構築してしまえば、システムをいじらなければ、
作業は30分ぐらいしかかからないので、それほど大変ではなくなりますね。