先日の記事を書いてからずっと機械学習のプログラムを回しまくっています。
(↓先日の記事)

土日は隙間時間を縫って、ひたすら機械学習。
BGMは何故かyoutubeでBz。

やればやるほど、体が覚えてきます。
そして、一つこの機械学習・トレード界隈で言われている事も理解してきました。

今日言いたい一つの事は、未来のデータで学習したものを過去に適用しないこと。
(学習区間を必ず過去にし、その先のデータのシミュレーション結果を確認すること。)
下の図を見てください。

この図は一般的な機械学習を実施した私の作ったトレードモデルの損益曲線ですが、学習をした期間というのが’train’と書いてある区間です。
この区間のデータでトレードモデルを作ったので、この区間の損益は非常に滑らかです。
しかしながら、’’test’と書いてある区間では滑らかさが減ります。
当たり前と言えば当たり前ですが、この区間ではモデルは最適化されていないので、恣意的な合わせこみをやっていないので滑らかさが減ります。

重要なのは滑らかな区間の損益ではなく、未だこのモデルが合わせこみをやっていない未来で稼ぐか否かなのです。

このtest区間の選び方をランダムにしてしまうと、見た目は非常にきれいな損益曲線が出てきますが、過剰最適化されているかどうかがわかりません。

このモデルが稼ぐかどうかはTEST区間の損益にのみが’たしからしさ’を語ってくれるのです。

ちなみに、沢山機械学習をやっているとtrain期間ではバリバリに稼ぐけど、test期間になると一気に右肩下がり、というグラフも沢山でてきます。
明らかに過剰最適化というやつです。

何も知らずに全期間をtrain期間にして、そのモデルを学習させて良い結果が出ていたとしても、それは単なる自己満足ということでしょうね。

ちなみに、今回作ったこのトレードモデルは3年半でノーレバレッジで約+280%稼いでいますが、ホンマにこの先も稼ぐんだろうか、まだまだ不安でいっぱいです。

投稿者

SHIN

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です