最終更新:2017年7月6日

R言語を用いた、Webからのデータ取得方法、及びxts形式にデータを変換する方法、そしてquantmodパッケージを使った図示の方法までを説明します。

株式データに限らず、Webからデータが取得できるようになるとなかなか便利です。また、時系列分析では必須となるxtsパッケージの使い方もぜひ覚えておいてください。

ソースコードはまとめてこちらに置いておきます。



スポンサードリンク

目次

  1. Webからの株価のデータの取得
  2. xts形式への変換
  3. ローソク足のグラフの描画
  4. 様々なローソク足

 

1.Webからの株価のデータの取得

Yahoo!ファイナンス様は、データの自動収集(スクレイピング)を禁止されているようですので、『株価データサイト k-db.com』様からデータを取得します。

データの取得方法は『ことばにならないなにか』様を参考にさせていただきました。
ただ、今後もデータの取得は頻繁に行うこととなると思うので、先のブログ様からややコードを書き替えて、関数としてまとめておきました。

データ取得関数は以下のようになります。
なお、証券コードや取得対象年は複数を指定することが可能となるように作ってあります。

k-db.com様を実際に見てもらえればわかりますが、CSVファイルをダウンロードできるリンクが用意されています。
CSVファイルをダウンロードしてから、read.csv関数を使って読み込んでももちろん構わないのですが、いちいちダウンロードするのは面倒ですね。
なので、ダウンロード元のURLを参照してそのままデータを読み込むイメージです。

もしもk-db.com様のダウンロード元となるURLが変わった場合は、このやり方ではデータが取得できないので注意してください。
万が一取得できなくなっていた場合は、ご連絡いただけると幸いです。なるべく早くに対応します。

関数の使い方は単純で、証券コードと取得対象年を引数に入れるだけです。その年のデータを取得してくれます。

証券コードとは、会社の名前と1対1で対応する4桁の数値です。
Yahoo! ファイナンス』様で、検索窓に会社名を入れて検索すると調べることができます。
何でもよいのですが、今回は『(株)みずほフィナンシャルグループ』様を対象としてみます。証券コードは「8411」です。

2016年の1年間のデータを取得してみます。

結果はこちら。

データの見方は以下の通りです。
tickerSymbol:証券コード
Date:日付
Open:その日の始値。その日の最初につけられた株価です。
High:その日の最高値
Low:その日の最安値
Close:その日の終値
Volume:出来高。取引された株数のことです。
Volume_money:売買代金。出来高を金額換算したものです。

証券コードや取得対象年は複数を指定することが可能です。ガンホー様の株価も取得してみました。
ガンホー様の証券コードは「3765」です。

複数の企業様のデータが混じっていると扱いにくいので、別々に分けました。
また、後でxts形式に変換するため、邪魔な証券コードは消しておきました。

 

2.xts形式への変換

取得されたデータは『data.frame』という形式で保存されています。
これを『xts』という形式に変更すると、分析がとても簡単になります。

xtsは外部のパッケージをインストールしなければ使うことができません。
xtsを含めた、証券投資分析全般に使うことのできる『quantmod』パッケージをインストールしてから、以下のコードを実行してください。
パッケージのインストールは、Rを管理者として実行してから「install.packages("quantmod")」と実行すれば使うことができます。

『zoo』というのも時系列データを扱うデータの型でして、それをいったん経由してからxtsに変換するのが良いようです。

結果はこちら。ちゃんと変換できました。

xts形式にすると、日付を利用したデータの抽出がとても簡単にできます。
手始めに、最新と最古のデータを取得してみます。

 
特定の日付を指定して、データを抽出することができます。

 
月単位でデータを取得することもできます。

 
範囲を指定して抽出します。

 
特定の日付以降を取得(2017年7月6日に実行したので、データは7月6日までしかありません)。

 
ある月以降をすべて取得することもできます。

データの抽出の仕方だけでも覚えておくと、解析がとても楽になります。
xtsにはほかにもいろいろの機能があるので、興味のある方はxtsのマニュアルを参照してください。



スポンサードリンク

 

3.ローソク足のグラフの描画

最後はグラフの描画です。

quantmodパッケージの『chartSeries』という関数を使います。
この関数にはxts形式に変換した後のデータを入れることに注意してください。

結果はこちら。

データの量が多いと、やや見づらいため、2017年6月のみを対象としてみます。
subsetという引数に期間を指定します。期間はxts形式のデータを抽出するのと同じやり方が使えます。

結果はこちら。

実際のデータと比較してみます。

まず、初日は開始直後の値段(Open:192.3)よりも、株取引終了時の株か(Close:194.1)のほうが高くなっています。
すなわち、6月1日は値上がりしたんですね。こういう日は緑色となります。
逆に、日単位で見て値下がりした場合は、オレンジ色となります。

