R言語で株価データをかんたんに取得する方法【トライオートETF】

こんにちは、サメハダです。

今回はプログラミング言語「R」を使って株価を取得する方法をご紹介します。

Rは統計分析が得意で、トライオートETFの人気銘柄であるTQQQなどの価格も瞬時に取れちゃいます。

今回の記事は次のような方へ向けた内容となっています。

  • トライオートETFをやっている、またはこれからやろうとしている
  • データ分析に興味があるけど、何から始めたらよいかわからない
  • Rで株価を取得する方法が知りたい

分析してわかった結果を発表するというよりは、Rの簡単な使い方についてご紹介しますので、お気軽にお楽しみください。

かめ君
かめ君

R言語に挑戦!

結論:Rを使ってTQQQの価格を取得した結果

このような直近の価格チャートが作成できます。

ソースコードはこちらです。全部でたったの5行です。

#①quantmodパッケージをインストールする
  install.packages("quantmod")
  library(quantmod)

#②getSymbol関数でチャートデータを取得する
  a<-getSymbols("TQQQ",auto.assign=FALSE)

#③取得したデータを確認する
  head(a)

#④終値をグラフに描画する
  plot(a$TQQQ.Close)
江戸川まん太
江戸川まん太

#の行は「コメントアウト」というプログラムに反映しないメモ書きだよ!

あとで見返した時に便利だけど、記入するかはお好みでね!

R言語とはどんなプログラム?

Rとは

R言語は統計解析向けのプログラミング言語です。登場したのは1990年代前半で約30年という長めの歴史があります。オープンソースソフトウェアなので、誰でも無料で使うことができます。

今回実際に使用したRstudioの操作画面
Rでできること

R言語でできることは、統計解析・検定、グラフ描写、テキストマイングなどです。パッケージと呼ばれる、便利機能の詰め合わせパックのようなものが数万種類あるため、高度な分析が簡単にできます。

Pythonとの比較

Rと出来ることが似ている言語にPythonがあります。Rは統計分析がメインですが、Pythonはライブラリと呼ばれる詰め合わせパックがさらに充実。Web系の操作を組み合わせた、幅広い分析が可能です。機械学習、ディープラーニングといったAI分野では、Pythonを利用する人が多数を占めている印象ですね。

一方、データサイエンスの分野では、RやSASといったデータベース系の統計分析プログラミングが根強い人気です。簡単な分析であれば機能に差はないため、慣れや使い勝手などをもとに自分の好みで選ぶのが一般的です。

サメハダ
サメハダ

