新規参加者向けのTips

はじめに

2015年に設立されたNumeraiarrow-up-rightは、毎週データサイエンスのトーナメントを開催しています。世界中のデータサイエンティストが、難読化されたデータを無料でダウンロードし、株式市場の予測モデルを構築することでトーナメントに参加できます。ダウンロードできるデータは難読化されたいるため、金融の知識がなくても参加することができます。

参加者は、自分の予測に賭け金をかけることでトーナメントに参加できます。良い予測を提出すると、より多くの仮想通貨(NMRarrow-up-right)を得ることができ、悪い予測を提出すると、NMRを没収されます。

Numeraiは、メタモデルarrow-up-rightと呼ばれる参加者のモデルを統合したモデルを構築し、得られたデータを自社のグローバル・エクイティ・ヘッジファンドの取引に反映させています。

参加者は、賭け金の有無にかかわらずトーナメントに参加することができますが、NumeraiはNMRがステークされたモデルのみを使用します。参加者は自分でデータを用意する必要はありませんが、チームから与えられたデータを最適化し、自分の予測を提出することが求められます。

目次

  1. Numeraiのホームページと用語集の読み方

  2. Numeraiに予測を提出する方法

  3. モデル診断の読み方

  4. Numeraiとコミュニティに関連する便利なリンク

1. Numeraiのホームページと用語集の読み方

NumeraiのホームページのURLは、https://numer.ai/tournamentarrow-up-right です。

Numeraire(NMR)トークン: NumeraireはERC-20ベースのトークンarrow-up-rightで、Numeraiへのステーキングに使用されます。

NMRは、Numeraiのトーナメントに参加したり、Numeraiに技術的な貢献をすることで獲得できます。NMRトークンは、Numeraiが構築されているErasure Protocolarrow-up-rightで使用することができます。現在、Erasureプロトコル上のアプリは、Numerai、Numerai Signals、Erasure Bayですが、プロトコルは誰でも構築できるようになっています。

Corr: 提出された予測データとターゲットとの相関係数を表します。

TC: 真の貢献度(TC)は、モデルの予測がNumeraiのメタモデルにとってどれだけ価値があるかを示します。

FNC: Feature neutral correlation (FNC)は、提出した予測データをNumeraiのすべての特徴量に対して中和した後の、ターゲットとの相関係数を表します。

Corr / TC / FNC Rep: Rep(評判)は、過去20ラウンドにおけるその指標の加重平均であり、リーダーボードでユーザーをランク付けするために使用されるものです。Repについての詳細はこちらarrow-up-right

ステーク 自分のモデルの予測にどれだけ自信があるかを示すために、NMRをステーク(預入れ+ロック)をします。良い予測を提出した場合、NMRを得ることができます。一方、悪い予測を提出した場合はNMRが没収されます。賭け金の最小値は3NMRです。ステークせずに参加して、自分のモデルがどのようなパフォーマンスを示すかを知ってから、ステークするかどうかを決めることができます。

ペイアウト 賭けたNMRに応じて受け取る報酬。毎週(1ラウンドは4週間)、賭け金の最大25%を獲得または没収されます。ステーキングとペイアウトについての詳細はこちらarrow-up-rightをご覧ください。

ホームページ上部

image

DOCS: ルール、FAQ、新規ユーザーセクションを含むNumeraiのドキュメントarrow-up-rightへのリンクです。

CHAT: 告知、一般的な議論、データサイエンスなどのチャンネルを含むチャットスペースです。NumeraiチームはRocketChatに積極的に参加しており、プロフィールにはteamタグが付いています。チームメンバーは主に太平洋時間で活動しています。参加はこちらarrow-up-rightから。

FORUM: Numerai、データサイエンス、ステイク戦略などに関連する議論のためのスペースです。主にコミュニティ内での情報共有を目的としています。リンクはこちらarrow-up-rightです。

LEADERBOARD: Numeraiに投稿された予測結果のランキングです。ステーク量、Rep、TCなどでソート可能です。