また、グラフは、よく見ると上下に分かれています。
上のグラフが、株価で、下のグラフが出来高(その日に取り扱われた株数)です。

また、株価のグラフをよく見ると、上下に線が引かれています(見えにくければグラフをクリックしてください。拡大されます)。
細い線の最も高い部分が、その日の最高値。もっとも低い部分が最安値となっています。

このグラフを「ローソク足」と呼びます。
ローソク足を使うと、その日の終値だけでなく、始値や高値・安値も一目でわかるので、なかなかよくできたグラフの形式だと思います。

4.様々なローソク足

引数を変えてやることで、色々とカスタマイズができます。
まずは、テクニカル指標と呼ばれるものを追加してみましょう。
テクニカル指標とは、テクニカル分析で使われる、株価の売買の目安となる指標です。
ここでは「移動平均」を追加してみます。

移動平均は、名前の通り、日付を移動させながら、平均値をとったものです。
2日移動平均ならば、「1月1日・1月2日」で平均をとった後「1月2日・1月3日」でも平均をとる……というのを繰り返していきます。
25日・75日移動平均を使うのが多いようですので、そのようにしました。

TAという引数にaddSMAを指定することで、移動平均を追加できます。
『n=25』とすれば25日移動平均となります。『col』で線の色を指定しました。

結果はこちら。
長期(75日)移動平均を、短期(25日)移動平均が上回った時は、株価が上がりやすいという噂があるようです。これをゴールデンクロスと呼びます。

次は、グラフのデザインを大きく変えてみます。
背景色を白にした『theme=chartTheme('white'』うえで、日単位で見て値上がりした場合は白抜きのローソクに、値下がりした場合は青色のローソクになるようにしました。
細かいですが、TAに『addVo()』を指定すると、出来高もグラフに表示されるようになります。

最後に、自分で作った指標を、グラフに上書きしてみましょう。
今回は簡単に「1年間の株価の平均値」をグラフに入れることにします。

まずは、1年間の終値の平均値を求めます。
今度はガンホー様の株価を使ってみます。

これをxts形式にしたいのですが、日付を指定しなければなりません。
というわけで、もとの株価から日付のインデックスのみを取り出して、それとおなじインデックスを付与するようにします。

まずは、日づけのインデックスを取り出します。

245日ありました(株式の売買は平日にしか行われていないので365にはなりません)

というわけで、先ほど計算した平均値を245日分作ればいいことになります。
『xts』という関数を使えば、その名の通りxts型の変数を作ることができます。データとインデックスを引数に指定すればOKです。

株価のグラフに、先ほどの平均値を追加してみましょう。

『addTA』という関数に、xts型の変数を指定してやればグラフに追加できます。
注意すべきは『on=1』という指定です。
『chartSeries』の結果には、株価の推移に加えて出来高のグラフがあります。すなわち、グラフを「追加」していくことができるわけです。
もしも『on=1』を指定しなければ、3つ目のグラフが追加されてしまいます。
1つ目のグラフ、すなわち株価の推移のグラフに線を引きたい場合は必ず『on=1』を指定します。

今回はただの平均値でしたが、時系列分析などを行って計算された指標をグラフに上書きすることもできます。

また、株価の解析にかかわらず、時系列分析をする際にはxtsパッケージにはよくお世話になりますので、使い方を覚えておくとよろしいかと思います。

 

参考文献


Rとトレード ――確率と統計のガイドブック

 
R言語を用いた証券投資分析の方法が書かれた本です。
Rの基礎から、確率統計の基礎、金融データ分析の基礎、そして株取引のためのプログラミング方法まで幅広く載っている書籍です。
 

金融データ解析の基礎

 
金融時系列解析に特化した書籍です。
xtsの使い方やquantmodの使い方に加えて、ARMAやGARCHといった時系列モデルの解説も載っています。
 

現場ですぐ使える時系列データ分析

 
R言語を使った時系列分析の方法が書かれた書籍です。
ファイナンスの話題も多く載っています。
 
書籍以外の参考文献

株価データサイト k-db.com
 →株価取得サイトです

ことばにならないなにか
 →株価の取得方法を参考にさせていただきました。

Yahoo! ファイナンス
 →証券データがいろいろ載っているサイトです。スクレイピングは禁止されています。

xtsパッケージで時系列解析
 →xtsの使い方がまとめられたスライドです。

My Life as a MockQuant
 →先のスライドシェアの資料を作られた方のブログです。こちらもxtsの使い方をはじめ、金融時系列分析に関する豊富な情報が載っています。



スポンサードリンク