Open hojokenta opened 5 years ago
kaggle.competitions.twosigmanews
使う必要がある。現在の取引日の予測を行うために将来のデータを使用していないことを保証するため
env = twosigmanews.make_env()
(market_train_df, news_train_df) = env.get_training_data() train_my_model(market_train_df, news_train_df)
for (market_obs_df, news_obs_df, predictions_template_df) in env.get_prediction_days(): predictions_df = make_my_predictions(market_obs_df, news_obs_df, predictions_template_df) env.predict(predictions_df)
env.write_submission_file()
* `train_my_model`と`make_my_predictions`は上記を動かすために書く必要がある関数
### In-depth Introduction
* まずはインポートして環境を作る
* 詳しくは`https://www.kaggle.com/dster/two-sigma-news-official-getting-started-kernel`
* `kaggle.competitions`のインポートは以下を参照
https://teratail.com/questions/151256
* どうやらローカル環境で動く類のものではなさそう
#### get_training_data function
* タプル型のデータフレームを返す
* market_train_df
* news_train_df
* 2017年2月から2016年12月までの市場およびニュースデータが全て含まれている
* 詳しくは[competition's Data](https://www.kaggle.com/c/two-sigma-financial-news/data)
#### get_prediction_days function
* 「予測日」(取引日)ごとにループし、最後に受信したデータ以降に発生したすべての市場およびニュースの観測結果を提供するジェネレータ。
* Yields:
* 予測がうまくいったら次のタプルが生成される
* market_observations_df: 次の予測日におけるマーケットデータ
* news_observations_df: 次の予測日におけるニュースデータ
* predictions_template_df: `ssetCode`と`confidenceValue`(初期値0)が入った予測関数
* 前回の利回りから予測が呼び出されていない場合は、何も返さない
### predict function
* 現在の予測日の予測値を格納する。`get_prediction_days`から返された`predictions_template_df`と同じフォーマットが必要です。
* Args:
* prediction_df: 以下のカラムを持つデータフレーム
* assetCode: The market asset.
* confidenceValue: 10日間でassetが増加するか減少するか分かる信頼スコア[-1.0, 1.0]
* `predictions_df`には、`get_prediction_days`から返された`predictions_template_df`
に含まれている正確な行セットが含まれている必要があります。
* `predict`functionは上記を検証しないが、`assetCode`に過不足があればサブミッションは失敗する
* 最初の日はランダムな予測をしましょう
import numpy as np def make_random_predictions(predictions_df): predictions_df.confidenceValue = 2.0 * np.random.rand(len(predictions_df)) - 1.0v
make_random_predictions(predictions_template_df) env.predict(predictions_template_df)
今度は次の予測日に進み、もう一度予測する
## Main Loop
* すべての日をループしてランダムな予測を返そう
* (`get_prediction_days`から返された)`day`ジェネレータは、最後に到達した時点で戻り値を停止します。
### write_submission_file function
* 予測値を現在の作業ディレクトリのCSVファイル(`submission.csv`)に書き込みます。
* `write_submission_file`を単独で呼び出しても、競技会には提出されない。カーネルの出力の一部として`submission.csv`ファイルを書き込むだけ。submitするには、カーネルをコミットし、生成された`submission.csv`ファイルをそのカーネルバージョンの出力タブを探し(カーネルエディタの外にあることに注意)、 "Submit to Competition"をクリックする。ステージ2でカーネルを再実行すると、選択した提出物にリンクされたカーネルバージョン(”コミット”を押すと生成されます)が実行されます。
### Restart the Kernel to run your code again
* 不正行為に対抗するために、カーネル実行ごとに`make_env`を呼び出すか、`get_prediction_days`で一度だけ反復することができます。しかし、モデルを反復処理している間に、少しモデルを変更してもう一度やり直すのが妥当です。残念ながら、単にコードを再実行しようとしたり、ブラウザページをリフレッシュしたりしても、前に実行していたのと同じカーネル実行セッションで実行され、`twosigmanews`モジュールは引き続きエラーを投げます。この問題を回避するには、カーネルエディタの一番下にある[コンソール]タブの[再起動]ボタンを押すことで、実行セッションを明示的に再起動する必要があります。
Overview
Description
Evaluation
confidenceValue
を予測する。この値には、10日にわたって与えられたassetCode
の市場調整された収益が乗算されるconfidenceValue
を割り当てる(1.0に近い値を取る)。負のリターンを持つことを期待していれば、その逆(-1.0に近い値を取る)。Submission File
Timeline
Submission Instructions
Required Steps
Important Notes
data
Market data
このデータには、米国に上場している金融商品のサブセットが含まれています。含まれる商品のセットは日々変化し、取引量と情報の入手可能性に基づいて決定されます。つまり、このデータのサブセットに出入りする手段があるかもしれません。したがって、提供されるデータにギャップがある可能性があり、これは必ずしもそのデータが存在しないことを意味するわけではありません(選択基準のためにこれらの行が含まれない可能性があります)。
New data
ニュースデータには、ニュース記事レベルと資産レベルの両方の情報が含まれています(つまり、テーブルは意図的に正規化されていません)。