毎月、月末になるとトレードモデルを更新しています。
手作業でその月のデータをダウンロードし、エクセルで集計してからRへインポートし、モデルを計算し直します。
これがかなり手間の掛かる作業なのです。
3時間ほど掛かります。
全て自動化してしまえばよいことなのですが、
更新前のモデルとの整合性チェックなどを省くことができず、仕方なしに手作業で行っています。
では、この作業によって収益性がどのくらい向上するのでしょうか?
今回はモデル更新の効果を検証していきます。
1.モデル更新の手法について
まず、トレードモデルを作るための基本的な用語の確認をしておきます。
モデル構築に使用するデータをインサンプル・データと呼びます。
モデル構築に含まれないデータをアウトオブサンプル・データと呼びます。
トレードモデルを構築する場合は一般的にインサンプル・データ→アウトオブサンプル・データの時系列となります。
アウトオブサンプル・データでのパフォーマンステストは実際の運用を模したものであり、フォワード検証などと呼んだりします。
インサンプル・データの取得期間を「インサンプル期間」、アウトオブサンプル・データの取得期間を「アウトオブサンプル期間」と呼んでいます。
(1)モデルを更新しない場合
インサンプル期間は2010年~2014年末の5年間です。
アウトオブサンプル期間は2015年以降であり、モデルに変更を加えることなくずっと運用します。
(2)モデルを更新する場合
初期モデル:
インサンプル期間は(1)と同じく2010年~2014年末です。
アウトオブサンプル期間は2015年1月の1ヶ月間です。
第2モデル:
インサンプル期間は2010年~2015年1月末とし、初期モデルに対して1ヶ月延長します。
アウトオブサンプル期間は2015年2月の1ヶ月間です。
以降のモデル:
上記のように、2010年初めから当月の月末までのデータをインサンプル期間とし、
翌月のデータをアウトオブサンプル期間として検証を繰り返します。
2.モデル更新の効果
以下にモデル更新なしの場合とありの場合の資産曲線を示します。
ここでは実際に運用している2つのモデルを例として取り上げました。
<モデル1>
<モデル2>
上記の2つの結果を見ると、モデル更新によって若干ながらパフォーマンスが改善していることが分かります。
しかし、モデル更新によってパフォーマンスが必ずしも良くなるというわけではありません。
使っているモデル構築手法やトレード対象などにより、パフォーマンスが悪くなる場合も当然ありえます。
なお、私が使っているモデル(=AI=機械学習手法)ですが、近いうちに記事にするつもりです。