はじめに
UKIです。
Kaggleで開催されたJPX Tokyo Stock Exchange Predictionのサブミッションが終了しました。本コンペの結果が出るのは3ヶ月後ですが、記憶が鮮明なうちにコンペを終えた感想をまとめておきたいと思います。
コンペ仕様
ざっくり要約すると、
- 日本株2000銘柄の中から、
- 毎日200銘柄ロング、200銘柄ショートし、
- 3カ月間の日次損益のシャープを競う
運ゲーになりがちなファイナンスコンペですが、以下の点で問題設定に工夫が凝らされていると感じました。
-
買い入れ銘柄数を大きくすることで異常値の影響を軽減する
例えば買い入れ銘柄が少ない場合、運よくSTOP高銘柄を引き当てたプレイヤーは大きなアドバンテージを得ることになります。買い入れ銘柄を大きくすることで異常値の影響を軽減し、予測性能の実力を可能なかぎり測れるよう配慮されています。 -
評価指標がシャープレシオ
単純に利益の絶対額を競うのではなくポートフォリオの安定性を競うことになります。シャープレシオはリターンの平均と標準偏差(=リスク)から計算されます。このうちリターンの平均は期間に応じてバラツキが大きく運要素が大きくなってしまいがちですが、リスクはある程度のコントロールが可能です。リスクコントロールスキルが要求されるコンペとなります。 -
ウェートの設定
ロングもしくはショートする200銘柄は均等ウェートではなく、リニアウェートとなっています。この部分でもポートフォリオ構築スキルが要求される仕様となっています。
コンペで最も重要だったこと
上記で説明した通り、リスクコントロールが最重要であったと思います。リスクコントロールには「事前的」な手法と「事後的」な手法がありますが、今回はとにかく事後的な手法の1つであるファクター中立化(Factor Neutralization、以下FN)が特に顕著な効果がありました。
以下はモデルの一例です。訓練期間は2020年までであり、以下のバランスカーブは完全にアウトオブサンプル(リークなし)の曲線です。2021年1月から2022年6月までのおよそ1年半にわたるデイリーシャープは、FNを行うことで0.066→0.22と大きく改善しています。
コンペは運ゲーとなるのか?
このようにFNしていないモデルとFNしたモデルで、Privateのシャープレシオ分布はどのようになるでしょうか。株価の予測は水物であり、当然ながらPrivate期間の市場動向次第でFNしたモデルがFNしていないモデルに敗れることもありえます。どの程度の確率でそのような事象が発生しうるか、モデル提出前にきちんと把握しておくべきです。
ここでは事例として、FNしていないモデルとFNしたモデルについて日々損益をランダム抽出し、両者の利益額とシャープの分布がそれぞれどうなるか比較しました。
上記から分かるように、利益の平均や絶対額を評価指標としてしまうとFNなしモデルのほうがテールが長くなってしまいます。これはつまり、高スコアを狙うためには当てずっぽうでハイバリアンスなモデルを提出する戦略に優位性があります(完全に運ゲー状態)。一方で今回のコンペのようにシャープレシオを評価指標とすると、前述のようなハイバリアンスなモデルを提出する戦略は殆ど機能しなくなります。
今回のランダム試行では、FNなしモデルがFNありモデルよりもPrivateでパフォーマンスが良くなる確率は、16~20%程度の結果となりました。このレベルであれば、参加者の試行錯誤は比較的報われる結果になると思います。
おわりに
優勝スコアはヒストグラムからざっくり推定すると、少なくとも0.4、場合によっては0.5以上となる可能性があります。このスコアが引けるかどうか、すなわちバラツキ分布の中から良いものを手繰り寄せることができるかどうかは、参加者の運も必要となってくるでしょう。ファイナンスコンペではやはり実力と運の両方が必要なのです。
それでは参加者の皆様へ幸運のご加護があらんことを!
三か月後にまた会いましょう。
(また2位なんてことがありませんように)