逆に、全力でカーブフィッティングしたシステムを作ってみた

逆に、全力でカーブフィッティングしたシステムを作ってみた

どうも、メタトレ研究所のHiroです。
今日は、「フィッティングだけで勝てる手法を作ることは出来るのか」という内容で動画を撮っていこうと思います。

冒頭コメントでもう結論は分かっちゃっているような感じはするんですが、よく「フィッティングし過ぎちゃダメだよ」っていう話をYouTubeだったり僕が運営しているFIVっていうコミュニティの中でしたりしますけれども、

「フィッティングってどういうこと?」っていうのがイマイチ概念としてとして理解されていない人が結構多いな…という印象があったりして…。

ひいては、当然その概念もフワフワしてるから、「その結果どういうことになってしまうのか」っていうところまでも、やっぱりイメージが難しくなってくるわけですよね。

だから、今日は敢えて、「物凄く極端にフィッティングをしまくった手法」というのをEAとして作ってみたいと思います。
本当に馬鹿みたいな内容になると思うんですけど、まあ半分ネタです。ネタなんですが、まあ面白く付き合っていただければ良いかな、と思います。

「極端に」というか、フィッティングだけで作ります。手法無し。
フィッティングだけでひたすらロジックを組み上げていって、手法を作る…ということをします。

「そもそもフィッティングは何なのか」という話を一応しておこうと思うんですけど、フィッティングというのは、何かあるトレードシステムとか手法を考案して、それを検証しますよね?

検証した結果、良い結果が出るか・悪い結果が出るか、というのがそこで判明するんですけれども、仮に「この部分がもうちょっと何とかならないの?」という部分があったりするとするじゃないですか? 端的に言えば「悪かった」ってことですよ。

その「悪かった結果」というものを受けて、
「じゃあこの悪いトレードを無くそうかな」
「どうやったら無くせるかな」
…っていうことをやっていくわけですね。

要は、「結果を見て、悪かったところを消す」というようなことをしたりとか、たまたま良かった部分というものがあったとしたら、そこにフォーカスして、そこを伸ばすようなことをやっていく。…分かりますか?

「結果ありきで、その結果を良くするために調整をする」というのがフィッティング…あるいはカーブフィッティングというものを指します。

基本的にはあまり「良い」とはされていないこのフィッティング。

程度によります。「じゃあ検証結果は何のために取るんだよ」って話になっちゃうので…その「フィッティングを完全しないでトレードする」ってなると。

だからその検証・ブラッシュアップというのは、当然ある程度はフィッティングを伴った作業にはなるんですけれども、これがあまりにも極端になってしまうと、今言ったみたいな、

「負けたトレード、消してやろうかな」とか、
「これ勝った」っていうトレードがあったとしたら、その「勝った」っていうトレードの「勝った」っていう結果を見て、「それを伸ばそう」みたいな話になっちゃうわけですよね。

それをしていくとどういうことになるかというと、要はフィッティングというのは、「検証に使ったヒストリカルデータに対する合わせ込み」ということになるわけですね。

「この日に上がって、この日に下がった」
「次の日にまた下がって、次の日に上がりました」
…じゃあ、買って、売って、売って、買えば、全勝ですよね。…みたいなことになってしまうわけです。

でも、この検証データから外れたところでそれをいざ実運用に回した時に、同じように「上がって下がって、下がって上がる」っていう風な価格変動になるでしょうか? …って言われたら、そうはならないわけですよね。

だから、このバックテストデータに対して合わせ込み過ぎた手法というのは、別のデータの中では全く勝てない…ってことが生まれてしまったりするわけです。

だからフィッティングは良くないよ、という話をしているわけですけれども…。

まあ、今日は、そのフィッティングを敢えてめちゃくちゃ極端にやって、フィッティングだけで手法を作って、その結果…まあ検証結果は良いものになるんでしょう、要は結果を見てからそこを直せば良いだけですから良いものにはなるんですね。