現場からは以上です(キリッ

R言語の始め方

PCへインストールして使用します。インストール方法はネットや書籍でたくさん紹介されているので、今回は割愛。

わたしはRとRStudioを使っていますが、インストールは手順が少なく数分で終わりました。個人的にRはPythonより直感的に操作できる点が気に入っています。

書籍で学ぶ場合のオススメは、マイナビ出版『みんなのR 第2版』です。内容が網羅的で、解説が丁寧です。カラーページが多いのでメリハリがあって飽きにくいですよ。

今回のやりたいこと

今回は株価を取得してグラフ化することが目的です。

目的に特化して、とにかくコードが短くなるように必要最低限の記述を目指します。

実際のプログラム

ソースコード全体(再掲)

完成したソースコードはこちらです。#がついている行はコメントです。①~④の働きについて簡単にご説明します。

#①quantmodパッケージをインストールする
  install.packages("quantmod")
  library(quantmod)

#②getSymbol関数でチャートデータを取得する
  a<-getSymbols("TQQQ",auto.assign=FALSE)

#③取得したデータを確認する
  head(a)

#④終値をグラフに描画する
  plot(a$TQQQ.Close)

ソースコードの説明

①quantmodパッケージをインストールする
#①quantmodパッケージをインストールする
  install.packages("quantmod")
  library(quantmod)

quantmod という金融データの操作ができるパッケージをインストールします。

install.packages(“quantmod”) でPCへパッケージをインストールし、毎回使う際に、library(quantmod) で機能を呼び出して使います。

一度インストール( install.packages )しておけば、それ以降使うときは呼び出す( library )だけでOKです。

この記述自体は呪文みたいなものだと思ってください。

②getSymbol関数でチャートデータを取得する
#②getSymbol関数でチャートデータを取得する
  a<-getSymbols("TQQQ",auto.assign=FALSE)

getSymbols 関数を使って、TQQQのチャートデータを呼び出しています。

auto.assign=FALSE は自動でオブジェクトに代入せず、自分で代入するということみたいですが、特に重要でないのでムシしましょう。

データは a という箱に格納しました。

③取得したデータを一度確認する
#③取得したデータを確認する
  head(a)

head(a) とすると a の中身を確認できます。表示されるのは最初の6行です。実行すると下記の通り正しくデータが取得され、aに格納されていることがわかります。

Cinsole画面に表示されたaのデータ
>   head(a)
           TQQQ.Open TQQQ.High TQQQ.Low TQQQ.Close TQQQ.Volume TQQQ.Adjusted
2010-02-11  0.813750  0.869792 0.811146   0.865104     1728000      0.862942
2010-02-12  0.841563  0.876146 0.836667   0.868646     4300800      0.866475
2010-02-16  0.889063  0.904375 0.875104   0.902292     4809600      0.900037
2010-02-17  0.914375  0.917813 0.900625   0.917604     9590400      0.915311
2010-02-18  0.916667  0.940521 0.911146   0.935000    19430400      0.932663
2010-02-19  0.928646  0.947188 0.921563   0.935000    23241600      0.932663
> View(a)
④終値をグラフとして描画する
#④終値をグラフに描画する
  plot(a$TQQQ.Close)

plot を使うとグラフを描画することができます。

ここまでがグラフ描画までの(おそらく)最短ステップです。

①の準備と③の確認は省略可能ですので、実際は②と④の記述だけでグラフ描画が可能です。

タコさん
タコさん

これが基本形だね!

応用すると

SSOの場合

ティッカーを変えると別の銘柄のグラフが描画できます。

  b<-getSymbols("SSO",auto.assign=FALSE)
  plot(b$SSO.Close)

QQQの場合

銘柄をQQQに変更します。さらに、開始を2021年1月1日からにしてみます。

  c<-getSymbols("QQQ",from="2021/01/01",auto.assign=FALSE)
  plot(c$QQQ.Close)

金融データ端末のように使う

chartSeries 関数を使えば、チャートがブルームバーグ端末のような見た目になります。出来高なども表示でき、より多機能に使えます。

  chartSeries(c)
  addBBands()  
  addMACD()
フグっち
フグっち

カッコイイ!

Rのデータ分析は投資戦略に大活躍する

Rを使った価格データの取得方法の基本形がわかりました。

価格データをスクレイピングによって取得することで、常に最新の時系列データ使った分析ができ良いですね。やはりプログラミングと証券分析は相性が良いです。

今後はプログラムをどんどん進化させて、よりおもしろい分析に挑戦したいと思います。

まとめ

いかがでしたでしょうか。

今回はRを使った株価データの取得方法についてご紹介しました。

普段のデータ分析はエクセル関数やVBAを使ったものが多いのですが、今後はRを使った分析も増やしていきたいと思います。

プログラミングでできることが増えるのは本当に楽しいですね。

今回は以上です。ではまた!

トライオートETF

当サイトは投資の助言・勧誘を行うものではありません。掲載している情報については、その正確性・安全性等を保証するものではなく、あくまでも個人的見解の参考情報の提供のみを目的としております。閲覧者が当サイトの情報を直接または間接に利用したことで被ったいかなる損害についても当サイト運営者は一切の責任を負いません。投資・売買に関する最終決定はご自身で判断いただきますようお願いいたします。

コメント