「やってみた」と言ってもプログラムで、という話です(当たり前w)。
ご存知のとおり、Prophet は Meta が開発した時系列データ予測ツールです。トレンド・季節変化・イベント等を組み合わせた予測モデルとなっている為か、ファイナンス分野への適用でも「今後1年間の株価推移」のような長期予測の例はよく見かけても、「ぶっちゃけ明日上がるの?下がるの?」的な単純な使い方はあまりしないようです。Prophet では一度遊んでみたかったので、そんな単純な短期売買をシミュレーションしてみました。
売買ルールはこんな感じです。
- 売買対象は日経平均。もし実際に取引するとしたら日経平均連動型の ETF になりますかね。
- 毎日大引け直前に終値近辺で買入(または空売り)して、翌営業日の大引け直前に終値近辺で売却(または買い戻し)するという短期売買。
- 大引け直前に前日までのデータを元に Prophet で翌日の終値を予想し、本日終値より上昇予想なら買入、下降なら空売りと判断する。
- 売買金額は関心の対象外とし、利益等は金額ではなくパーセンテージとして計算する。
これを、2005〜2015年についてバックテストしてみました。この期間を選んだのは上昇(アベノミクス相場等)・下降(リーマンショック等)の両トレンドを程よく均等に含んでいそうだったから。グラフ化するとこんな感じ↓です。
さて、バックテストの結果を、実際と予測の終値推移・売買勝率推移・利益率累計推移でグラフ化したのがこれ。
ご覧のように勝率こそ49%と五分五分ですが、売買成績はマイナス70%程の惨憺たるもの。例えば毎日1万円で10年間(2450日)売買を繰り返していたら、7000円あまりの損失ということになりますが、実際は手数料もありますから骨折り損+大損のダブルパンチですな。
これは考えてみたら当たり前で、高度な予測モデルをもつ Prophet と言えども所詮は過去のデータからの類推を弾き出している訳で、グラフのように実際の不規則な値動きに少し遅れてついてくる感じの予測値になります。こういう傾向は移動平均や MACD のようなポピュラーな指数でも同じで、ちょっとトレーディングのプログラムをした方なら「あるある」だと思います。
だからと言って、Prophet が役立たずだと言っている訳ではなく、このような使い方が適切ではないということでしょう。例えば、予測値そのものではなく、未来のトレンドや周期性等に明確なサインが見いだせるならそこに着目し、利益を得るというよりはリスクを回避する方向で活用したりする、そんな使い方が正しいのかなぁなどと思ったりします。
本記事の為に書いたコードは、 Google Colaboratory でシェアしてあります↓。