それをもって、じゃあ別の価格データの中で実運用した時にどういう結果になるのか…ってところまで見ていきたいな、と思っています。

はい、ちょっと前提知識を入れてもらいたくて、前置きが随分長くなっちゃいましたけれども、この後は実際にシステムを作って検証して、変えて、検証して…っていう過程を全部キャプチャーの中でお見せしたいなと思っています。

はい、それではキャプチャーを見ていきましょう。ついてきてください。

まずはフィッティングだけで手法を作るところから

はい、それでは「フィッティングだけで手法を作っていくとどんな感じになっちゃうのか」というのを、フィッティングで手法を作るところからお見せしていきたいなと思います。

冒頭から言っている通り、フィッティングだけでトレードする手法を作るので、分析とかはしません。しないで、フィッティングをひたすらやっていくんですが…。

当然ですけれども、フィッティング元の手法を1つ作らなきゃいけないので、スーパー適当に売買をするシステムをまず入れていこうかなと思います。

あ、ちなみに今日バックテストしますけれども、ちょっと長めの尺でやっていこうかなと思っています。

それは何でかというと、まず、いわゆるバックテストというのとフォワードテストというのをやりたい、というのがあるんですね。

フィッティングをするのに使うデータと、フィッティングしたものを最後試すっていうので、データを別々にしなきゃいけないので、合計の検証期間は長くなりますよ、ということが1点と、

あとはフィッティングのイメージって最初にちょっと共有させてもらったんですけど、要は「負けたトレードを省く」っていうことをしていきます。

省いていくので、負けを叩き潰すってことをするので、ちょっと最初の量が多い方が良いな、っていう、そういう事情です。

この後やっていくんですけど、その…まあ要は凄く馬鹿に見えると思うんですね。その、フィッティングしている様子というのが。

それが真の僕の姿だと思わないでください…というのだけ、一言言っておきたいと思います。
敢えて、ネタとしてやっていくものですので…。

では「フィッティング元の手法というのがどういうものになっていくか」ということなんですけれども、毎日売りましょう。とりあえず。

毎日、日足が出た瞬間に売って、日足がクローズした瞬間に買い戻しましょう。
そして次の日、またオープンになったら売りましょう。

…という、「ひたすら毎日売って、クローズで買い戻す」というような手法になっていきます。
「まずはそれでやっていきましょう」ということですね。

まあ、ビジュアルモードでわざわざお見せしなくても良いような、もう本当にしょぼい手法なんですけど、一応さっきの説明があまりにも雑過ぎて「逆に理解出来ない」という人もいるかもしれないので、一応軽くイメージしてもらうためにちょっとだけ回してみようかなと思います。

日足のチャートです、ドル円です。スプレッドとか諸条件は同じにするんですが、期間がいつもよりも長くて…あ、こういうことですね。分かりますかね?

「毎日新しい足が出た最初のこの瞬間に買い戻して、更にもう1回売る」…という。

だから、この手法を完成形と見るのであれば、「別にずっと売って持っておけば良いじゃん」って話になるんですけど、これはフィッティングをしやすくするために毎日毎日買い戻して…「1個のトレードが検証期間中ずっと持っている」ということだと、もうフィッティングのしようがありませんから、「日々のトレードを独立させる」という意図の元に毎日トレードをさせている、というような状態になります。

分かりますね。何も無いんです、分析が。無くて、ローソク足が出たら売る・クローズになったら買い戻す、それだけです。

これでやっていくとどういう結果になるのかというのも…もういい加減ビジュアルモードじゃなくても良いかなと思うので…あの、インジ今出ましたけど消し忘れただけで見ていません。ご覧の通り、毎日毎日売って買っているだけの手法になっています。

…はい、じゃあビジュアルモードじゃないモードでササッと結果を見て行こうかなと思うんですけど…。

