ファイナンスデータ分析 Part1 - 経済指標データの取得と可視化

このノートは、Exploratoryを使って経済指標データの可視化や分析手法を体験いただく「ファイナンスデータ分析」の第1弾として「経済指標データの取得と可視化」について紹介します。

今回は株価のデータを用いて、株の成長を調べるために推移の可視化や、ボラティリティ(株価の変動の激しさ)を調べるためのリターン率の計算と可視化、最後には株式市場の動向を調べるために総取引高について分析をしていきます。

株価データの取得

データフレームのプラスボタンから「クラウドアプリケーションデータ」を選択します。

クラウドアプリケーション・データソースのダイアログが表示されるため、「株価データ」を選択します。

株価データのインポートダイアログが表示されるため、「ストック(ティッカー)シンボル」に銘柄を入力します。

今回はAppleの株価を取得したいため、「AAPL」を指定します。

銘柄の探し方についてはこちらのノート末尾にある「 銘柄(Stock Symbols)の調べ方」をご参照ください。

次に、「開始日」に「2000-01-01」を指定します。「終了日」には、何も指定しなければ本日までのデータが取得できるようになっています。

「実行」ボタンをクリックし、データが問題なく取得されていることが確認できたら、「保存」ボタンをクリックします。

データフレームに任意の名前を指定して、「作成」ボタンをクリックします。

これにより、Appleの株価のデータをインポートすることができました。

それぞれの列の意味は下記となっています。

  • symbol: 株価の銘柄
  • date: 取引日
  • open: 取引開始時の株価
  • high: 最大の株価
  • low: 最低の株価
  • close: 取引終了時の株価
  • volume: 売買が成立した株数
  • adjusted: 調整済み株価

株価データの可視化

Exploratoryを使って、時系列データをチャートを使って手早く可視化してみましょう。

今回は、日ごとに株価の推移を可視化して調べてみたいと思います。

チャートを作成するために、チャート・ビューを開き、タイプに「ライン」を選択します。

時系列データのトレンドを理解するためには「方向」が重要となりますが、上向きなのか下向きなのかの判断がしやすい「ライン」チャートがよく使われます。

次に、X軸には「date」を、Y軸には「adjusted」を選び、集計関数には「平均値(Mean)」を選択します。

Exploratoryでは、「日付型(Date)」や「日付/時間型 (POSIXct)」の列であれば、チャートの中で日付の単位を簡単に変えることができます。日の単位に合わせて事前に集計するといった、面倒な作業は必要ありません。

現在は「年」単位で可視化されていますが、これを「日」単位に変更したい場合は、X軸の日付の単位を「日」に変更します。

日ごとの株価の推移を可視化することができました。2020年あたりのコロナウイルスによるパンデミックが発生してから株価が急激に上昇していることがわかります。

日ごとのリターン率の計算と可視化

次に、下記の式を用いて毎日のリターン率を計算します。

調整済み株価 - lag(調整済み株価) / lag(調整済み株価) 

lag(調整済み株価)でのlag関数は前の値を取る関数です。

そのため、調整済み株価の前日との差を出し、前日の調整済み株価の値で悪ことで、リターン率を算出していることになります。

Exploratoryでは、「表計算」の機能を使うことでUIで簡単に計算することが可能です。

列ヘッダメニューから「表計算を作成」を選び、「...からの差の割合(比率)」にある「前の値(LAG)」を選択します。

表計算を作成のダイアログが表示され、これによって日毎のリターン率(adjusted_diff_prev_ratio)が計算されています。

今回のデータは既に日付の昇順でソートがされていますが、もしソートがされていない場合は「計算前にデータをソートする」にチェックをつけ、ソートする列に「日付」列を選び、並び順には「昇順」を選択します。

列名を変更するために、値の「adjusted」の右にある「編集」ボタンをクリックします。

列名を指定するにチェックをつけ、列名に「return」を指定します。

列名が変更できたら「実行」ボタンをクリックします。

これによって、日ごとのリターン率を計算して新しく列として作成することができました。

