これからの「お金」の話をしよう

(旧 システムトレードのススメ)

面倒な月末のトレードモデル更新

f:id:uki-profit:20170911223547j:plain

毎月、月末になるとトレードモデルを更新しています。

手作業でその月のデータをダウンロードし、エクセルで集計してから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>

f:id:uki-profit:20170911225849j:plain

 

<モデル2>

f:id:uki-profit:20170911225903j:plain

 

上記の2つの結果を見ると、モデル更新によって若干ながらパフォーマンスが改善していることが分かります。

 

しかし、モデル更新によってパフォーマンスが必ずしも良くなるというわけではありません。 

使っているモデル構築手法やトレード対象などにより、パフォーマンスが悪くなる場合も当然ありえます。 

 

 

なお、私が使っているモデル(=AI=機械学習手法)ですが、近いうちに記事にするつもりです。