はじめに
前回の記事で、Claude Codeを使って株式監視システム「StockWatch」を作った話を書きました。
あのシステムが安定稼働しているのを見て、次にやりたくなったのが ポートフォリオの可視化 です。
自分の保有銘柄の構成比率、推移チャート、配当の状況。これらを毎日自動で更新して、通勤時間にサクッと確認できるダッシュボードが欲しい。
そう思い立って、またClaude Codeと一緒に作りました。
作ったもの
このサイトの ポートフォリオページ がそれです。
主な機能は以下の通りです。
- ポートフォリオ指数(取得総額を基準=100として、現在の評価額を指数表示)
- 前日比・月間・年間の増減率
- 銘柄別構成の円グラフ(Chart.jsで描画)
- 構成銘柄別パフォーマンス(トータルリターン、月間リターン、配当利回り)
- 推移チャート(日々の指数変化を折れ線グラフで表示)
- 配当推移(指数=100の棒グラフ)
すべて 毎日17:15に自動更新 されます。市場が閉まった後に株価を取得し、計算して、サイトに反映。自分が何もしなくても、翌朝には最新の状態になっています。
プライバシーへの配慮
個人のポートフォリオを公開するにあたって、一番気を使ったのが プライバシー です。
具体的な銘柄名は一切公開していません。構成比率の大きい順に「銘柄A」「銘柄B」…とマスクし、セクター名だけを表示しています。
時価総額や保有株数も非公開。増減率(%)だけを見せる設計にしました。
投資助言にならないよう、免責事項も明記しています。個人の記録として公開している、という位置づけです。
モックHTMLでの事前確認が良かった
今回の開発で一番良かったのは、実装前にモックHTMLでデザインを確認したことです。
Chart.jsの円グラフ、折れ線グラフ、棒グラフ。銘柄カードの並び方。スマホでの見え方。これらをすべて、実装する前にHTMLファイルとして作って、iPhoneで実際に確認しました。
このモックが思った以上に洗練されたデザインになっていて、「これをそのまま実装すればいい」という安心感がありました。
実装時の手戻りがほぼゼロだったのは、この事前確認のおかげです。製造業の「試作→検証→量産」の流れに近い進め方で、個人的にしっくり来ました。
つまずいた点
Alpha Vantageが日本株に対応していなかった
当初、株価取得にはAlpha Vantage(無料API)を使う予定でした。
ところが、いざ接続してみると 無料枠では日本株(.TYO形式)が取得できない ことが判明。
急遽、yfinance(Yahoo Financeのデータを取得するPythonライブラリ)にフォールバックする設計に切り替えました。Claude Codeがこの判断を自律的に行い、コードの修正まで完了してくれたのは助かりました。
結果的に、yfinanceをプライマリとして使う構成に落ち着きました。17銘柄すべて問題なく取得できています。
JSONファイルのコミット漏れ
もう一つのつまずきは、データファイルのコミット漏れです。
ポートフォリオのデータ(JSON形式)はVPS上で生成されて、ブログのリポジトリに書き出されます。ところが、初回のコミット時にこのJSONファイルをgit addし忘れていて、Cloudflare Pagesのビルドで「ファイルが見つかりません」というエラーに。
原因はClaude Codeが即座に診断してくれました。「src/data/portfolio/ 以下の3ファイルがuntrackedです」と。コミットして再pushしたら、すぐに解決しました。
地味なミスですが、自動デプロイの仕組みでは「ローカルでは動くのに本番では動かない」パターンの典型例でした。
技術構成
使った技術をざっと紹介します。
- 株価取得: yfinance(Python)
- 計算・集計: Python(PortfolioCalculator自作クラス)
- グラフ描画: Chart.js(CDN読込、ドーナツ・折れ線・棒グラフ)
- ページ生成: Astro(静的サイトジェネレータ)
- 自動更新: systemd timer(毎日17:15 JST)
- デプロイ: git push → Cloudflare Pages 自動再ビルド
StockWatchの既存インフラ(VPS、Python環境、systemd timer)をそのまま拡張する形で実装したので、追加コストはゼロです。
今後やりたいこと
ダッシュボードとしての基本形はできましたが、まだまだ拡張したい機能があります。
-
インデックス指数との比較: 自分のポートフォリオと日経平均やTOPIX、オルカンの推移を重ねて表示したい。自分の運用が市場平均に勝っているのか負けているのか、一目で分かるようにしたい。
-
生成AIによるポートフォリオ考察: Claudeにポートフォリオの構成や推移を読ませて、「セクター偏りのリスク」や「配当効率の改善案」などを定期的に考察してもらう機能。AIを投資の相談相手にする試みです。
-
市況まとめとの連動: StockWatchの適時開示データと組み合わせて、保有銘柄に影響するニュースを自動でピックアップする機能。
いずれも、隙間時間でコツコツ開発していく予定です。
まとめ
前回の株式監視システムに続いて、ポートフォリオダッシュボードを作りました。
毎日自動で更新されるダッシュボードが、個人でも作れてしまう。 しかもスマホ片手に、Claude Codeと二人三脚で。
派手な機能はありませんが、自分の投資を静かに見守ってくれる、地味で便利なツールができました。
次は、インデックスとの比較機能あたりから手をつけてみようと思います。