この記事は「証券のリスクとリターンを計算するアプリケーションを作ろう」のヒストリカルデータ取得機能の詳細について記したものです。
ヒストリカルデータはtidyquant v1.0.2ライブラリのtq_get()
関数を使用するので、まずはこの関数の仕様を詳しく見ていきましょう。
#tq_get()関数
公式ページのまんまですが、tq_get()
関数は定量的データをTibble
形式で取得する関数です。
使用法
tq_get(x, get = "stock.prices", complete_cases = TRUE, ...)
tq_get_options()
必須の引数がx
で、ここにはヒストリカルデータを取得したい単一の文字列、単一(または複数)の銘柄記号、金属記号、通貨の組み合わせ、FREDコードなどを表す文字ベクトルまたはティッカーを入力します。
第2引数のget
は任意で入力します。使用法に記載の通り、デフォルトの値は"stock.prices"
です。
ちなみに、配当のヒストリカルデータを取得するオプションは"dividends"
ですが、"stock.prices"
と同時に使うことはできません。一つずつ取ってくる必要がありますね。
さて、この記事の主題である取得期間は、デフォルトで10年前の1月1日から関数を実行した日のようです。
過去20年間のヒストリカルデータを取得するためには、以下の引数を入力する必要があります。
-
from
:YYYY-MM-DD形式で開始日を表す文字列 -
to
:YYYY-MM-DD形式で終了日を表す文字列
from
には20年前の年-01-01
を、to
には1年前の年-12-31
を入力したいので、動的に年を入力する必要があります。
#年の計算
年の計算には__Dateオブジェクト__と__POSIXltオブジェクト__を使用します。
以下のサイトを参考にしました。
20年前の年は以下のコードで取得します。
> as.POSIXlt(Sys.Date())$year + 1880
[1] 2001
同じようにして、1年前の年は以下のコードで取得します。
> as.POSIXlt(Sys.Date())$year + 1899
[1] 2020
あとは、paste()
関数で日付と連結すれば準備完了です。
start_date <- paste(as.POSIXlt(Sys.Date())$year + 1880, "-01-01", sep = "")
end_date <- paste(as.POSIXlt(Sys.Date())$year + 1899, "-12-31", sep = "")
#まとめ
ということで、tq_get()
関数を使って最長過去20年間のヒストリカルデータを取得するコードは以下の通りです。
# パッケージのインストール
install.packages("tidyverse", repos = "http://cran.us.r-project.org", dependencies=TRUE)
install.packages("tidyquant", repos = "http://cran.us.r-project.org", dependencies=TRUE)
# コマンドライン引数の入力
args <- commandArgs(trailingOnly = TRUE)
x <- args[1]
# ライブラリのロード
library(tidyquant)
library(tidyverse)
# ヒストリカルデータを取得
start_date <- paste(as.POSIXlt(Sys.Date())$year + 1880, "-01-01", sep = "")
end_date <- paste(as.POSIXlt(Sys.Date())$year + 1899, "-12-31", sep = "")
tq_get(x, from = start_date, to = end_date)