アカウント: 「ウォレット」「モデル」「設定」「ログアウト」の4つのリンクがあります。

・ウォレット:NMRトークンの入金と出金が行えます。

入金(deposit):ウォレットに登録されているアドレスにNMRトークンを送ることで入金できます。このアドレスに他のトークンを送ることはできません。

出金(withdraw):NMRトークンを自分のNumeraiウォレット以外のアドレスに出金することができます。出金を依頼する前に、出金先の外部アドレスがNMR受け取りに適していることを確認してください。間違ったアドレスに送ったNMRは回収できません。

image

モデル このページでは、Numeraiに投稿するモデルを追加/削除できます。モデルの追加/削除をするには、「新しいモデルの追加」/「既存のアカウントの吸収」を押してください。 複数モデルのアカウントやアカウントの吸収についてはこちらarrow-up-rightをご覧ください。

image

設定: Eメール、パスワード、2段階認証(2FA)、APIキーの設定を行います。

アカウントがNMRを保持しているため、2FAによるセキュリティ強化を推奨します。2FAを使用する場合は、リカバリーコードを保存する必要があります。2FAのデバイスにアクセスできなくなっても、Numeraiはアカウントをリセットしません。

image

ホームページ下部

モデル情報: モデルのランキングやCorr・TCのRepなどの情報を掲載しています。ˇのボタンでモデルを切り替えることができます。

データ情報: 最新ラウンドのデータダウンロードリンクと、予測結果のアップロードリンクです。

ステーク: NMRのステーク量を調整できます。ステーク方法には、CorrやTCがあります。Corrではターゲットとの相関関係のみにNMRを賭けることができ、TCでは真の貢献にNMRを賭けることができます。

2. Numeraiに予測を提出する方法

すぐにでもNumeraiに投稿したいという方は、大会参加者のkatsu1110さんarrow-up-rightCarlo Lepelaarsさんarrow-up-rightのKaggle Notebooks、および公式が発表しているExample scriptarrow-up-rightがとても参考になります。

今回の記事では、上記の記事や公式のサンプルモデルから一歩踏み込んだ説明(コードでどこを改善するかなど)をします。本説明により提出プロセスがわかりやすくなり、大会の出場者数が増えることを願っています。

今回紹介したコードは、基本的にGoogle Colab上で実行できます。Runボタンを押すと投稿ファイルが作成されますので、ぜひ使ってみてください。

Colabへのリンクarrow-up-right

コードを説明する前の基礎知識

i) Numeraiデータセットの構造

データセットはNumeraiのAPIを通じてダウンロードできますarrow-up-right

train_int8.parquetはトレーニングデータを格納したcsvファイル、validation_int8.parquetは検証用データを格納したcsvファイルです。

image

id: 暗号化された株のラベル

era: データが収集された期間のことです。eraが同じであれば、同じ期間にデータが収集されたことを意味します。

feature: ビン化した特徴量。特徴量は5段階にビン化されています。

target: ビン化された教師データ。また、ターゲットも5段階にビン化されています。

ii)データ提出までの流れ

  1. データ読み込み

  2. 特徴量エンジニアリング

  3. 機械学習

  4. モデルの強さについて

  5. 予測結果が書き込まれたcsvファイルの作成

  6. 中和の方法

2A.データ読み込み

pd.read_parquet("train.parquet") で読み込むことができます。

2B.特徴量エンジニアリング

Numeraiデータセットの特徴量は互いに相関が低く、特徴量エンジニアリングを行わなくてもある程度の結果が得られます。

まず、訓練データを見てみると、大まかにいくつかの種類の特徴量があることがわかります。

これらの特徴の平均値、偏差値、歪度などは有用な特徴です。

メモリに余裕のあるPCであれば、特徴量の差分データや多項式特徴量などを含めると、良い結果が得られます。Google Colabで実行するとクラッシュしてしまうので、コードのみ掲載します。

