JPX Tokyo Stock Exchange Prediction Award Ceremonyで発表した解法総評です。
JPX Tokyo StockExchange PredictionAward Ceremony解法総評Tomoya KitayamaSTRICTLY CONFIDENTIAL 1
View Slide
解法総評Alpacaで入賞者(9位の方は資料が未提出)の手法を確認させていただき、分類を実施致しました。我々目線で興味深かったアプローチをご紹介させていただきます。2解法の種別 該当するユーザー 総評シンプルなモデル 1位2位3位6位7位8位今回のコンペでもっとも多かった解法。この時期にワークした特徴量に対して強い相関を持つモデルになっていたと考えております。完全に問題をハック 4位 Kaggleというプラットフォームの特性を上手く利用したアプローチ。正直、これはやられたと思いました。クオンツ的なアプローチ 5位10位日本株のマーケットに対する新しいアプローチとして評価できる手法です。今回は重点的に紹介します。また、今後マケデコのイベントでもとりあげてみたいと考えております。
コンペの問題設定1. モデルは毎営業日(t)に、その営業日までの終値(C_t)等のデータを入力データとして、翌営業日の終値(C_t+1)から翌々営業日の終値(C_t+2)までの変化率(r_t+1)の上位200銘柄と下位200銘柄を予測します。r_t+1 = (C_t+2 - C_t+1) / (C_t+1)2. 予測した上位200銘柄に対して1から200位までにそれぞれ2から1の線形のウェイトをそれぞれの変化率に対して掛けたものの総和を計算しこれをS_upとします。3. 予測した下位200銘柄に対して下位1から200位までにそれぞれ2から1の線形のウェイトをそれぞれの変化率に対して掛けたものの総和を計算しこれをS_downとします。4. S_upからS_downを引いた結果をR_dayとし「デイリースプレッドリターン」と呼ぶことにします。5. デイリースプレッドリターンをpublic/private期間中、毎営業日計算し、当該期間の時系列として取得します。デイリースプレッドリターンの時系列の平均/標準偏差をスコアとします。a. スコア計算式(xはpublic/private期間の営業日):Average(R_day1-dayx) / STD(R_day1-dayx)6. private期間の最大のスコアを獲得したカグラーが勝利となります。 3
シンプルなモデルのアプローチの紹介今回上位入賞のモデルは総じてシンプルなモデルが多かった。本イベントで紹介されなかったいくつかの解法を紹介します。7位の方の特徴量- 33業種ごとにモデルを学習させた- 特徴量は前営業日のOpen/High/Low/Closeのみ33業種ごとにモデルを作成。特徴量は足元のOHLCのみ。学習するのか興味深いアプローチでちょっと掘ってみたいと感じました。8位の方の特徴量- 前営業日のOpenCloseのリターン- 10/30/50営業日のボラティリティ- 3/5/10営業日のCloseのSMA- 3/5/10/30営業日のReturnInportanceが高いのは、3/5/10/30営業日のReturnと前営業日のOpenClose Return。なお、実装は非常にこなれており、かなり試行錯誤の結果、このモデルに到達したことがわかります。4
問題をハックするアプローチ本日も発表のあった4位のddmチームの解き方メトリクスに対してもっとも周期性が安定している特徴量を選択し、モデルを2つ提出できるというルールから、その特徴量の昇順と降順を提出するというアプローチは、説明を聞いたときに完全に問題をハックされたと感心しました。また、配当のデータの重要性に気づくなど、問題としても重要なポイントを認識しておりました(問題作成時に、配当調整済みリターンはあまりにも複雑になるので生成をあきらめました)5
クオンツ的に問題を理解するアプローチの紹介金融クオンツとして25年のキャリアを持ち、多くのKaggleの金融コンペで入賞を果たすモデルは極めてシンプルながらも深い考察によって構築されており、どのような局面においてもワークするように設計されている(詳細は次ページ)なぜこのモデルがワークするかのロジックが明確に構築されており、オプションデータの貢献の可能性も指摘するなど、入賞後に提出された資料の完成度が非常に高い6
クオンツモデルの概要モデル: 勾配ブースト決定木目的関数: 数式1のスコアを数式2に改変して利用することが最も最適なスコアとなることを発見特徴量- 銘柄コード- 株価自体のクロスセクションなランキング- 各銘柄の前2日間のリターン(これがもっとも優位な特徴量)、そのユニバースの平均- 長期のリターン・ラグ(131取引日のヒストリカル価格リターン、25日ラグ)、そのユニバースの平均- 過去11取引日の一日平均出来高をクロスセクションでランキング- 過去231取引日の日次リターンの標準偏差トレーニング方法- 1年分の学習データで次の1ヶ月を予測この1ヶ月のデータを可能な限り多く作り、各月のコンペのスコアを計測- 特徴量をパラメータにして、もっとも安定的に高い平均スコアを出すモデルを選択。アンサンブルは顕著な効果は観測されなかったモデルの特徴- 学習時にスコアの両端(top250/bottom250)のみを利用、これがもっとも効果が高いトリックになった- オプションデータのインプライド・ボラティリティは市場の平均だったため上手く特徴量として活用できなかったが、ここがまさに掘る価値があるところだった7数式1数式2
もう一つの面白いアプローチ目標のシャープレシオ(コンペのメトリクス)を決め、ラグに対する多項式から銘柄をシミュレーションで選択するアプローチモデルを開発前に各日毎に 100000 回の株式の配分シミュレーションを行い、スプレッドリターンの値を変化シャープレシオの分布を計算し、最高のシャープレシオを生み出す目標値(0.4程度)を特定8目標スプレッドリーターンを特定したところで、以下のような方法で投資する銘柄を選択1. 予測日付の各銘柄について、過去n日間のラグ(n=3,4,5,6,7)のデータを取得2. 各ラグに対して、予測日付の2日後を予測する単純な1次多項式を計算し、決定係数を計算3. 異なるラグに対して2で計算した決定係数で重み付けを行い、平均化を行って多項式を決める4. 10000回のシミュレーションを行い、目標に近い値となった銘柄を選択
最後に今回の問題はトレードに限りなく近い条件、かつ再現性のある問題を設定することに苦心しました。結果として、多様なアプローチで問題を解くことが確認できて非常に有意義なコンペとなりました。また、Late Submissionが開放されており、他のテクニックなどを駆使して、問題を改めて解いてみることも出来ます。ぜひ、すでに解法が公開されているものもありますので、そちらをご覧になりつつ、最後に改めてチャレンジしていただければ幸いです。今後もJ-Qunatsを何卒よろしくおねがいします!9
Thank You!STRICTLY CONFIDENTIAL 10