はい、終わりました。1万ドルから始まって、0ドルになりましたね。

綺麗さっぱり無くなったわけですけれども…あ、0ドルにはなっていないな。厳密には13ドル残りましたね。良かったですね。

…そんな感じになっています。プロフィットファクタ0.6の…「論ずる必要があるのか?」っていう。そもそも手法が無いわけなので…。

「毎日売って買い戻すと、こういうことになるんですよ」という結果ですね。悪かったわけです。

だから、これ、もうスタートがこれだったので、ここをゴリゴリフィッティングして、プラスに持って行って良い成績にしていきたいなと思うんですけど…。

結果が悪かったので、フィッティングしてみます

そうですね、売ってダメだったので、買おう。よし、分かりました。

同じく、全く何も分析しないで、売ってダメだったので同じタイミングで買うことにします。「買う」っていうシステムを作ります。

…はい、売りポジションを買いポジションに変えただけのスーパーフィッティングシステムを1つ作ってみました。

まあ、同じタイミングです。「売っていたところで買う」っていうだけ、逆にしただけですね。そういったものを作ってみました。

売ってダメだったものを…「売ってダメだから買いにしよう」という、もう、何かフィッティングの最たる例…みたいな感じなんですけど。

さあ、どうなるかな? という感じですね。…よし、勝つぞ! 頑張れ! よし! 頑張れ!

良いですね…勝ちましたね、見事に。

はい、さっきはね、信じられないぐらいゼロに向かって一直線だったグラフが右肩上がりに変わりました。ね、フィッティングって凄いですね。

一応レポートも確認してみる

さて、一応レポートも見ていこうと思いますけれども、プロフィットファクタが0.6だったものが1.25になりました。
勝率が53.90%になりましたね。…はい、そんな感じですね。

利益額…あ、資金管理の話をしていませんでしたね。ここはいつもと一緒で、1万ドルに対して0.1ロットでひたすらトレードしていく、という、そういうトレードになっています。
そんなトレードをして、1万ドルに対して5,628ドルの利益が出る、というような輝かしい成績を収めることが出来ました、ということですね。

…どうですかね? もうちょっと、じゃあフィッティング使って良い成績を目指していこうかなと思いますけれども、それではフィッティングをもう1段階やろうか、という話をしていたんですけど、とりあえず一旦、ここまで1段階フィッティングしたこの軌跡をまず皆さんと確認していきたいと思います。

フィッティング前は、「毎日売り続ける」というロジックはこのような成績になっていたわけですね。Overviewで見ていくと、もうほぼほぼ全部資金が失われていて、毎年、一貫してマイナス計上している、というような状況があったわけです。
プロフィットファクタが0.6しかありません。勝率が39.3%だったわけですね。

もうほぼ破産、というような感じになっています。

これ0になっているのは、多分、最後ポジション持つことが出来なくなって、ポジションを持たずに終わったからだと思いますけれども…。

…まあ、こんな酷い感じになっていたわけですね。
チャートも改めて見ますと、こんな感じになっています。一貫して右肩下がりだったわけです。

そこで、僕は考えました。
「売ってダメだったので、買えば良いんじゃないか」という風に考えたわけです。

それが見事に当たりまして、グラフの形がこんな感じに改善されたわけです。一応ポートフォリオを作ってみましょうか。
はい、ポートフォリオを作っていますけれども、まあこんな感じになるわけですね。…当たり前ですね。売っていたものを買っているので、こういう結果になるわけです。

ちなみにこっちが短いのは、「ここで息絶えてしまったから」ではないかなと思いますけれども、そんな感じになっていますよ、ということですね。

はい、ではもう1段階行ってみようかな、という話になるんですけど…。

更にもう1段階フィッティングしてみると・・

このQuant Analyzerを使ってフィッティングをお見せしたいなと思います。まあそんな高度なことはやらないんですけど、この画面、見たことありますかね?

