新規参加者向けのTips
Last updated
Was this helpful?
Last updated
Was this helpful?
2015年に設立されたは、毎週データサイエンスのトーナメントを開催しています。世界中のデータサイエンティストが、難読化されたデータを無料でダウンロードし、株式市場の予測モデルを構築することでトーナメントに参加できます。ダウンロードできるデータは難読化されたいるため、金融の知識がなくても参加することができます。
参加者は、自分の予測に賭け金をかけることでトーナメントに参加できます。良い予測を提出すると、より多くの仮想通貨()を得ることができ、悪い予測を提出すると、NMRを没収されます。
Numeraiは、と呼ばれる参加者のモデルを統合したモデルを構築し、得られたデータを自社のグローバル・エクイティ・ヘッジファンドの取引に反映させています。
参加者は、賭け金の有無にかかわらずトーナメントに参加することができますが、NumeraiはNMRがステークされたモデルのみを使用します。参加者は自分でデータを用意する必要はありませんが、チームから与えられたデータを最適化し、自分の予測を提出することが求められます。
Numeraiのホームページと用語集の読み方
Numeraiに予測を提出する方法
モデル診断の読み方
Numeraiとコミュニティに関連する便利なリンク
NumeraiのホームページのURLは、 です。
Numeraire(NMR)トークン: Numeraireはで、Numeraiへのステーキングに使用されます。
NMRは、Numeraiのトーナメントに参加したり、Numeraiに技術的な貢献をすることで獲得できます。NMRトークンは、Numeraiが構築されているで使用することができます。現在、Erasureプロトコル上のアプリは、Numerai、Numerai Signals、Erasure Bayですが、プロトコルは誰でも構築できるようになっています。
Corr: 提出された予測データとターゲットとの相関係数を表します。
TC: 真の貢献度(TC)は、モデルの予測がNumeraiのメタモデルにとってどれだけ価値があるかを示します。
FNC: Feature neutral correlation (FNC)は、提出した予測データをNumeraiのすべての特徴量に対して中和した後の、ターゲットとの相関係数を表します。
ステーク 自分のモデルの予測にどれだけ自信があるかを示すために、NMRをステーク(預入れ+ロック)をします。良い予測を提出した場合、NMRを得ることができます。一方、悪い予測を提出した場合はNMRが没収されます。賭け金の最小値は3NMRです。ステークせずに参加して、自分のモデルがどのようなパフォーマンスを示すかを知ってから、ステークするかどうかを決めることができます。
LEADERBOARD: Numeraiに投稿された予測結果のランキングです。ステーク量、Rep、TCなどでソート可能です。
アカウント: 「ウォレット」「モデル」「設定」「ログアウト」の4つのリンクがあります。
・ウォレット:NMRトークンの入金と出金が行えます。
入金(deposit):ウォレットに登録されているアドレスにNMRトークンを送ることで入金できます。このアドレスに他のトークンを送ることはできません。
出金(withdraw):NMRトークンを自分のNumeraiウォレット以外のアドレスに出金することができます。出金を依頼する前に、出金先の外部アドレスがNMR受け取りに適していることを確認してください。間違ったアドレスに送ったNMRは回収できません。
設定: Eメール、パスワード、2段階認証(2FA)、APIキーの設定を行います。
アカウントがNMRを保持しているため、2FAによるセキュリティ強化を推奨します。2FAを使用する場合は、リカバリーコードを保存する必要があります。2FAのデバイスにアクセスできなくなっても、Numeraiはアカウントをリセットしません。
モデル情報: モデルのランキングやCorr・TCのRepなどの情報を掲載しています。ˇのボタンでモデルを切り替えることができます。
データ情報: 最新ラウンドのデータダウンロードリンクと、予測結果のアップロードリンクです。
ステーク: NMRのステーク量を調整できます。ステーク方法には、CorrやTCがあります。Corrではターゲットとの相関関係のみにNMRを賭けることができ、TCでは真の貢献にNMRを賭けることができます。
今回の記事では、上記の記事や公式のサンプルモデルから一歩踏み込んだ説明(コードでどこを改善するかなど)をします。本説明により提出プロセスがわかりやすくなり、大会の出場者数が増えることを願っています。
今回紹介したコードは、基本的にGoogle Colab上で実行できます。Runボタンを押すと投稿ファイルが作成されますので、ぜひ使ってみてください。
i) Numeraiデータセットの構造
train_int8.parquetはトレーニングデータを格納したcsvファイル、validation_int8.parquetは検証用データを格納したcsvファイルです。
id: 暗号化された株のラベル
era: データが収集された期間のことです。eraが同じであれば、同じ期間にデータが収集されたことを意味します。
feature: ビン化した特徴量。特徴量は5段階にビン化されています。
target: ビン化された教師データ。また、ターゲットも5段階にビン化されています。
ii)データ提出までの流れ
データ読み込み
特徴量エンジニアリング
機械学習
モデルの強さについて
予測結果が書き込まれたcsvファイルの作成
中和の方法
pd.read_parquet("train.parquet")
で読み込むことができます。
Numeraiデータセットの特徴量は互いに相関が低く、特徴量エンジニアリングを行わなくてもある程度の結果が得られます。
まず、訓練データを見てみると、大まかにいくつかの種類の特徴量があることがわかります。
これらの特徴の平均値、偏差値、歪度などは有用な特徴です。
メモリに余裕のあるPCであれば、特徴量の差分データや多項式特徴量などを含めると、良い結果が得られます。Google Colabで実行するとクラッシュしてしまうので、コードのみ掲載します。
Kaggleで使われているような特徴量エンジニアリングがNumeraiでもそのまま使えるので、train、val、testのデータを加工ことで、良いCorrやSharpe ratioが得られると思います。Numeraiで良い結果を得るために必要な作業の一つが特徴量エンジニアリングであることに間違いはありません。
Numeraiデータセットに機械学習を適用する際に考慮しなければならないのは
i) どのような機械学習手法を使用するか(LightGBM、XGBoost、ニューラルネットワークなど)
ii) どのようなハイパーパラメータを使用するか
iii) 予測結果をスタックするかどうか などです。
今回は、計算時間を考慮してLightGBMを使用します。訓練データ以外のid、era、data_typeは機械学習には必要ありません。残ったfeature_ ○○を説明変数として、targetを教師データとして学習します。学習したデータを用いて、valに含まれるValidationデータとLiveデータについても予測データを作成します。
i)~iii)を考慮すれば、Corr等の値が改善されるので、この部分もやりこみ要素の要素の一つです。
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: 最大資産から落ち込む最大値
中和用のファイルをsubmission_file.csvに書き込みます。このファイルにはidとpredictionのカラムが必要です。
学習用データに含まれる特徴量やExample_model(Numeraiが公式に配布しているサンプルモデル)と自分のモデルを線形回帰させることで、それぞれの特徴量と予測結果の相関を下げつつ、シャープ比を向上させることができます。ただし、やりすぎるとCorrが大きく下がってしまうので、0.3~0.5くらいがいいと思います。どのようなモデルをどれだけ中和するかも一つの検討要素となります。(*中和をしない、というのも選択肢の一つです)
以下では、学習用データに含まれる特徴量に対して中和を行います。得られたファイルをcsvとして出力し、NumeraiのホームページのUpload predictionsから提出すれば完了です。
以下に示す目安はあくまでも一例です。参考程度にとどめてください。事実、以下の指標が悪いものでも上位にランクされるモデルも存在します。
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: サンプルモデルとの相関性;値はあまり気にする必要はないです。
【初心者向け】
【Numeraiに関する説明・HPの見方等】
【計算モデル関連】
【Corr,MMC関連】
【Era selection】
【feature neutralization】
【Era boost】
【Numerai compute/Numerai api関連】
【fireside chat】
【掲示板】
【Advent Calendar】
Corr / TC / FNC Rep: Rep(評判)は、過去20ラウンドにおけるその指標の加重平均であり、リーダーボードでユーザーをランク付けするために使用されるものです。Repについての詳細は
ペイアウト 賭けたNMRに応じて受け取る報酬。毎週(1ラウンドは4週間)、賭け金の最大25%を獲得または没収されます。ステーキングとペイアウトについての詳細はをご覧ください。
DOCS: ルール、FAQ、新規ユーザーセクションを含むNumeraiのへのリンクです。
CHAT: 告知、一般的な議論、データサイエンスなどのチャンネルを含むチャットスペースです。NumeraiチームはRocketChatに積極的に参加しており、プロフィールにはteam
タグが付いています。チームメンバーは主に太平洋時間で活動しています。参加はから。
FORUM: Numerai、データサイエンス、ステイク戦略などに関連する議論のためのスペースです。主にコミュニティ内での情報共有を目的としています。リンクはです。
モデル このページでは、Numeraiに投稿するモデルを追加/削除できます。モデルの追加/削除をするには、「新しいモデルの追加」/「既存のアカウントの吸収」を押してください。 複数モデルのアカウントやアカウントの吸収についてはをご覧ください。
すぐにでもNumeraiに投稿したいという方は、大会参加者のやのKaggle Notebooks、および公式が発表しているがとても参考になります。
。
に参加することでさらなるヒントやサポートを得られます!
に参加することで、日本人参加者とコミュニケーションがとれます!
データ分析、ヒント、チュートリアルに関する投稿は、をチェックしてください。
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
: