Rによる株式データの取得とグラフの描画

最終更新:2017年7月6日

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

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

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



スポンサードリンク

目次

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

 

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

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

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

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

# -----------------------------------------------------------------------
# Webから株式データを取得する関数
# -----------------------------------------------------------------------

getStockFromKdb <- function(code, year){
  # 『株価データサイト k-db.com』(http://k-db.com/)様からデータを取得する
  # 
  # Args:
  #   code: 証券コード
  #   year: 取得対象となる年
  # 
  # Returns: 
  #   stock: 株価のデータ(日足)
  
  stocks <- NULL
  
  # 指定された証券コード、年をまとめて取得する
  for(i in 1:length(code)){
    for(j in 1:length(year)){
      
      # 『k-db.com』のURLを指定してデータを取得
      url <- paste("http://k-db.com/stocks/", code[i], "-T/1d/", year[j], "?download=csv",sep="")
      stock <- read.csv(url, header = T)
      
      # 列名称を変更
      colnames(stock) <- c("Date", "Open", "High", "Low", "Close", "Volume", "Volume_money")
      
      # 証券コードを追加
      tickerSymbol <- data.frame(tickerSymbol = rep(code[i], nrow(stock)))
      stock <- cbind(tickerSymbol, stock)
      
      # 取得されたデータを保存
      if(is.null(stocks)){
        stocks <- stock
      } else{
        stocks <- rbind(stocks, stock)
      } 
      
      # 次のデータを取得する前に少し待つ
      if(i < length(code) || j < length(year)){
        Sys.sleep(0.5)
      }
      
    }
  }

  return(stocks)
}

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

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

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

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

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

# -----------------------------------------------------------------------
# 株価の取得
# -----------------------------------------------------------------------

# みずほHGの株価を取得する
mizuho <- getStockFromKdb(8411, 2016)

結果はこちら。

> head(mizuho)
  tickerSymbol       Date  Open  High   Low Close    Volume Volume_money
1         8411 2016-12-30 206.3 210.9 206.0 209.8 134881600  28205210670
2         8411 2016-12-29 212.4 212.5 208.2 209.2 178763900  37485876130
3         8411 2016-12-28 216.5 216.8 214.0 214.5 100763000  21655841710
4         8411 2016-12-27 214.0 217.7 213.6 215.7 152006300  32846976580
5         8411 2016-12-26 215.1 216.1 213.8 214.9 136289000  29272048480
6         8411 2016-12-22 218.0 218.3 214.3 217.2 173835100  37614525330
> tail(mizuho)
    tickerSymbol       Date  Open  High   Low Close    Volume Volume_money
240         8411 2016-01-12 226.6 227.6 221.7 221.8 166401700  37264778340
241         8411 2016-01-08 229.1 233.5 228.7 229.4 167988400  38707250960
242         8411 2016-01-07 236.0 237.2 230.1 231.0 181078800  42136100460
243         8411 2016-01-06 240.5 241.8 235.4 236.5 133756300  31805845970
244         8411 2016-01-05 238.9 241.0 238.6 239.5 129385900  31022826240
245         8411 2016-01-04 241.0 244.4 238.9 239.7 115784400  27864941230

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

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

# みずほHGとガンホーの2015-2017年データを取得
stocks_data <- getStockFromKdb(c(3765, 8411), 2015:2017)

mizuho <- stocks_data[stocks_data$tickerSymbol == 8411, -1]
mizuho

ganho <- stocks_data[stocks_data$tickerSymbol == 3765, -1]
ganho

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

 

2.xts形式への変換

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

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

# -----------------------------------------------------------------------
# xtsによるデータの操作
# -----------------------------------------------------------------------

# install.packages("quantmod")
library(quantmod)

# xts形式に変換
mizuho_xts <- as.xts(read.zoo(mizuho))
ganho_xts <- as.xts(read.zoo(ganho))

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

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

> # データの型が変わったことを確認
> class(mizuho)
[1] "data.frame"
> class(mizuho_xts)
[1] "xts" "zoo"

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

> # 最も古いデータ
> first(mizuho_xts)
           Open  High   Low Close    Volume Volume_money