まあシステムトレーダーの人は皆使っていると思うんですけど、まあこんな感じになっていますよ、ということですね。

今出ている項目で言うと、各年ごとの損益とか勝率とかがここにパッと出ていて、それからこれが例えば勝率ですね…緑が勝ちで赤が負けの比率。

これがロングとショートの比率ですけれども、当然これフィッティング後のやつは全部ロングになったのでロングが100%を占めています、というような感じですね。

あとは、エントリー時間ごとの損益割合とかも出ているんですけど、今回は全部0時に入っていますから、0時のところに勝ちと負けっていうのが全部まとまっているんですけど、

いろんな時間にエントリーするようなロジックだった場合には、

「1時に入った場合はこんな感じ」
「2時に入った場合はこんな感じ」

みたいなことが書かれているわけです。

…とか、諸々のいろんな指標が出ているんですね。
曜日ごとの損益とか、日ごとの損益とか、年ごとの損益とか…ここは何か、もう1回勝率になっちゃっていますけれども、切り替えたりすることは出来るわけですね、こういったところで。

この中で一番フィッティングしやすい項目で言うと、
ここかな?「Profit Loss by month」、ここいきましょう。

これを見ていくと、概ね勝っている月が多いんですけれども、4月と6月と7月、ここ負けちゃっているので…よし、4月と6月と7月はEA止めよう! 

そういうロジックにしよう。それで多分成績が向上するはずなので、それで行こうと思います。

…よし、じゃあそれでちょっとバックテストをまた回してみようと思いますけれども…ちょっとEA変えますね。

負けたところをトレードしないというルールにフィッティング

はい、じゃあ新しいEAを作って差し替えました。

変更点としては、4月と6月と7月ですね。1個前のフィッティング段階では負けになっていたところを、もう「トレードしない」っていうルールにしちゃいました。

そうすることによって、負けている月の損失が無くなるので、成績が恐らく改善されるだろう…という考えのもとにやっているわけです。

はい、じゃあ回してみます。これも本当にビジュアルモードを見る価値も無いので、このまま回していきますけれども…。

はい、かなり良くなったんじゃないでしょうか?
フィッティングの天才ですね、僕はね。

…はい、じゃあレポートを見ていこうと思いますけれども。プロフィットファクタが1.4になりました。

もうこれは実用レベルですね! 実用レベルのプロフィットファクタが、フィッティングのみによって、何のテクニカル分析も無しに、達成されたわけですね!

…なので、後でちょっと比較のグラフなんかも見ようと思いますけれども、とりあえず一旦これを実用レベルとしましょう。

これを使って、フォワードテストに移っていきたいと思いますけれども、とりあえずここまでの輝かしいフィッティングの軌跡を一緒に見てもらいたいなと思います。

フィッティングした結果をQuant Analyzerで分析してみる

はい、いつものようにQuant Analyzerですね。またQuant Analyzerに戻ってきましたけれども…。

4月と6月と7月ですね。このトレードをそっくり無くしてしまった、ということになりますけれども、こんな感じになっていますよ、と。

これらを比較していきましょう…はい、こんな感じになりました。これが元々のやつですね。それを、第1段階のフィッティングを使って、この赤いグラフにしたわけですね。赤いグラフになったわけです。

そこから、この赤いグラフの中の負けていた月、6月と7月、それから4月…これを消すことによって、青いグラフを実現したわけですけれども、どうですかね? 良くなりましたよね。

これによってプロフィットファクタが、フィッティング前が0.6、フィッティング第1段階が1.25、次のフィッティングを経て1.4まで行きました。

1.4だと、結構僕のシステムの中でもそのぐらいの数値があったりもするんですけど、一応「実用に回しても良いかな」と思えるような数字だと思います。

なので、このスーパーフィッティングシステムを引っ提げて、フォワードテストに移っていきたいと思います。

ここまで、2012年から16年のヒストリカルデータの中でフィッティングを行ってきました。

