Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Numerai はいいぞ / An encouragement of Numerai

4d5544d0ea612705b35dcca4922e3864?s=47 Kon
May 25, 2021

Numerai はいいぞ / An encouragement of Numerai

4d5544d0ea612705b35dcca4922e3864?s=128

Kon

May 25, 2021
Tweet

Transcript

  1. Numerai はいいぞ 社内勉強会 May 25, 2021

  2. Yu Ohori (a.k.a. Kon) NS Solutions Corporation (Apr 2017 -

    ) • Researcher • Data Science & Infrastructure Technologies • System Research & Development Center • Technology Bureau @Y_oHr_N @Y-oHr-N #SemiSupervisedLearning #AnomalyDetection #DataOps
  3. Outline Numerai を知らない,Numerai に参加したことがない方に向けた内容です.解法の話は一切しません • Numerai • Numerai tournament ◦

    data ◦ modeling ◦ diagnostics ◦ scoring ◦ payouts ◦ results ◦ remarks • Q&A 3
  4. Numerai 2015 年 10 月に設立されたクラウドソーシングヘッジファンド • 多数の分析者が作成したモデルの予測結果に基づいて資金を運用 2 種類のコンペティションを週次開催 •

    Numerai tournament ◦ 所与の金融データを使用して株式市場の動向を予測 • Numerai signals ◦ 自身で収集した金融データを使用して独自の投資指標を作成 4
  5. Numerai tournament - data id era data_t ype featur e_intel

    ligence 1 featur e_intel ligence 2 ... featur e_wisd om45 featur e_wisd om46 target n0003 15175 b6797 7 era1 train 0 0.5 ... 0.5 0.75 0.75 n0014 af834a 96cdd era1 train 0 0 ... 0.25 1 0.25 ... ... ... ... ... ... ... ... ... n009aa 2d323 89eca era120 train 0.25 1 ... 0.5 0.25 0 匿名化された金融データを使用 • id ◦ 日時と銘柄名の組を表す識別子(推定) • era ◦ ひと月に相当する期間 • data_type ◦ train: 訓練データ ◦ validation: 参加者のための検証データ ◦ test: Numerai のための検証データ ◦ live : テストデータ • feature_{group}{i} ◦ 6 つの集合からなる 310 つの特徴 ◦ {0, 0.25, 0.5, 0.75, 1} • target ◦ {0, 0.25, 0.5, 0.75, 1} 5
  6. 2020 年 4 月から以下のようにデータの仕様が変更 • valid1 が容易に予測できたため,元々の test から valid2

    を新たに用意 • 過去のデータとの整合性を保つため,test1, test2 に重複行が発生 Numerai tournament - data train (501k rows) era1 ~ era120 valid1 (56k rows) era121 ~ era132 valid2 (81k rows) era197 ~ era212 test1 (1407k rows) era575 ~ era852 test2 era927 ~ era??? live eraX numerai_tournament_data.csv numerai_training_data.csv 不変 ラウンド毎に変化 時刻 6 Validation 2 Announcement - Announcements - Numerai Forum
  7. Numerai tournament - modeling 7 example モデルとして XGBoost を利用したコードを公開

  8. Numerai tournament - diagnostics 検証データ(valid1, valid2)を用いてモデルの予測性能を評価 • Validation Sharpe: corr

    のシャープレシオ(Validation Corr / Validation SD) • Validation Corr: target との era 別 corr の平均値 • Validation FNC: 全特徴に対して直行化した後の target との era 別 corr の平均値 • Validation SD: target との era 別 corr の標準偏差 • Feature Exposure: 各特徴との era 別 corr の平均値の最大値
 ◦ 特定の特徴に予測結果が大きく依存しているかどうか
 • Max Drawdown: target との era 別 corr + 1 の累積積の最大値 ◦ 特定の期間に予測性能が急激に悪化するかどうか • Corr + MMC Sharpe: corr + mmc のシャープレシオ • MMC Mean: era 別 mmc の平均値 • Corr With Example Preds: example モデルの予測結果との era 別 corr の平均値 8
  9. Numerai tournament - diagnostics Numerai は参加者が提出した全予測結果を掛金で加重平均してメタモデルを作成 • メタモデルの予測性能を最大化するため,それに大きく貢献する独自的な予測結果を高く評価 2020 年

    5 月から Meta Model Contribution (MMC) による評価を採用 • メタモデルの予測結果に対して直行化した後の target との era 別共分散の平均値 / 0.0841 ◦ 検証時,メタモデルの予測結果は未知であるため,example モデルの予測結果を用いて計算 • 自身のそれと似たような予測結果が沢山ある(メタモデルとの差異が少ない)と値が悪化 ◦ private sharing の防止に寄与 9 MMC2 Announcement - Data Science - Numerai Forum
  10. 予測結果を N 次元のベクトルと考えたとき,corr と mmc は以下のように表すことができる • corr = cos

    θ • mmc = (target と neutralized user の内積) / 0.0841 Numerai tournament - diagnostics 10 meta model user neutralized user target θ
  11. Numerai tournament - scoring Sun Mon Tue Wed Thu Fri

    Sat 1 2 3 4 5 6 7 Round N open 18:00 UTC 8 9 Submission deadline in round N 14:30 UTC 10 11 12 1st daily score in round N 20:00 UTC 13 14 Round N+1 open 18:00 UTC 15 16 17 18 19 20 21 Round N+2 open 18:00 UTC 22 23 24 25 26 27 28 Round N+3 open 18:00 UTC 29 30 31 1 2 3 4 Round N+4 open 18:00 UTC 5 6 7 8 Final score in round N 20:00 UTC 9 10 11 Round N+5 open 18:00 UTC 11 提出された予測結果を 4 週間に渡って評価
  12. Numerai tournament - payouts 参加者は Numerai が発行する仮想通貨 Numeraire (NMR) を掛金(>=

    3 NMR)として予測結果の品質を担保 • 2021 年 4 月から掛金の下限が 3 NMR に変更 • 掛金の変更は 4 週間後に反映 Numerai は予測結果の出来に応じて報酬を付与,または,掛金の一部を没収 • 4 週間前のラウンドの結果に基づいて掛金を毎週更新 12 Announcing new NMR staking minimum - Announcements - Numerai Forum
  13. Numerai tournament - payouts 2021 年 3 月から以下の式で報酬額(没収額)を計算 • payout

    = stake_value * payout_factor * clip(corr + mmc * mmc_multiplier, -0.25, 0.25) ◦ stake_value: 掛金 ◦ payout_factor ∈ [0, 1]: 指数的に増加する報酬を制御するために設けられた係数 ◦ mmc_multiplier ∈ {0, 0.5, 1, 2}: 参加者が設定できる係数 13 Announcing new payouts system mini-release - Announcements - Numerai Forum
  14. Numerai tournament - payouts 14 上位者の年利は 300 % 超

  15. Numerai tournament - results 15 Numeraire price today, NMR live

    marketcap, chart, and info | CoinMarketCap 4/12 から 52,800 JPY を原資に参加 出金・取引手数料を差引後,5.27 NMR に換金
  16. Numerai tournament - results 16 INTEGRATION_TEST Numerai が提供する example モデル

    NEUTRALIZE 筆者が作成したモデル ラウンド 259, 260 共に example モデルに敗北…
  17. Numerai tournament - remarks 17 Kaggle に比べて人口が少ない,かつ,notebook も頻繁に公開されていないため,情報を収集しづらい • 1

    ヶ月やそこらで好成績を出すことは難しい データの変化に動じない安定したモデルが求められる • 時系列データであるため,検証を念入りに行う必要がある • リスクに関する評価指標も注視しなければならない まずは example モデルに賭けるべし • example モデルに賭けても十分に稼ぐことができる • 十分に検証できないまま自分のモデルに賭けると損する可能性が大いにある 長い間モデルを自分で運用するので MLOps の勘所を自然と掴むことができる
  18. Q&A Numerai の CEO と CTO が YouTube で以下の質問について回答 •

    参加者が増えると一人当たりの報酬は減るか? ◦ 短期的に報酬は減るが,NMR の価値も上昇するので,中長期的に見れば皆が儲かる • 価格変動の激しい NMR の代わりとしてステーブルコインによる報酬を考えているか? ◦ 報酬総額の上限である 500 万 NMR を使い切らない限り,考えていない • 今後,報酬総額の上限を引き下げることを考えているか? ◦ 2020 年 9 月時点で,Numerai は参加者に対して 1 日当たり 300 万 USD 支払っている ◦ NMR を十分に保有しているので,むしろ上限を引き上げることも考えている • 報酬総額が上限に達してしまったらどうするか? ◦ Numerai はまだ小さいファンドであるため,自身の利益の一部を参加者に還元することができない ◦ NMR を使用しているのは,利益を出す前に参加者に報酬を支払うことができるからである ◦ いずれ還元する計画を考えているが,今はまだ話す段階ではない • payout_factor が 0.1 に達してしまったらどうするか? ◦ それまでに報酬体系は必ず刷新する ◦ コンペティションをある程度難しくして報酬総額の上限を撤廃するのが理想である 18
  19. Appendix - tools numerapi • Numerai API の Python クライアント

    • データのダウンロード,予測結果のアップロード,ユーザ情報の集計が可能 • Numerai tournament と Numerai signals の両方で動作 numerai-cli • 予測結果を自動でアップロードするワークフローを AWS 上に作成するツール • 費用は 5 USD / 月未満 Numerai Payouts • 現在のスコアや損益を確認できるアプリケーション 19
  20. Appendix - cryptocurrency exchange NMR は国内取引所で扱っていないため,以下の手順で Numerai に NMR を送金

    • 出金や取引に多くの手数料が発生 国内取引所 e.g. bitFlyer 国内銀行 e.g. 楽天銀行 海外取引所 e.g. Binance Numerai 1. JPY 10. JPY 3. BTC 8. BTC 5. NMR 6. NMR 2. JPY 2. BTC 4. BTC 4. NMR 7. BTC 7. NMR 9. BTC 9. JPY 20
  21. Appendix - cryptocurrency exchange 取引所名 JPY 出金手数料 [JPY] BTC 出金手数料

    [BTC] NMR 出金手数料 [NMR] 取引手数料(Maker) [%] 取引手数料(Taker) [%] bitFlyer 220~770 (出金先銀行,出金額に応じて) 0.0004 NaN 0.01~0.15 (取引量に応じて) 0.01~0.15 (取引量に応じて) bitbank 550~770 (出金額に応じて) 0.0006 NaN -0.02~0 (通貨ペアに応じて) 0~0.12 (通貨ペアに応じて) Coincheck 407 0.001 NaN 0 0 GMO コイン 0 0 NaN -0.01 0.05 Binance NaN 0.000006~0.00084 (ネットワークに応じて) 0.48 0.012~0.1 (取引量,残高,招待数に応じて) 0.024~0.1 (取引量,残高,招待数に応じて) 21