こんにちは、株もっちーです。
土曜日は、ポートフォリオを点検してみたいと思います。
特になければ、自由に何かOUTPUTして、書いていきます。
はじめに
今日は、ポートフォリオ管理の技術的なメモです。
新NISAが始まって、いよいよ自分のポートフォリオにも投資信託が増えてきたので、管理対象に入れようと思ったのが発端です。
Numbersでは投資信託のデータが取れなかったので、ちょっと調べて簡単にできそうだったGoogleSpreadSheetへの移行を試みました。
同じようなことをされている方の参考になれば幸いです。
取りたい情報のリスト
最新の情報
- 株価(前日終値):米国個別株、米国ETF、日本個別株、日本ETF、日本投信
- 配当利回り、分配利回り計算のための年間配当金、年間分配金。
過去の情報
前月比、年初からの変化(YTD)を計算するために、1か月前の株価データ・指数データ。
Numbersでのデータ取得
基本は、stock, stockh関数を使います。
株価(前日終値の取得)
STOCK(B11,”取引値")
こんな形でコードと属性を指定することで、日本株・日本ETFにも対応しています。投資信託はコードで取得するのはできなさそうでした。
配当金・分配金の取得
STOCK(B11,”年間配当")
こんな形でコードと属性を指定することで、日本株にも対応しています。ETFは米国・日本とも未対応っぽい。
GoogleSpreadSheedでのデータ取得
基本は、GOOGLEFINANCE関数を使います。 この関数が未対応の場合は、情報のあるサイトのXMLを解析して必要な要素のデータを取得するスクレイピングという力技を使います。 (サイトによっては禁止されている場合もありますのでご注意を)
株価(前日終値の取得)
個別株(equities)とETF(etfs)でURLが違うので注意。
米国株・米国ETFは GOOGLEFINANCE関数でOK
こんな関数の式になります。"closeyest"と指定することで、前日終値が取得できます。
=GOOGLEFINANCE(B3, "closeyest")
詳細はこちらのヘルプを参照。
日本個別株・日本ETFは investing.com を利用
NTT(9432)の情報は以下のURLで見れますので、"nippon-telegraph---telephone-corp"を使います。 銘柄コード(9432)でできないのがちょっとめんどくさいのですが、investing.comをよく使うのでこれでやっています。 みんかぶとか他のサイトでもたぶんできます。
https://jp.investing.com/equities/nippon-telegraph---telephone-corp
xPathはブラウザで"解析"とか"検証"とやると見ることができます。少しHTMLやXMLの構造に関する知識が必要です。 xPathのコピーだと画像に記載したパスそのものは取得できなかったので、少し自分で解読して試行錯誤する必要があります。
GoogleChromeでxPathをコピーするとこんなやつがでてきます。
//*[@id="__next"]/div[2]/div[2]/div[2]/div[1]/div[5]/div[1]/dl[1]/div[2]/dd/span/span[2]
これだとうまくデータ取得できなかったので、前日終値をユニークに示しているであろう ddタグの data-test="prevClose"
属性を使います。
//*[@data-test="prevClose" ]
このxPathを使って、先程の画像のような数式を作ってやりますと、一応取得できるようになりました。
日本投資信託は nikkei.com を利用
investing.comで投資信託は見れませんので、日経の情報を使いました。要領は同じです。
オルカンこと、eMAXIS Slim 全世界株式(オール・カントリー) のコードは、"0331418A"。日本株4桁や、米国株のティッカーコードは覚えやすいのですが、これを覚えている人は相当マニアックですね。私は覚えられる気がしません。
配当金・分配金の取得
要領は同じです。GOOGLEFINANCE関数が全然役に立たないことがわかって、全部スクレイピングです。面倒。
年間の配当金は、配当(TTM)という表現でした。 「TTM(Trailing Twelve Months)」とは、過去12か月間の期間にわたる配当金の合計額です。 四半期配当の米国ETFで、直近の配当金を4倍するだけだと、配当のばらつきの影響で、年間の配当金がちゃんと計算できないので、TTMの情報があるのはいいですね。
過去の指数情報は保留
ちょっと気が向いたらGoogleSpreadSheetでのやり方も考えてみます。Numbersで出来ているからいいや。
どっちも必要な情報が全ては取れず、二刀流
Numbersに比べると、取れる情報は増えてきましたが、全部はできず。
今回記事にするまでに至らなかった、過去の指数の情報もかなりめんどくさそう。
GoogleSpreadSheet一本にできませんでして、なんか余計めんどくさいことになってしまいました。
AI(ChatGPT4)との雑談
質問
金融資産ポートフォリオのスプレッドシートでの管理をgoogle spread sheetに一本化したかったようですが苦労しているようです、何かアドバイスありますか。
回答
この記事で述べられている問題は、金融資産ポートフォリオをGoogle スプレッドシートで管理しようとする際に直面する技術的な課題に関するものです。作者は、NumbersとGoogle スプレッドシートの両方を使用しているが、特にGoogle スプレッドシートでのデータ取得に苦労しているようです。以下は、Google スプレッドシートでの金融資産ポートフォリオ管理に関するいくつかのアドバイスです:
GOOGLEFINANCE関数の活用: Google スプレッドシートのGOOGLEFINANCE関数は、株価、ETF、通貨レートなどの金融データの取得に非常に便利です。ただし、この関数は特定の市場や商品に限られることがあります。そのため、米国株や一部のETFには適していますが、日本の個別株や投資信託には適していない場合があります。
スクレイピングの使用: GOOGLEFINANCE関数で取得できないデータについては、ウェブスクレイピングを検討することができます。しかし、これは技術的に複雑であり、サイトの利用規約によっては禁止されていることもあるため、注意が必要です。
サードパーティのアドオンの使用: Google スプレッドシートでは、様々なサードパーティ製アドオンを利用することができます。これらのアドオンは、特定の金融データを取得しやすくするものもあります。
自動化スクリプトの作成: Google Apps Scriptを使用して、独自の自動化スクリプトを作成することも一つの方法です。これにより、定期的にデータを更新したり、特定の計算を自動化したりすることができます。
外部データソースとの統合: 他の金融データプロバイダーからデータをインポートすることも検討できます。APIを提供するサービスを利用して、必要なデータをGoogle スプレッドシートに直接取り込むことができる場合があります。
それぞれの方法にはメリットとデメリットがありますので、ポートフォリオの要件と個人的な技術スキルに応じて最適な方法を選択することが重要です。
あとがき
GPT-4君。それはわかってるんだけど、代わりにやってくれるところまでは行かないか。 サンプルコードは色々作ってくれそうなので、共同作業をするといつかできるかもしれない。 まだまだ、新たな手法を作り出そうとする創造的な作業は、人間の方が賢いかな。 とか言っているうちに、すぐに追い越されそうですが。
とりあえず投資信託のデータを管理するポートフォリオに組み込めたのは良かったです。
ちょっと変わり種をブログを書いてみました。 書いていて、その昔大学生になりたてくらいにHTMLのコードがブラウザに表示されるということに感動したのを思い出しました。 プログラミングやコンピュータに興味を持ってそういう関係の仕事に就いたのも、 そういう単純な喜びに起因するものだったのかもしれません。
できるだけPCローカルで色々管理してきていたものの、いよいよクラウドへの移行も進んできました。 やはり無料で使えるGoogle系に弱いです、だって便利ですからね。 色々な情報を吸い上げられていくんだろうな。
またちょこちょこ改良していこう。
ご質問やアドバイスなどあればコメントなどで、お気軽にお尋ねください。 分かる範囲でお返事します、分からなかったらすみません。
ランキング・宣伝など
記事が面白かったと思ったら、コメント、ブクマ、codocの投げ銭、ブログ村バナーポチリなど、なんでもよろしくお願いします。