株式を分析する時に過去の株価を見て節目であったり値動きの特徴を掴むのは株式投資においては基本的なことですがネット証券が提供しているデータでは日足表示にすると直近の数ヶ月までしか見れなかったりと制限があります。
ここでは上場全銘柄の過去1983年〜2019年までの日足データの入手についてPythonで取得する方法を紹介します。
期間について
10年分ぐらいのデータがあれば十分だと思いますが
後述する株式投資メモで確認した最も古いデータが1983年が最も古いデータでしたので1983年〜のデータを取得します。
(ちなみに現在上場している個別株で最も古い株式会社は1810松井建設で、創業1586年で1961年に東証2部に上々しています。そこまで古いデータはたぶん簡単には入手できないので諦めます。)
取得方法
CSVデータを取得出来るサイトで有名どころはヤフーファイナンスです。
こちらはVIP倶楽部に登録すれば全銘柄のCSVデータをダウンロードできますが月2138円かかるためパスします。
一度契約後ダウンロードしてすぐに解約するればいいので試しに使うのもありでしたが、あまり魅力的なサービスには思えなかったので、、
筆者が知る限り2019年2月現在で無料で日足のOHLCVデータを取得できるサイトは株式投資メモのみです。
こちらのサイトは無料でCSVファイルをダウンロードすることができます。
ソースコード
最後にダウンロードするコードを記載します。
from selenium import webdriver from selenium.common.exceptions import NoSuchElementException import time driver = webdriver.Chrome("C:\chromedriver_win32/chromedriver.exe") def download_stock_csv(code_range,year_range): for code in code_range: try: for year in year_range: url = 'https://kabuoji3.com/stock/{0}/{1}/'.format(code,year) driver.get(url) try: driver.find_element_by_name("csv").click() time.sleep(3) driver.find_element_by_name("csv").click() except NoSuchElementException: print("no data") pass time.sleep(1) except NoSuchElementException: print("no data") pass time.sleep(3) download_stock_csv(range(1301,9998),range(1983,2020))
seleniumモジュールを使用しますのでpipにてインストール、chromeドライバーをインストール(ここではC:\chromedriver_win32/chromedriver.exe)してから使用してください。
スクレイピングでは短時間でサーバーに複数回アクセスすると負荷がかかりすぎるので少し長めに間隔をとって3秒ごとにダウンロードをするように時間を開けています。
また膨大なファイルの量になるのでHDDの空きスペースは十分に確保してください。
まとめ
ここでは上場全銘柄の日足データを取得する方法について述べました。
節目などは直近になればなるほど重要度が増すのであまり古いデータの価値は少ないという見方もありますがそのような傾向がある銘柄なのかどうか判断するのに使えればいいと思っています。
最後にWEBスクレイピングの参考書籍を載せておきます。
Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう
コメント