Kaggleで使われているような特徴量エンジニアリングがNumeraiでもそのまま使えるので、train、val、testのデータを加工ことで、良いCorrやSharpe ratioが得られると思います。Numeraiで良い結果を得るために必要な作業の一つが特徴量エンジニアリングであることに間違いはありません。

2C.機械学習

Numeraiデータセットに機械学習を適用する際に考慮しなければならないのは

i) どのような機械学習手法を使用するか(LightGBM、XGBoost、ニューラルネットワークなど)

ii) どのようなハイパーパラメータを使用するか

iii) 予測結果をスタックするかどうか などです。

今回は、計算時間を考慮してLightGBMを使用します。訓練データ以外のid、era、data_typeは機械学習には必要ありません。残ったfeature_ ○○を説明変数として、targetを教師データとして学習します。学習したデータを用いて、valに含まれるValidationデータとLiveデータについても予測データを作成します。

i)~iii)を考慮すれば、Corr等の値が改善されるので、この部分もやりこみ要素の要素の一つです。

2D.モデルの強さについて

spearman(numerai_corr), numerai_sharpe, max_drawdownを計算して、Validationデータのモデルの強さを推定することができます。

spearman(numerai_corr), numerai_sharpeは大きいほど良いです。

この中でも特にspearmanの値が大きい(0.025以上が目安)と良いモデルであるとみなせます。

(※Corrだけに注目すると、いろいろな問題が発生する可能性があります。Numeraiに詳しい方とは意見が分かれるところだと思いますが、初めて予測結果を提出する方向けの記事なので、このように表現させてください)

なお、用語の説明は以下の通りです。

spearman(numerai_corr): Correlationの平均値。高ければ高いほど良い(参考は0.022~0.04)

numerai_sharpe: 平均リターンを標準偏差で割った比率。高ければ高いほど良い(目安は1以上)

max_drawdown: 最大資産から落ち込む最大値

2E.予測結果の準備

中和用のファイルをsubmission_file.csvに書き込みます。このファイルにはidとpredictionのカラムが必要です。

2F.中和の方法

学習用データに含まれる特徴量やExample_model(Numeraiが公式に配布しているサンプルモデル)と自分のモデルを線形回帰させることで、それぞれの特徴量と予測結果の相関を下げつつ、シャープ比を向上させることができます。ただし、やりすぎるとCorrが大きく下がってしまうので、0.3~0.5くらいがいいと思います。どのようなモデルをどれだけ中和するかも一つの検討要素となります。(*中和をしない、というのも選択肢の一つです)

以下では、学習用データに含まれる特徴量に対して中和を行います。得られたファイルをcsvとして出力し、NumeraiのホームページのUpload predictionsから提出すれば完了です。

3.モデル診断の読み方

以下に示す目安はあくまでも一例です。参考程度にとどめてください。事実、以下の指標が悪いものでも上位にランクされるモデルも存在します。

Sharpe Ratio: Validationデータのシャープレシオは1以上が良い結果を得やすいです。

CORR20v2: ValidationデータのCorr平均値が0.025~程度であると良いです。

FNCv3: v3データの特徴量で中和した場合のCorr平均値(あまり参考になりません)

Std. Dev.: 各Eraの予測値とValidationデータの相関の標準偏差(あまり参考になりません)

Feat. Exposure: 特徴量の露出度。特徴量と予測結果のバランスの良さを示す指標です。小さければ小さいほど良いです。

Max Drawdown: -0.05以下を目安としましょう。

Ex. Preds Corr: サンプルモデルとの相関性;値はあまり気にする必要はないです。


4.新規参加者向けのTips

Numeraiとコミュニティに関連する便利なリンク

【初心者向け】

@tit_BTCQASHarrow-up-right:NumeraiのHPの見方+サブミット+便利リンク集arrow-up-right

【Numeraiに関する説明・HPの見方等】

Numerai公式arrow-up-right:Numerai 日本語ドキュメントarrow-up-right

