Two Sigma Financial Modeling Challengeから学ぶ
仕事と研究が忙しくてすっかり株に関して何もやらなくなってしまいましたが、進捗報告も済んで一段落したので何かやろうと思います。
前回は、東証一部に上場している企業の株価のスクレイピングをしました。
自動で毎晩スクリプトを走らせているので、もういつでも最新の株価が取得できます。
日本株のデータを眺めるってのを今回やろうとしたのですが、面白い記事を見つけたので、そちらについて触れたいと思います。
Two Sigma Financial Modeling Challenge | Kaggleはご存知でしょうか?
まぁ早い話が与えられたデータでモデリングして一番儲けた人が勝ちのコンペですね。
今回はこのコンペで2位と5位を獲得したチームの記事を眺めて、できる部分は実践しつつ自分なりにまとめていければと思います。
参考記事
今回は以下の2つの記事を参考にしています。
前処理
使用した特徴量について
2位の人
- 生データ
- ラグ特徴量 (N=1)
- ラグとの差
- 差の絶対値
- ラグとの和
- 一定タイムスタンプごとの平均値
- 上記の平均値からの差
5位の人
- 生データ
- abs, log, 正規化など"単純な計算"で整形されたデータ
- ラグ特徴量 (N=数個)
- 市場の傾向
- 強化学習で作成した特徴量(?)
モデリング
2位の人
- ExtraTreeとRidgeのアンサンブル
- 各モデルに入力される特徴量は異なる
5位の人
- ExtraTreeとRidgeのアンサンブル
- 各モデルに入力される特徴量は異なる
- 市場の状態ごとにモデルを用意
検証について
2位の人
- Returnの累積値
- データを3つに分割して検証
5位の人
- Returnの累積値
- 予測の符号が合っているかどうか
感想
特徴量に関して、5位の人が作成した特徴量は直感的に非常に有用そうなんですが、2位の人の「ラグ特徴量との和」とかって役に立つんですかね…
どうやらデータを探っていくうちにリターンとの関係を見出したそうなので、このTwoSigmaが保有してるデータが何かわからないとなかなか自分で活かすのは難しそうです。
正直特徴量をそこまで丁寧に前処理していない印象を受けて驚きました。自分は前にデータの分布だったりスケールをかなり微調整した記憶があるんですが、必要ないんですかね。
あと、時系列方向のデータの処理はもう新しい特徴量として追加しちゃうんですね。自分は2次元のデータフレームとして扱っていましたが、まぁ扱うの面倒だし今後はやめますかね。コードも汚くなるし。
全体を通して、市場のトレンドを上手く掴まないとダメかなぁという感じがしました。
どちらに関してもモデリングの際にも特徴量の選択の話が出てきました。
Ridge回帰はまぁある程度特徴量の重要度を示してくれる正則化効果がある側面があるとはいえ、Lassoじゃないんだぁとちょっと驚きました。なんとなくスパースなモデルを作った方が良さそうなもんですがそうでもないみたい。
それにしても木構造のモデルに関して特徴の重要度とかってどうやって出すんでしたっけ。なんかあんまり詳しく覚えて無いです。勉強します。
それにしてもどちらも驚くほど同じような手法ですね。こうも同じ手法が優勢になると自分も同じようなことをすれば儲かるんじゃないかって気がしますが、まぁ現実はそこまで甘くないんでしょうね。
次回はこれらを踏まえて東証一部の株を掘ってみたいと思います。 ガンバリマス