tidyquantで日経平均株価を取得する

tidyquantというパッケージを使えばtidyverse的なRの世界で株価の分析ができるそうです。

Introduction to tidyquant

Rとtidyverseに使い慣れた身としてこれは便利すぎるので少し調査してみました。

インストール

普通のパッケージと同じです。

install.packages("tidyquant")

依存パッケージが大量に導入されます。

株価の取得

メイン関数の一つであるtq_getを使えばアメリカ株ならばティッカーシンボルから株価を取得できます。
デフォルトのデータソースはyahoo financeです。
今回はyahoo financeから大阪証券取引所の日経平均先物のデータを取得してみます。

library(tidyquant)
nikkei <- tq_get("^N225")
nikkei
## A tibble: 2,545 x 7
#   date        open  high   low close volume adjusted
#   <date>     <dbl> <dbl> <dbl> <dbl>  <dbl>    <dbl>
# 1 2009-01-05 8991. 9127. 8987. 9043.  84900    9043.
# 2 2009-01-06 9130. 9171. 9030. 9081. 154800    9081.
# 3 2009-01-07 9134. 9325. 9106. 9239. 205600    9239.
# 4 2009-01-08 9143. 9149. 8876. 8876. 149900    8876.
# 5 2009-01-09 8933. 8957. 8773. 8837. 137000    8837.
# 6 2009-01-13 8733. 8733. 8406. 8414. 135600    8414.
# 7 2009-01-14 8426. 8516. 8359. 8438. 132700    8438.
# 8 2009-01-15 8309. 8309. 7998. 8023. 158300    8023.
# 9 2009-01-16 8125. 8284. 8067. 8230. 140600    8230.
#10 2009-01-19 8318. 8352. 8222. 8257. 102600    8257.
## ... with 2,535 more rows

すばらしい。tibbleで取得されています。

dataはすでにtidyなので普段使い慣れているtidyverseの関数をそのまま適用することができます。
ちなみにtidyverseだけでなくlubridateも既に自動でロードされています。

nikkei %>% 
  filter(year(date) == 2019, !is.na(close)) %>%
  mutate(
    month = month(date, label = TRUE),
    win = close > open
  ) %>%
  ggplot(aes(month)) +
    geom_bar(aes(fill = win), position = "dodge") +
    labs(
      title = "In April 2019, Nikkei won mostly",
      x = "",
      y = "the number of days",
      fill = "gain > 0"
    )
4月はリターンがプラスの日が多いようです。

tidyverseなら使い慣れてるからちょっとした集計なら息を吐くようにできるぜ!

nikkei %>%
  filter(year(date) == 2019, !is.na(close)) %>%
  mutate(
    month = month(date, label = TRUE),
    win = close > open,
    lastwin = lag(win)
  ) %>%
  filter(!is.na(lastwin)) %>%
  ggplot(aes(month)) +
    geom_bar(aes(fill = win), position = "dodge") +
    facet_wrap(~paste("last gain > 0:", lastwin)) +
    labs(
      title = "In March, Nikkei won mostly after won.",
      subtitle = "In January, Nikkei won mostly after lose.",
      x = "",
      y = "the number of days",
      fill = "gain > 0"
    )

まとめ

tidyquantを使えばめちゃくちゃ簡単に株価を取得できることが分かりました。
またさらにtidyな形でデータを取得することができるので、通常のデータ分析技術がかなり転用できる感じです。
tidyquantには他にも関数がいくつか存在するようなので、少しずつ習得していきます。

コメントを残す