💭

SIGNATE日本取引所グループ ニュース分析チャレンジ[環境構築編]

2021/04/14に公開

機械学習のコンペサイトSIGNATEの株価で儲けるコンペ[1]に挑戦した。

追記

結果、4位に入賞しました!

コンペの説明

課題: 現金100万円を原資として、1週間の収益がより高くなるポートフォリオを組む。
コンペの特徴:

  • 株価データ、日経のニュースデータ、ファンダメンタルデータ(決算のデータ)が与えられる。
  • 予測をするプログラム自体を提出し、未来の実際の株式市場で評価が行われる


※細かいルールはサイト参照[2]

環境構築

本番環境と合わせるために公式で配布されているdockerを使う。
以下はdocker、docker-composeが入っている前提で書く。

プロジェクトのトップディレクトリに以下を作る

  • docker-compose.yml
  • Dockerfile
  • submit/requirements.txt

Dockerfile

FROM signate/runtime-jpx:2021.03
COPY submit/requirements.txt /workspace/requirements.txt
WORKDIR /workspace
RUN pip install -U pip
RUN pip install -r /workspace/requirements.txt

docker-compose.yml

version: '2.3'

services:
  signate_news:
    build:
      context: ./
      dockerfile: ./Dockerfile
    user: root:root
    container_name: "signate_news"
    working_dir: "/workspace"
    ports:
    - "7777:7777"
    #runtime: nvidia
    volumes:
    - .:/workspace
    tty: true

GPUが存在するマシーンだと runtime: nvidaをコメントアウトすればgpuを認識する。
ポイントはvolumesでプロジェクトルートごとコンテナの中にマウントしている点。こうするとコンテナ外での編集結果が常にコンテナの中に反映されるため、signateのようにコードをがしがし書きける時は便利。
またport 7777はjuppyter notebookようにポートフォワーディングしている。

実行手順は

docker-compose up -d  # コンテナ起動
docker exec -it signate_news /bin/bash  # コンテナの中に入る
# pythonの実行
python xxx.py
# jupyter notebookの起動
jupyter notebook --port 7777 --ip=0.0.0.0 --allow-root 

exit # コンテナを出る
docker-compose down  # コンテナの削除

つづく[3]

脚注
  1. SIGNATE ↩︎

  2. コンペのルール ↩︎

  3. 次の記事 ↩︎

Discussion