2020/10/4更新 配当情報を取得する FINVIZ.com からの表番号を更新
2020/11/25更新 配当情報を取得する FINVIZ.com からの表番号を更新
(masawoさんからの情報提供。ありがとうございます)
2020/11/30更新 配当情報を取得する FINVIZ.com からの表番号を更新
先日個人投資家の嗜みである株管理のエクセルを Googleスプレッドシート に移行中である記事を取り上げました。

と書きましたが別の方法で配当情報を取得できました。
GOOGLEFINANCE関数 とあわせて Googleスプレッドシート で株価情報と FINVIZ.com から配当情報を取得する方法を紹介します。
GOOGLEFINANCE関数
Google Finance から過去・現在の株価情報を取得する関数です。
面白いですよね。インターネットから直接取得してくる。いまはエクセルも株価情報を取得できるようになりましたが Google が先行していた記憶です。ソフトウェアとインターネット、どちらを主導に培ってきたのか文化でしょうか。良し悪しではなく、切磋琢磨していることを感じます。
GOOGLEFINANCE関数 のヘルプはこちらです。構文は下記の通り。
GOOGLEFINANCE(銘柄, [属性], [開始日], [終了日|日数], [間隔])
銘柄
正しくは「取引所コード」+「ティッカー」となりますが「取引所コード」を省略しても市場を自動判別してくれるそうです。私が使っている限り省略してもきちんと取得してくれます。
例 "NYSEARCA:VYM" "NASDAQ:MSFT"
取引所コードとティッカーの間にはコロン、文字入力する場合はダブルクォーテーションを入れましょう。セル引用であれば B2&":"&C2 のように記入します。この辺りはエクセルと同じです。自分は下記のような表を作成して参照させています。
ティッカー | 種別 | 市場 | セクター |
VTI | ETF | NYSEARCA | 全米 |
VHT | ETF | NYSEARCA | ヘルスケア |
BND | ETF | NASDAQ | 米国債券 |
VYM | ETF | NYSEARCA | 高配当 |
VT | ETF | NYSEARCA | 全世界 |
VOO | ETF | NYSEARCA | S&P500 |
HDV | ETF | NYSEARCA | 高配当 |
VDC | ETF | NYSEARCA | 生活必需品 |
QQQ | ETF | NASDAQ | 情報技術 |
MSFT | 個別 | NASDAQ | 情報技術 |
PG | 個別 | NYSE | 生活必需品 |
JNJ | 個別 | NYSE | ヘルスケア |
GIS | 個別 | NYSE | 生活必需品 |
MMM | 個別 | NYSE | 資本財 |
PEP | 個別 | NASDAQ | 生活必需品 |
CSCO | 個別 | NASDAQ | 情報技術 |
T | 個別 | NYSE | 電気通信 |
XOM | 個別 | NYSE | エネルギー |
PM | 個別 | NYSE | 生活必需品 |
RTX | 個別 | NYSE | 資本財 |
KO | 個別 | NYSE | 生活必需品 |
MCD | 個別 | NYSE | 一般消費財 |
RDS.B | 個別 | NYSE | エネルギー |
属性、開始日など
リアルタイムデータと過去データで利用する値が異なります(投資信託データ用の属性もありますが米国内の投信はよくわかりませんw)。
詳細はヘルプ(リンク)を参照してください。私は下記の属性を利用しています。
- リアルタイムデータ
- "price" - リアルタイムの見積価格。最大 20 分まで遅延する場合があります。
- "pe" - 株価収益率。
- "eps" - 1 株当たりの収益。
- "changepct" - 前取引日の終値からの株価の変動率。
- 過去のデータ
- "close" - 指定した日付の終値。
こんな具合に表示されます。ETF ではpe(per)とepsが取れないものもあるようです。個別株ではないのでさほど問題ありません。
使用例です。リアルタイムデータでは日付指定は不要です。"close"属性は指定日の終値を取得できます。
- "price" - GOOGLEFINANCE("VYM","price")
- "pe" - GOOGLEFINANCE("VTI","pe")
- "eps" - GOOGLEFINANCE("VTI","eps")
- "changepct" - GOOGLEFINANCE("VYM","changepct")
- "close" - GOOGLEFINANCE("VYM","close","2020/6/30")
セルの中にミニグラフを書けるのですが(この機能はエクセルに無いと思います)このように指定しています。TODAY()-[日数] では、今日から指定日数の遡りを指定しています。
SPARKLINE(GoogleFinance("VYM","price", TODAY()-[日数], TODAY()))
SPARKLINE関数 でミニグラフを作成できます。構文は SPARKLINE(データ, [オプション]) なのですがオプションを省略すると折れ線グラフ(line)となります。

配当
前回の記事では挫折していた配当情報の取得です。GOOGLEFINANCE関数 には配当情報がありませんので、どこからかスクレイピングすることになります。
当初は finance.yahoo.com から IMPORTXML関数 で取得を試みましたが、取れたり取れなかったり安定しません。さっきまで取得出来ていたのに気づいたら #N/A とかなってるし。ネットの海で探してもみんな苦労しているようでした。
結局 finviz.com から IMPORTHTML関数 で取得させてもらうことにしました。finviz.com はヒートマップの提供で有名なサイトですね。

構文は下記のようにしています。B2 部分は参照セルで「ティッカー」と思ってください。
SUBSTITUTE(INDEX(IMPORTHTML("https://finviz.com/quote.ashx?t="&B2,"table",8),8,2),"*","")
マイクロソフト(MSFT)のサイトで解説します。

★2020/10/4更新★
指定する"table"が 11 → 8 に変わっていたので更新。
★2020/11/25更新★
指定する"table"が 8 → 9 に変わっていたので更新。
★2020/11/30更新★
指定する"table"が 9 → 8 に変わっていたので更新。
IMPORTHTML("https://finviz.com/quote.ashx?t="&B2,"table",8)
IMPORTHTML関数 を使いfinvizのURLの 8番目の要素をテーブル形式で取得します。

INDEX(IMPORTHTML("https://finviz.com/quote.ashx?t="&B2,"table",8),8,2)
INDEX関数 を使い取得したテーブルの 8行目、2列目の値を取得します。

SUBSTITUTE(INDEX(IMPORTHTML("https://finviz.com/quote.ashx?t="&B2,"table",8),8,2),"*","")
SUBSTITUTE関数 を使い「*」の文字を「」に変換(削除)します。
これで「1.01%」という値を取得できました。あとは株価を掛けることでパーセントから実数(額)に、保有株数から配当額予想などを算出しています。

配当情報の取得では皆さん結構苦労されているようです。使い慣れている finance.yahoo.com から取得できるとよかったんですけどね、目的は達成できましたのでヨシ!
コメント