(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【R言語/quantmod】getSymbolsで取得した日経平均終値をplotする

スポンサーリンク

はじめに

Yahoo Finance から株価データをとってきてくれるgetSymbolsを使って、こちらをPlotするまでの備忘録です。

OS Windows 10.0
Rstudio Ver Version 1.0.153

準備

quantmodのインストール

quantmodパッケージが必要ですので、library読み込みが失敗した場合はインストールから始める必要があります。

> library(quantmod)
Error in library(quantmod) : 
   ‘quantmod’ という名前のパッケージはありません 

以下のコマンドでインストールを行います。

> install.packages("quantmod")
also installing the dependencies ‘xts’, ‘zoo’, ‘TTR’, ‘curl’

trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.4/xts_0.11-1.zip'
Content type 'application/zip' length 755153 bytes (737 KB)
downloaded 737 KB

trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.4/zoo_1.8-4.zip'
Content type 'application/zip' length 920127 bytes (898 KB)
downloaded 898 KB

trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.4/TTR_0.23-4.zip'
Content type 'application/zip' length 443610 bytes (433 KB)
downloaded 433 KB

trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.4/curl_3.2.zip'
Content type 'application/zip' length 2965604 bytes (2.8 MB)
downloaded 2.8 MB

trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.4/quantmod_0.4-13.zip'
Content type 'application/zip' length 491999 bytes (480 KB)
downloaded 480 KB

package ‘xts’ successfully unpacked and MD5 sums checked
package ‘zoo’ successfully unpacked and MD5 sums checked
package ‘TTR’ successfully unpacked and MD5 sums checked
package ‘curl’ successfully unpacked and MD5 sums checked
package ‘quantmod’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
	C:\Users\XXXX\AppData\Local\Temp\Rtmp8ej77i\downloaded_packages


依存していた4パッケージも併せてインストールされました。

簡単に説明すると、

  • xtsパッケージは、eXtensible Time Seriesの略で、時系列データ用のデータフレームです。
  • zooパッケージは、時系列を扱うクラス及び関数を提供するライブラリです。
  • TTRパッケージは、Technical Trading Rulesの略でトレーディングに関するを計算を行う関数を提供するライブラリです。
  • curlパッケージはLinuxのコマンドにもあります、ファイルのダウンロードを実施するライブラリです。

ライブラリ読み込み

getSymbolsを使用するために改めて読み込みを行います。

> library(quantmod)
 要求されたパッケージ xts をロード中です 
 要求されたパッケージ zoo をロード中です 

 次のパッケージを付け加えます: ‘zoo’ 

 以下のオブジェクトは ‘package:base’ からマスクされています: 

     as.Date, as.Date.numeric 

 要求されたパッケージ TTR をロード中です 
Version 0.4-0 included new data defaults. See ?getSymbols.
Learn from a quantmod author: https://www.datacamp.com/courses/importing-and-managing-financial-data-in-r
Warning messages:
1:  パッケージ ‘quantmod’ はバージョン 3.4.4 の R の下で造られました  
2:  パッケージ ‘xts’ はバージョン 3.4.4 の R の下で造られました  
3:  パッケージ ‘zoo’ はバージョン 3.4.4 の R の下で造られました  
4:  パッケージ ‘TTR’ はバージョン 3.4.4 の R の下で造られました  
> 

ちなみに「以下のオブジェクトは ‘package:XXXX’ からマスクされています」というのは、同名の関数のパスが変わったことを示していますが今回は特に気にしなくてよいです。
また、不要な場合はdetachを行ったりRを再起動すれば解消します。


実際にPlotを行う

getSymbolsで日経平均株価データを取得していきます。

> getSymbols
function (Symbols = NULL, env = parent.frame(), reload.Symbols = FALSE, 
    verbose = FALSE, warnings = TRUE, src = "yahoo", symbol.lookup = TRUE, 
    auto.assign = getOption("getSymbols.auto.assign", TRUE)


getSymbolsにて必要情報を取得しますが、ひとまずは以下でnikkeiにデータが格納されます。
最初の引数でINDEXNIKKEIを取得すべく、先頭が「N225」でひっかけます。

> nikkei <- getSymbols("^N225",src="yahoo",from="2017-01-01", to = "2018-11-4", auto.assign = FALSE)
Warning message:
^N225 contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx(), na.fill(), etc to remove or replace them. 

構造と中身をちらっと見てみました。ちゃんと値が格納されています。

> class(nikkei)
[1] "xts" "zoo"
>
> head(nikkei)
           N225.Open N225.High N225.Low N225.Close N225.Volume N225.Adjusted
2017-01-04  19298.68  19594.16 19277.93   19594.16      163500      19594.16
2017-01-05  19602.10  19615.40 19473.28   19520.69      134500      19520.69
2017-01-06  19393.55  19472.37 19354.44   19454.33      119100      19454.33
2017-01-10  19414.83  19484.90 19255.35   19301.44      119100      19301.44
2017-01-11  19358.64  19402.17 19325.46   19364.67      119100      19364.67
2017-01-12  19300.19  19300.19 19069.02   19134.70      119100      19134.70


あとは、終値が入っている列を選択してPlotします。

> plot(nikkei[,4] , main = "N225-Close")

f:id:mtiit:20181104235948p:plain

以上です。かなり簡単なので別記事で応用してみたいと思います。