7
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

機械学習を用いた株価予測 [データ入手編]

Last updated at Posted at 2020-07-15

はじめに

どうにか工夫して、Deep Learningを使った株価予測をやってみたいと考えてこの記事を書くことにしました。
この記事では、株価予測に使うデータを「yahoo finance」からプログラムでダウンロードしてくることを目的に書いています。

ちなみに、どういったモデルで株価を予測するのかについてはまだ未定で、これから考えて行きたいと思っています。いいアイディアがやオススメの手法がある方は教えていただけるとありがたいです。

では、やっていきたいと思います。

対象データ

今回の入手先は、「yahoo finance」です。
対象は、カブサポから上場銘柄一覧のcsvファイルがダウンロードできるので、その中の東証一部に絞ってデータを取ってきたいと思います。

ダウンロードできる期間は、2010〜現在までです。

コード

stock_data.py
import requests
import io
import re
import pandas as pd

cols = ['Id', 'Date', 'Open', 'High', 'Low', 'Close', 'Adj_Close', 'Volume']
stock_data = pd.DataFrame(columns=cols)

code_list = pd.read_csv('stock_code_list.csv') # カブサポから入手したファイル
code_list = code_list[code_list['市場名'] == '東証1部']['銘柄コード']

for code in code_list:
    url = 'https://query1.finance.yahoo.com/v7/finance/download/{}.T?period1=1262304000&period2=1589241600&interval=1d&events=history'.format(code)
    res = requests.get(url)
    
    if res.status_code != 200:
        print('NotFound:', code)
        
    else:
        stock = pd.read_csv(io.StringIO(res.text))
        stock['Id'] = code
        stock_data = pd.concat([stock_data, stock], ignore_index=True, sort=False, keys=cols)
        print('OK:', code)

これで、ダウンロードできました。
データサイズは約500万行ありました。

おわりに

これでデータを入手できたので、次は予測アプローチを考えて行きたいと思います。
個人的には、ただ翌日の株価が上がるか下がるかとかではなく、もっと個人投資家向けに
上昇トレンドや下降トレンドを検知するようなプログラムができたらなと考えています。
また、定性データも加えられたら精度も上がるかもと考えています。

いいアイディアがあればください、、、

こんな感じで、ちょこちょこ書いていきたいと思います。

次回記事:機械学習を用いた株価予測 [システム概要編]

7
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?