2015-01-05  202 202.3 200.1   201 118255600  23757129500
> 
> # 最も新しいデータ
> last(mizuho_xts)
            Open  High   Low Close   Volume Volume_money
2017-07-06 208.9 208.9 207.1 207.6 92104400  19130223730

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

> # データの抽出
> # 特定の日付
> mizuho_xts["2017-01-06"]
            Open  High   Low Close    Volume Volume_money
2017-01-06 213.9 215.1 212.9 214.4 127594300  27308924450

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


> # 月単位で取得
> mizuho_xts["2017-01"]
            Open  High   Low Close    Volume Volume_money
2017-01-04 214.0 216.6 213.4 215.7 182740100  39355059900
2017-01-05 217.0 217.2 215.0 216.5 135447400  29274034490
2017-01-06 213.9 215.1 212.9 214.4 127594300  27308924450
2017-01-10 213.6 214.3 212.1 212.1 121214700  25819022780
2017-01-11 213.3 215.9 213.1 215.6 121067600  25979782550
2017-01-12 214.0 214.3 211.6 212.8 136269800  28983880470
2017-01-13 212.7 213.9 212.1 213.9 102230200  21798437730
2017-01-16 214.4 214.7 211.4 211.7 107602400  22904358270
2017-01-17 210.0 210.1 207.1 208.3 147754800  30828024050
2017-01-18 207.2 208.0 204.4 207.3 161151800  33216541880
2017-01-19 210.1 214.3 210.0 211.6 141546900  29976312120
2017-01-20 212.6 213.6 210.9 212.8 110913200  23561690990
2017-01-23 211.0 212.1 209.7 211.2 104602400  22077294570
2017-01-24 209.2 209.5 205.5 205.9 174651600  36138921820
2017-01-25 209.0 209.0 206.0 206.7 137878900  28594187080
2017-01-26 210.0 213.0 209.6 212.9 214794100  45440318480
2017-01-27 214.8 217.3 214.5 216.6 208873700  45154432510
2017-01-30 215.0 215.4 213.2 214.5  96499000  20678249040
2017-01-31 210.2 212.4 210.1 210.3 121416200  25646310430

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

> # 範囲を指定して抽出
> mizuho_xts["2017-01-06::2017-01-15"]
            Open  High   Low Close    Volume Volume_money
2017-01-06 213.9 215.1 212.9 214.4 127594300  27308924450
2017-01-10 213.6 214.3 212.1 212.1 121214700  25819022780
2017-01-11 213.3 215.9 213.1 215.6 121067600  25979782550
2017-01-12 214.0 214.3 211.6 212.8 136269800  28983880470
2017-01-13 212.7 213.9 212.1 213.9 102230200  21798437730

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

> # ある日付以降をすべて取得
> mizuho_xts["2017-06-20::"]
            Open  High   Low Close    Volume Volume_money
2017-06-20 200.4 200.7 198.3 198.3 107086700  21375000940
2017-06-21 198.2 198.4 197.1 198.0  96553500  19087064390
2017-06-22 198.0 199.0 197.1 198.1  87881800  17413425300
2017-06-23 198.9 199.4 197.7 199.3  69105200  13737999170
2017-06-26 198.7 198.8 197.4 197.4  91332500  18079015710
2017-06-27 198.3 199.1 197.9 198.0  85719600  17006754280
2017-06-28 200.5 204.5 200.4 204.0 221422300  44939189030
2017-06-29 208.0 209.4 205.5 205.7 205614500  42659894500
2017-06-30 205.1 207.0 203.9 205.4 155641800  31987718600
2017-07-03 204.5 205.4 203.5 205.3  81699300  16725260460
2017-07-04 207.0 208.0 205.5 205.9  95452300  19728576850
2017-07-05 206.0 208.5 205.9 208.5 123605200  25616895330
2017-07-06 208.9 208.9 207.1 207.6  92104400  19130223730

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

> # ある月以降をすべて取得(mizuho_xts["2017-06-01::"]としても同じ)
> mizuho_xts["2017-06::"]
            Open  High   Low Close    Volume Volume_money
