ここ一年のTOPIX30の株価(終値)の推移

ここ一年のTOPIX30の株価(終値)を可視化してみた。

便利なパッケージがあるらしいが、うまく機能しなかった。 yahooではスクレイピングを禁止しているらしい、 また、させないように仕様を頻繁に?変更しているらしいので、 そのほかでできそうな記事を参考にやってみた。

これだけで各株のトレンドが一目瞭然なので便利そう。

library(tidyverse)
library(lubridate)
options(stringsAsFactors = F)
# 証券コードと名前の変換用
code_list <- 
  rio::import("http://www.jpx.co.jp/markets/statistics-equities/misc/tvdivq0000001vg2-att/data_j.xls")

topix30 <- code_list %>% filter(規模区分 == "TOPIX Core30")
code <- topix30$コード

stock <- NULL
for (i in seq_len(length(code))){
  url <- paste("http://k-db.com/stocks/", 
               code[i], 
               "-T?1d/2017?&download=csv", 
               sep = "")
  stock[[i]] <- read.table(url, sep = ",", skip = 2)
  colnames(stock[[i]]) <- 
    c("date", "start_price", "max_price", "min_price",
      "end_price","volume","trading_value")
  # dateをでdate要素に変更
  stock[[i]] <- stock[[i]] %>% mutate_at(.vars = "date", ymd)
  Sys.sleep(5) 
}
names(stock) <- code

data_list <- NULL
for (i in seq_len(length(stock))){
  data_list <- rbind(data_list, 
                     stock[[i]] %>% mutate(code = as.character(code[i])))
}

p <- 
  data_list %>%
  mutate(code = plyr::mapvalues(x = code, from = topix30$コード, to = topix30$銘柄名)) %>% 
  ggplot() +
  geom_line(aes(x = date, y = end_price)) +
  facet_wrap(~code, scales = "free_y") 

p

点は月曜日である。 JR系の株価がうなぎのぼり。

f:id:jerrarrdan:20170618165811p:plain

データの取得に関してはほとんどこのサイト のパクリです。