なので、ここから、2017年…要は直近3年間ってことですね。今2020年なので、19、18、17の3年間を使っていく、ということです。

ちなみにごめんなさい、言っていなかったんですけど、フィッティング前は5年間採用していました。5年間というのは、この3年間の前の5年間という意味で…「意味で」というか、特に意味は無くそういう選び方をしていたということですね。

はい、緊張しますね。一生懸命作った手法なので、是非勝っていただきたいなと思うんですけれども。やってみましょう。

フォワードテスト開始

それでは、回していきます。フォワードテストです。

…はい、終了しました。
結果としては、右肩下がりのグラフになってしまいましたね。

レポートですけれども、0.91のプロフィットファクタですね。流石に3年で破産はしなかったんですけど、勝率が47%。

…何か、この年は上げ幅と下げ幅と、大体同じくらいの比率で推移したみたいなので、勝率の悪さがそのまま…まあリスクリワードレシオがほぼほぼ1.0なので、勝率の悪さがそのままマイナスに繋がった、という感じです。

まあ良いです、この辺の分析は別に、元々手法があったわけじゃないのでどうでも良いんですけど。

要するに、今回のことで分かったことというのは、「特定の期間に対して結果を元に極端なカーブフィッティングを行った手法というのは、やはりそのヒストリカルデータの中でしか勝てない」ということなんですね。

それ故に、別の期間でテストをした時には全く違うグラフの形を描くし、数字を描く、ということになってしまう…ということなんです。

なので、手法を作る際には、結果を見て、結果を良くするっていうことにフォーカスしたフィッティングを行うのではなくて、「いろんな手法を考える」とか「改善を行う」という時には、ちゃんとロジックありきで作っていく…ということが大事になるんだと思います。
…はい、そんな感じですね。以上になります。

まとめ

はい、如何だったでしょうか?
かなり馬鹿らしい内容になっていたかもしれないんですけれども、今日のは極端なんですけどね…ただここまでではないにしても、結構こういう感じのこと、これに近いようなことをやっちゃっている人というのが実在していて、特に多いのが、いわゆる市販のEAですね。

ああいったものというのは、やっぱり営業しなきゃいけない・目立たなければいけないので、数字の上だけでもバックテストの良い成績をシェアしなきゃいけないわけです…売ろうと思ったら。

そういったことを目的として、今日見せたものに似たような過度なフィッティングが行われていることが結構あるんですよね。

それを買って回した結果、「飛びました」みたいな話がチラホラ聞こえてきますけれども、あれは当たり前と言えば当たり前な話なんですよね。そうなるべくしてなった、という…そんな感じの話です。

それが何故だか不思議に思っていた人とかもいるかもしれないし…そういった意味では、こんなんですけど、「割と意義のある動画になったのではないかな」と僕個人としては思っています。

はい、主に今日は、「これからシステムを作ろう」とか「今システムを作り始めたところです」とか、さっき言ったみたいな、「人が作ったEAっていうものを買って回したら(資金が)飛んでしまいました…」みたいな、

まあいずれにしても「システムトレードに興味がある」「システムトレードをやってみている」っていう人に向けた動画の内容になりましたけれども、この内容が少しでも勉強になった・役に立ったと思っていただけた方は、チャンネル登録と高評価、是非よろしくお願いします。

それから、今日お見せしたようなあんな感じではなくて、僕が僕の正しいと思う方法に則って、システムを組んで運用している口座というのがあります。

Twitterを見てくれている方は既に知っていると思うのですが、その口座の中でEAが回っている様子というのをTwitterでシェアしています。

「今買いました」「今売りました」、「売りました」「買い戻しました」、「このトレードは勝ちました」「このトレードは負けました」っていうことをリアルタイムでシェアしていますので、興味がある方は是非フォローしておいてください。

はい、以上になります。それでは皆さん、ごきげんよう。