returnの列の「i(information)」をクリックすることで、サマリ情報を確認することができます。

1日あたりの最大のリターンは13.9%(0.139)であったことがわかります。平均値を見ると、1日の平均リターンは0に近いものの、0.13%(0.0013)とわずかに上回っています。

リターン率の分布をより細かく見ていくために、チャートを作成していきましょう。

チャートビューから「プラス」ボタンを教えて新規チャートを追加します。

タイプに「ヒストグラム」を選び、X軸には「return(リターン率)」を選択します。

デフォルトでは最小値から最大値までの値を等幅で10等分してバーとして表示されますが、細かく見るためにバーの数に「100」を指定します。

多くの日毎のリターン率は0付近に集まっていることがわかります。最大のリターン率は13.9%(0.139)でしたが、最小のリターン率は-0.518(-51.8%)と大きな損失となっています。

ダウ・ジョーンズ工業平均株価のデータの取得

これまではAppleの株価のデータのみを使っていましたが、ここからはダウ平均株価とも呼ばれているアメリカでの代表的な株価指数を使っていきましょう。

ダウ平均株価は、S&P ダウ・ジョーンズ・インデックス社が、アメリカのさまざまな業種の代表的な30銘柄を選出し、ダウ式平均株価にて算出した結果となります。

「Rスクリプト」を使用して、ダウ平均株価のデータを一気にインポートしてみましょう。

データフレームの「プラス」ボタンから「Rスクリプト」を選択します。

Rスクリプト・データフレームのダイアログが表示されたため、下記のスクリプトを入力して、実行してみてください。

library(tidyquant)
tq_index("DOW")

これによってダウ平均株価に選出されている銘柄のリストをデータフレームとして作ることができます。

ただ、今回はダウ平均株価に選出されている銘柄の「日ごとの株価のデータ」を取得したいため、下記のRスクリプトを入力します。

library(tidyquant)

ticker <- tq_index("DOW")

index_prices <- tq_get(ticker,
  get = "stock.prices",
  from = "2000-01-01",
  to = "2021-12-31"
)

先ほどのtq_indexによって取得されたダウ平均株価に選出されている銘柄の情報をtickerとして保持し、tidy_quantパッケージにあるtq_get関数によってそれぞれの銘柄の日ごとの株価を一気に取得をしています。

データフレームに任意の名前を指定して、「作成」ボタンをクリックします。

これにより、ダウ平均株価のデータをインポートすることができました。

チャートを作成するために、チャート・ビューを開き、タイプに「ライン」を選択します。

次に、X軸には「date」の「丸め処理の日」を、Y軸には「adjusted」を選び、集計関数には「平均値(Mean)」を選択します。

最後に、「色(グループ化)」に「symbol(銘柄)」を選択することで、銘柄ごとに株価の推移を可視化することができます。

総取引高を可視化する

例えば、「総取引高が多い日の後には、総取引高が多い日が続く可能性が高いですか?」という質問に答えることに興味があるとします。

この質問に対する初期分析のために、全てのダウ・ジョーンズの銘柄の毎日の取引高を米ドルで計算します。

そのため、毎日の終値(close)と売買が成立した株数(volume)を乗算して、米ドルでの総取引高を計算します。

終値(close)の列ヘッダメニューから「計算を作成」の「標準」を選択します。

計算を作成のダイアログが表示されるため、計算エディタに下記を指定します。

close * volume

列名に「total_volume」と指定し、この列の後に作るには「volume」を選択して実行します。

これにより、それぞれの行ごとに取引高を計算することができました。

チャートビューからタイプに「ライン」を選択します。

次に、X軸には「date」の「丸め処理の日」を、Y軸には「total_volume(総取引高)」を選び、集計関数には「合計値(Sum)」を選択します。

日毎に総取引高の推移を可視化することができました。

1日の総取引高はコロナウイルスによるパンデミックが2020年に発生して以来、株式市場ではかなりの取引量があったことがわかります。

Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio