データサイエンティストが集まってモデルを作って市場予想をしヘッジファンドを動かす取り組みの Numerai

データサイエンティストとしては、その Numerai 上で毎週行われているコンペに参加し一定の条件をクリアすると報酬がもらえる。

何回か挑戦していたが、条件である Logless 0.7 以下と提出データのオリジナリティが達成できていなかった。Logless 0.7 以下はそこまで難しく無いが、オリジナリティが達成しにくい。単純に一回予測しただけだと、他の人が同じ手順でやっているためオリジナリティは無くなってしまう。

前回の 田中 TOM の放送 で LightGBM を触ったので、XGBoost と合わせてスタッキングで挑戦してみることに。

今回のデータ処理概要

概要は次の通り。

実行環境

  • Julia: 0.6.2
  • 使った Julia ライブラリ
    • FileIO: 提出ファイル出力用
    • CSV: CSV データの読み込み、以前は DataFrame がメソッドを用意してくれていたが、こちらで CSV.read するように推奨している。
    • XGBoost: XGBoost バージョンは更新されていないが最近 master ブランチが 0.6 系に対応してくれた
    • DataFrames: DataFrame を扱えるように
    • MultivariateStats: 主成分分析用
    • LightGBM: LightGBM コアライブラリは別途用意する必要があるし、まだ julia の公式パッケージになっておらず github から持ってくる必要がある
    • LossFunctions: 損失関数を確認するため
    • CSVFiles: 提出ファイルの出力用

無事に Logless 0.7 以下とオリジナリティも承認されて、報酬圏内に入ることができた。