2017-06-01 192.3 195.8 192.2 194.1 107452000  20880129460
2017-06-02 195.1 200.9 195.0 200.1 175604300  34933279840
2017-06-05 197.6 197.9 196.4 197.0 106257500  20945506730
2017-06-06 197.0 198.6 196.3 196.7  99978900  19742685840
2017-06-07 196.0 197.7 195.2 197.0 105695500  20771395690
2017-06-08 198.3 200.5 197.2 197.4 173075000  34342113170
2017-06-09 198.9 200.4 198.1 199.7 156941400  31296039870
2017-06-12 201.0 203.4 200.6 200.7 122316100  24675190130
2017-06-13 200.7 202.1 200.3 201.0  84001200  16913035160
2017-06-14 202.4 202.8 199.8 200.3  95982800  19295697870
2017-06-15 199.0 199.8 196.7 196.9 140976400  27880657770
2017-06-16 198.0 199.8 197.5 198.2 123611800  24543186850
2017-06-19 197.7 198.5 197.1 197.7  78819600  15599448510
2017-06-20 200.4 200.7 198.3 198.3 107086700  21375000940
2017-06-21 198.2 198.4 197.1 198.0  96553500  19087064390
2017-06-22 198.0 199.0 197.1 198.1  87881800  17413425300
2017-06-23 198.9 199.4 197.7 199.3  69105200  13737999170
2017-06-26 198.7 198.8 197.4 197.4  91332500  18079015710
2017-06-27 198.3 199.1 197.9 198.0  85719600  17006754280
2017-06-28 200.5 204.5 200.4 204.0 221422300  44939189030
2017-06-29 208.0 209.4 205.5 205.7 205614500  42659894500
2017-06-30 205.1 207.0 203.9 205.4 155641800  31987718600
2017-07-03 204.5 205.4 203.5 205.3  81699300  16725260460
2017-07-04 207.0 208.0 205.5 205.9  95452300  19728576850
2017-07-05 206.0 208.5 205.9 208.5 123605200  25616895330
2017-07-06 208.9 208.9 207.1 207.6  92104400  19130223730

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



スポンサードリンク

 

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

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

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

# -----------------------------------------------------------------------
# 株価の図示
# -----------------------------------------------------------------------

# ローソク足のグラフを描く
chartSeries(
  mizuho_xts, 
  type="candlesticks"
)

結果はこちら。

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

# 2017年6月のみを対象とする
chartSeries(
  mizuho_xts, 
  subset="2017-06",
  type="candlesticks"
)

結果はこちら。

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

> mizuho_xts["2017-06"]
            Open  High   Low Close    Volume Volume_money
2017-06-01 192.3 195.8 192.2 194.1 107452000  20880129460
2017-06-02 195.1 200.9 195.0 200.1 175604300  34933279840
2017-06-05 197.6 197.9 196.4 197.0 106257500  20945506730
2017-06-06 197.0 198.6 196.3 196.7  99978900  19742685840
2017-06-07 196.0 197.7 195.2 197.0 105695500  20771395690
2017-06-08 198.3 200.5 197.2 197.4 173075000  34342113170
2017-06-09 198.9 200.4 198.1 199.7 156941400  31296039870
2017-06-12 201.0 203.4 200.6 200.7 122316100  24675190130
2017-06-13 200.7 202.1 200.3 201.0  84001200  16913035160
2017-06-14 202.4 202.8 199.8 200.3  95982800  19295697870
2017-06-15 199.0 199.8 196.7 196.9 140976400  27880657770
2017-06-16 198.0 199.8 197.5 198.2 123611800  24543186850
2017-06-19 197.7 198.5 197.1 197.7  78819600  15599448510
2017-06-20 200.4 200.7 198.3 198.3 107086700  21375000940
2017-06-21 198.2 198.4 197.1 198.0  96553500  19087064390
2017-06-22 198.0 199.0 197.1 198.1  87881800  17413425300
2017-06-23 198.9 199.4 197.7 199.3  69105200  13737999170
2017-06-26 198.7 198.8 197.4 197.4  91332500  18079015710
2017-06-27 198.3 199.1 197.9 198.0  85719600  17006754280
2017-06-28 200.5 204.5 200.4 204.0 221422300  44939189030
2017-06-29 208.0 209.4 205.5 205.7 205614500  42659894500
2017-06-30 205.1 207.0 203.9 205.4 155641800  31987718600

