LoginSignup
131
128

More than 5 years have passed since last update.

Ruby で日本国内の株価のデータを取得する

Last updated at Posted at 2014-10-21

株価は企業の業績を示す定量的な指標として最もポピュラーなものと言えるでしょう。

株の投資においては、銘柄を選ぶ時株価指標の PER, EPS, PBR, BPS, ROE, ROA, 自己資本比率、流動比率等の数値が参考にされます

しかし投資ではなく、ある企業における株価以外の何らかの情報と、定量的な数値として単純に株価と突き合わせるという場面では、とりあえず取引日各日の四本値だけを用意しておけば良さそうです。

四本値を取得するライブラリ

JpStock は日本国内の株に対応しており、現在もメンテナンスされていて動作するライブラリです。

JpStock
https://github.com/utahta/jpstock

これはいわゆる Yahoo! ファイナンスのスクレイピングをするライブラリです。

銘柄に対する株価を取得する

銘柄コード (4 桁) を引数に .price メソッドを叩けば取得できます。

require 'jpstock'
stock = JpStock.price(:code => code)

CSV ファイルへ保存する

あとは、たとえば次のように CSV ファイルへ保存すれば良いでしょう。

  def write_price(stock)
    CSV.open(filename, "a") {|csv|
      csv << [
        stock.date.strftime("%Y-%m-%d"), # 日付
        stock.code,  # 銘柄コード
        stock.open,  # 初値
        stock.close, # 終値
        stock.high,  # 高値
        stock.low,   # 安値
        stock.volume # 出来高
      ]
    }
  end

Fluentd へ出力する

最近は Fluentd という素晴らしいログ収集ソフトウェアがあり、これに出力してしまえば RDBMS や KVS や JSON 形式のテキストファイル、あるいは Amazon S3 など自由自在に保存できますから、これを使うと便利でしょう。

  def save_to_fluentd(stock)
    @fluentd.post('stock.price', {
      :created_at => stock.date,
      :code => stock.code,
      :open => stock.open,
      :close => stock.close,
      :high => stock.high,
      :low => stock.low,
      :volume => stock.volume
    })
  end

過去からの株価履歴を取得する

過去にさかのぼって株価情報を取得する場合は .historical_prices メソッドを使います。これで年単位さかのぼって株価を取得できます。

date = Date.parse(start_date)
stocks = JpStock.historical_prices(
  :code => code, 
  :start_date => date, 
  :end_date => Date.today # 今日まで
)

株価を可視化する

ためしに株式会社 DTS の 2001 年以降の株価を matplotlib を使って可視化してみます。

stock_9682.png

このように収集したデータを可視化することができます。

まとめ

株価と業績は連動しますから、このライブラリを利用すれば何らかの外部の要因と、企業の株価との関連性をおおまかに調べるといったことができるわけです。

131
128
3

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
131
128