@blog_UKIarrow-up-right:機械学習による株価予測 はじめようNumeraiarrow-up-right

@blog_UKIarrow-up-right:Numeraiトーナメント -伝統的クオンツと機械学習の融合-arrow-up-right

@blog_UKIarrow-up-right:機械学習による株価予測 さがそうNumerai Signalsarrow-up-right

@blog_UKIarrow-up-right:機械学習による株価予測 さがそう 真のNumerai Signalsarrow-up-right

@katsu1110arrow-up-right:KagglerへのNumeraiのススメarrow-up-right

@developer_quantarrow-up-right:【ファイナンス機械学習】著者によるNumerai解説スライドを日本語でまとめてみるarrow-up-right

@Y_oHr_Narrow-up-right:Numeraiはいいぞarrow-up-right

【計算モデル関連】

@katsu1110arrow-up-right:Numerai tournamentベースラインarrow-up-right

@katsu1110arrow-up-right:[numerai] MLP with KerasTuner Starterarrow-up-right

@tit_BTCQASHarrow-up-right:Numeraiに上位20%以上のスコアがでる予測値を提出する方法arrow-up-right

@habakan_farrow-up-right:Numeraiトーナメントのデータを構築過程から分析してみるarrow-up-right

【Corr,MMC関連】

@blog_UKIarrow-up-right:NumeariトーナメントのValid Corrをちょびっとだけ上げる小技arrow-up-right

@kunigakuarrow-up-right:Numerai で Random Seed Averagearrow-up-right

@blog_UKIarrow-up-right:Numeraiトーナメント:直交化に関するテクニックarrow-up-right

@katsu1110さんarrow-up-right:[Numerai] 成功が約束された特徴量を試してみるarrow-up-right

【Era selection】

@katsu1110arrow-up-right:Metric learningでlive eraに近いeraを見つけるarrow-up-right

【Era boost】

@pegion_holearrow-up-right:Era Boost についてarrow-up-right

【Numerai compute/Numerai api関連】

@murenohaarrow-up-right:Numerai APIとnumerapiライブラリのraw_queryメソッドarrow-up-right

@reo3313arrow-up-right:Numerai-Computeのエラー対応arrow-up-right

@tit_BTCQASHarrow-up-right:Numerai-cliを使って予測ファイルの提出を自動化する方法arrow-up-right

@habakan_farrow-up-right:Payoutの一定割合を各モデルにStakeするスクリプトarrow-up-right

【fireside chat】

@katsu1110arrow-up-right:Numerai 2021Q1炉端会議メモarrow-up-right

@katsu1110arrow-up-right:Numerai 2020Q4炉端会議メモarrow-up-right

@katsu1110arrow-up-right:Numerai Numerai 2021Q2炉端会議メモarrow-up-right

@katsu1110arrow-up-right:Numerai Numerai 2021Q3炉端会議メモarrow-up-right

@katsu1110arrow-up-right:Numerai Numerai 2021Q4炉端会議メモarrow-up-right

@katsu1110arrow-up-right:Numerai Numerai 2022Q1炉端会議メモarrow-up-right

【掲示板】

【日本語】Numeaiについて雑談・質問arrow-up-right

【日本語】Numeai Slackarrow-up-right

【Advent Calendar】

@kunigakuarrow-up-right:Numerai Advent Calendar 2020arrow-up-right

@kunigakuarrow-up-right:Numerai Advent Calendar 2021arrow-up-right

Numeraiに関するチュートリアル (*英語版)

@SurajParrow-up-right:Google Colabを使った簡単なガイドarrow-up-right

@perfect_fitarrow-up-right:Kaggleカーネルを使ったチュートリアルarrow-up-right

@perfect_fitarrow-up-right:Kaggleカーネルを使ったチュートリアル②arrow-up-right

@MesozoicMetallurgistarrow-up-right:MesozoicMetallurgist Numerai Model Listarrow-up-right

Last updated

Was this helpful?