先日終了した米国株式市場 将来株価予測で2位になった解法を紹介します。機械学習初心者&ほぼ初コンペで試行錯誤の結果なため、内容に誤りがあるかもしれません。誤りに気付いた方はコメントで指摘頂けると嬉しいです。
コンペティション概要
- 米国証券取引所の株価推移データを用いて、1週間後の株価を予測するアルゴリズムを開発する
- 2011/11/13~2019/11/17週の計419週間にわたる米国株データ(終値)をもとに、2019/11/24週の終値を予測する
- 外部データは使用不可
- モデルの予測性能は評価関数RMSLE(Root Mean Squared Logarithmic Error)で評価
解法
予測対象
株価(終値)そのものを予測するのは難しいため、対数化した株価の前週との差を予測することにしました。最終的にはトピックのLightGBM Base line(LB=0.03781)と同じように差を標準化しました。
モデル構成
次の9つのモデルを作り、結果をアンサンブルしました。ダウとNASDAQで値動きが違うことはわかっていたので、市場毎にモデルを分けています。例えばLightGBM_NYSEは全市場のデータを元に学習しますが、予測結果のうち利用するのはNYSEのもののみです。最後の層では4つのモデルの結果の市場毎の加重平均を取っています。
No. | モデル | 学習データセット | 予測対象 |
---|---|---|---|
1 | LightGBM_ALL_1 | NYSE, NASDAQ, AMEX | NYSE, NASDAQ, AMEX |
2 | LightGBM_ALL_21 | NYSE, NASDAQ, AMEX | NYSE, NASDAQ, AMEX |
3 | LightGBM_NYSE | NYSE, NASDAQ, AMEX | NYSE |
4 | LightGBM_NASDAQ | NASDAQ | NASDAQ |
5 | LightGBM_AMEX | NASDAQ | AMEX |
6 | MLP_NYSE | NYSE, NASDAQ, AMEX | NYSE, NASDAQ, AMEX |
7 | MLP_NASDAQ&AMEX | NASDAQ, AMEX | -2 |
8 | ExtraTrees_NYSE&AMEX | NYSE | NYSE, AMEX |
9 | ExtraTrees_NASDAQ | NASDAQ | NASDAQ |
特徴量
ベースとなる特徴量はLightGBM Base line(LB=0.03781)と同じ以下のものです。このうち、セクター、業界、市場はターゲットエンコーディングしました。LightGBMではあえて欠損値はそのままとしました(MLPとExtraTreesでは欠損値補完しています)。
- ラグ特徴量(4週分)
- 52週単純移動平均とその標準偏差
- 上場年
- セクター
- 業界
- 市場
- 年
- 月
- 日
- 年初から何週目か
一部モデルにはこれ以外の特徴量も追加していますが、多くのモデルでは特徴量を追加した方がPublic LBのスコアが下がったため取りやめました。
No. | モデル | 特徴量 |
---|---|---|
1 | LightGBM_ALL_1 | ベース特徴量 |
2 | LightGBM_ALL_2 | ベース特徴量 |
3 | LightGBM_NYSE | ベース特徴量 |
4 | LightGBM_NASDAQ | ベース特徴量 |
5 | LightGBM_AMEX | ベース特徴量 |
6 | MLP_NYSE | ベース特徴量, Skew |
7 | MLP_NASDAQ&AMEX | ベース特徴量, 指数移動平均乖離率, ボラティリティ, Kurt, KST Oscillator, PCA, K-Means |
8 | ExtraTrees_NYSE&AMEX | ベース特徴量 |
9 | ExtraTrees_NASDAQ | ベース特徴量 |
ハイパーパラメーター
Optuneを使い調整しました。コンペ終了1-2週間前はほぼパラメーター調整に時間を費やしていましたが、これによりかなりスコア向上した気がします(Public LBで0.00043ほどスコア向上)。
ソースコード
コンペ終了後にリファクタリングしたものをGitHubで公開しています。
次回
今回のコンペでの気付き、学びを書く予定です。
初めてデータ分析コンペに参加し得たことを投稿しました。
参考にした記事
- 株式分析チュートリアル | 日本取引所グループ
- GBDTの仕組みと手順を図と具体例で直感的に理解する
- GBDTのハイパーパラメータの意味を図で理解しつつチューニングを学ぶ
- RMSLE を最適化する小技
- 【随時更新】Kaggleテーブルデータコンペできっと役立つTipsまとめ
- 【時系列】時系列データ予測 予測手法マップ
- 決定木の予測値が天井や底に張り付いてしまう