まず、初日は開始直後の値段(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』で線の色を指定しました。

# テクニカル指標を追加
chartSeries(
  mizuho_xts, 
  type="candlesticks", 
  subset="2016-07::", 
  TA="addSMA(n=25, col='white'); addSMA(n=75, col='green')"
)

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

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

# グラフのデザインを大きく変更
chartSeries(
  mizuho_xts, 
  type="candlesticks", 
  subset="2016-07::", 
  TA="addSMA(n=25); addSMA(n=75, col='green'); addVo()",
  theme=chartTheme('white', up.col='white',dn.col='blue')
)

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

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

> # ガンホー様の終値の期待値
> mean(ganho_xts["2016", "Close"])
[1] 273.702

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

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

> # 日付のインデックス
> idx <- index(ganho_xts["2016"])
> idx
  [1] "2016-01-04" "2016-01-05" "2016-01-06" "2016-01-07" "2016-01-08" "2016-01-12" "2016-01-13" "2016-01-14" "2016-01-15" "2016-01-18"
 [11] "2016-01-19" "2016-01-20" "2016-01-21" "2016-01-22" "2016-01-25" "2016-01-26" "2016-01-27" "2016-01-28" "2016-01-29" "2016-02-01"
 [21] "2016-02-02" "2016-02-03" "2016-02-04" "2016-02-05" "2016-02-08" "2016-02-09" "2016-02-10" "2016-02-12" "2016-02-15" "2016-02-16"
 [31] "2016-02-17" "2016-02-18" "2016-02-19" "2016-02-22" "2016-02-23" "2016-02-24" "2016-02-25" "2016-02-26" "2016-02-29" "2016-03-01"
 [41] "2016-03-02" "2016-03-03" "2016-03-04" "2016-03-07" "2016-03-08" "2016-03-09" "2016-03-10" "2016-03-11" "2016-03-14" "2016-03-15"
 [51] "2016-03-16" "2016-03-17" "2016-03-18" "2016-03-22" "2016-03-23" "2016-03-24" "2016-03-25" "2016-03-28" "2016-03-29" "2016-03-30"
 [61] "2016-03-31" "2016-04-01" "2016-04-04" "2016-04-05" "2016-04-06" "2016-04-07" "2016-04-08" "2016-04-11" "2016-04-12" "2016-04-13"
 [71] "2016-04-14" "2016-04-15" "2016-04-18" "2016-04-19" "2016-04-20" "2016-04-21" "2016-04-22" "2016-04-25" "2016-04-26" "2016-04-27"
 [81] "2016-04-28" "2016-05-02" "2016-05-06" "2016-05-09" "2016-05-10" "2016-05-11" "2016-05-12" "2016-05-13" "2016-05-16" "2016-05-17"
 [91] "2016-05-18" "2016-05-19" "2016-05-20" "2016-05-23" "2016-05-24" "2016-05-25" "2016-05-26" "2016-05-27" "2016-05-30" "2016-05-31"
[101] "2016-06-01" "2016-06-02" "2016-06-03" "2016-06-06" "2016-06-07" "2016-06-08" "2016-06-09" "2016-06-10" "2016-06-13" "2016-06-14"
[111] "2016-06-15" "2016-06-16" "2016-06-17" "2016-06-20" "2016-06-21" "2016-06-22" "2016-06-23" "2016-06-24" "2016-06-27" "2016-06-28"
[121] "2016-06-29" "2016-06-30" "2016-07-01" "2016-07-04" "2016-07-05" "2016-07-06" "2016-07-07" "2016-07-08" "2016-07-11" "2016-07-12"
[131] "2016-07-13" "2016-07-14" "2016-07-15" "2016-07-19" "2016-07-20" "2016-07-21" "2016-07-22" "2016-07-25" "2016-07-26" "2016-07-27"
[141] "2016-07-28" "2016-07-29" "2016-08-01" "2016-08-02" "2016-08-03" "2016-08-04" "2016-08-05" "2016-08-08" "2016-08-09" "2016-08-10"
[151] "2016-08-12" "2016-08-15" "2016-08-16" "2016-08-17" "2016-08-18" "2016-08-19" "2016-08-22" "2016-08-23" "2016-08-24" "2016-08-25"
[161] "2016-08-26" "2016-08-29" "2016-08-30" "2016-08-31" "2016-09-01" "2016-09-02" "2016-09-05" "2016-09-06" "2016-09-07" "2016-09-08"
[171] "2016-09-09" "2016-09-12" "2016-09-13" "2016-09-14" "2016-09-15" "2016-09-16" "2016-09-20" "2016-09-21" "2016-09-23" "2016-09-26"
[181] "2016-09-27" "2016-09-28" "2016-09-29" "2016-09-30" "2016-10-03" "2016-10-04" "2016-10-05" "2016-10-06" "2016-10-07" "2016-10-11"
[191] "2016-10-12" "2016-10-13" "2016-10-14" "2016-10-17" "2016-10-18" "2016-10-19" "2016-10-20" "2016-10-21" "2016-10-24" "2016-10-25"
[201] "2016-10-26" "2016-10-27" "2016-10-28" "2016-10-31" "2016-11-01" "2016-11-02" "2016-11-04" "2016-11-07" "2016-11-08" "2016-11-09"
[211] "2016-11-10" "2016-11-11" "2016-11-14" "2016-11-15" "2016-11-16" "2016-11-17" "2016-11-18" "2016-11-21" "2016-11-22" "2016-11-24"
[221] "2016-11-25" "2016-11-28" "2016-11-29" "2016-11-30" "2016-12-01" "2016-12-02" "2016-12-05" "2016-12-06" "2016-12-07" "2016-12-08"
[231] "2016-12-09" "2016-12-12" "2016-12-13" "2016-12-14" "2016-12-15" "2016-12-16" "2016-12-19" "2016-12-20" "2016-12-21" "2016-12-22"
[241] "2016-12-26" "2016-12-27" "2016-12-28" "2016-12-29" "2016-12-30"

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

> N <- length(idx)
> N
[1] 245

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

# 期待値をxts形式で保存する
mean_data <- xts(rep(mean(ganho_xts["2016", "Close"]), N), order.by = idx)
mean_data

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

# 期待値も併せて描画
chartSeries(ganho_xts, subset = "2016")
addTA(mean_data, on=1, lwd=2)

『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の使い方をはじめ、金融時系列分析に関する豊富な情報が載っています。



スポンサードリンク

Rによる株式データの取得とグラフの描画” に対して2件のコメントがあります。

  1. Kondo より:

    貴殿のホームページをいつも興味深く拝見させていただいております。
    日経平均株価の採用銘柄について、時系列での分析を行いたいと考えており、
    『株価データサイト k-db.com』様からのスクレイピングの記事を拝見させていただきました。
    残念ながら、『株価データサイト k-db.com』様のホームページが現在閉鎖されているようです。
    他のホームページでの株価も参照はできそうですが、採用銘柄全体の時系列を作ろうとするとかなり苦労しそうです。
    『株式投資メモ』様でも同じようなデータは参照できるようですが、本ページでもスクレイピングによりデータのダウンロードと解析用のデータベース作成は可能でしょうか。

    1. 馬場真哉 より:

      Kondo様

      サイトをご利用いただき、ありがとうございます。
      『株式投資メモ』様でもスクレイピングは可能だとは思います。
      ただ、『株価データサイト k-db.com』様のサイトの閉鎖の件もありますし、当サイトでも今後はスクレイピングを推奨しない方針にしようと思っております。
      恐縮ですが、こちらの更新はおそらく行わない予定です。
      この記事自体も、近いうちに非公開にするかもしれません。
      ご理解いただけますと幸いです。

Kondo へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください