Claude Codeで、ポートフォリオ管理AIアプリを作ってみた
今回は題名の件である。Claude Codeの実力はすごいものだなと思った次第である。
今回作ったアプリのデモ
こちらがデモである。
(注:保有銘柄、株数等は、動作確認のために適当に作成したサンプルです。一切の売買推奨等は行っておりません。投資は自己責任にてお願いします)
Claude Codeによる当該アプリの説明
Claude Codeで作る本格的な株式ポートフォリオ管理アプリ
はじめに
個人投資家として株式ポートフォリオを管理する際、Excelでの手動計算や既存のアプリでは物足りなさを感じることがある。そこで、Claude Code を活用して機関投資家レベルの分析機能を持つポートフォリオ管理アプリを短期間で開発した。本記事では、その機能概要と開発プロセスについて解説する。
アプリケーション概要
今回開発したポートフォリオ管理アプリは、Streamlit をベースとした Web アプリケーションである。Yahoo Finance APIを通じてリアルタイムの株価データを取得し、現代ポートフォリオ理論に基づいた高度な分析機能を提供する。
主な特徴
多通貨対応: 日本、米国、欧州等の主要市場に対応
リアルタイムデータ: Yahoo Finance API による最新価格取得
高度な分析: VaR、ファーマ・フレンチ 5 ファクター分析等
AI 統合: OpenAI GPT による投資レポート生成
データエクスポート: CSV 形式での包括的なデータ出力
データ取り込み機能
アプリケーションは 2 つの方法でポートフォリオデータを取り込める。
自動ファイル検出:portfolio_files フォルダに CSV ファイルを配置すると、アプリ起動時に自動的に検出され、ドロップダウンメニューで選択できる。この機能により、毎回ファイルをアップロードする手間が省ける。
ファイルアップロード:従来通り、ブラウザからの直接アップロードも可能である。CSV ファイルの形式は以下の通りシンプルな構成である:
Ticker,Shares,AvgCostJPY
AAPL,100,15000
MSFT,50,25000
7203.T,1000,800
機能詳細
📈 パフォーマンス分析
各銘柄の損益状況を可視化し、勝率分析や最高・最低パフォーマンス銘柄の特定を行う。インタラクティブなチャートにより、ポートフォリオ全体の収益構造を直感的に把握できる。
⚠️ リスク分析
現代ポートフォリオ理論に基づく包括的なリスク評価を実装している:
VaR・CVaR 分析: 95%・99%信頼区間でのリスク計測
相関分析: 保有銘柄間の相関関係をヒートマップで表示
ファーマ・フレンチ分析: 5 ファクター+モメンタムによる要因分解
ストレステスト: カスタマイズ可能なシナリオ分析
🌍 配分分析
地域別・セクター別の配分状況を円グラフと表で詳細に表示する。各カテゴリの損益状況も同時に確認でき、分散投資の効果を定量的に評価できる。
💰 バリュエーション分析
ポートフォリオ全体の投資指標を加重平均で算出し、主要 ETF(MSCI ACWI、S&P500、NASDAQ-100、TOPIX)との比較を行う。PER、PBR、ROE 等の主要指標により、ポートフォリオの割安・割高判断の材料を提供する。
📰 AI 投資レポート
OpenAI のChatGPT APIを活用した投資レポート自動生成機能を搭載している。ポートフォリオの分析結果を基に、市場環境分析、個別銘柄評価、投資戦略提案等を含む包括的なレポートを生成する。
📊 株価チャート
個別銘柄のチャート、移動平均線等の技術分析機能を提供する。1 日から 5年間の任意の期間設定が可能である。
🔍 詳細データ
全ての分析結果を表形式で表示し、CSV形式でのダウンロードに対応している。現在価格、為替レート、企業情報、過去価格データ等を包括的にエクスポートできる。
技術的な工夫
データ管理の最適化
Yahoo Finance API への負荷を軽減するため、階層化されたキャッシュシステムを実装している。メモリキャッシュとディスクキャッシュを組み合わせ、データ取得の高速化とコスト削減を実現している。
エラーハンドリング
API 障害やデータ欠損に対する堅牢な処理を実装し、グレースフルデグラデーションによりユーザビリティを確保している。
Claude Code での開発体験
このアプリケーションは Claude Code を使用して約 3 日間で開発された。従来の開発手法と比較して以下の利点があった:
開発速度の向上
即座のコード生成: 複雑な財務計算やデータ可視化コードを短時間で実装
統合開発環境: ファイル管理、コード編集、実行環境が統合されている
エラー修正の効率化: 問題発生時の迅速な原因特定と修正
知識の補完
金融工学の専門知識が限定的でも、Claude Code がファーマ・フレンチモデルや VaR計算等の実装を支援した。理論的背景の説明と実装コードを同時に提供する点が特に有効であった。
コード品質の向上
ベストプラクティスの適用: PEP8 準拠のコーディングスタイル
適切なエラーハンドリング: 例外処理とユーザーフレンドリーなエラーメッセージ
効率的なデータ構造: Pandas と NumPy を活用した最適化
今後の展開
現在のバージョンでは個人利用に最適化されているが、以下の機能拡張を検討している:
リアルタイム通知: 特定条件での価格アラート機能
高度な最適化: ポートフォリオ最適化アルゴリズムの実装
データソースの拡張: 複数の金融データプロバイダーとの統合
まとめ
Claude Code を活用することで、従来では数週間を要していた本格的な金融アプリケーションを短期間で開発することができた。特に、複雑な金融計算や統計分析の実装において、Claude Code の知識補完機能が大きな価値を提供した。
個人投資家にとって、機関投資家レベルの分析ツールへのアクセスは従来困難であったが、このようなアプローチにより、高度な投資分析環境を手軽に構築できる時代になったと言える。
おわりに:人間による解説
所要時間と手順
制作に要した時間は、最初のMVP的なものが出来るまでで1時間。その後、機能の拡充、AIに一定期間の運用報告を書かせる機能の実装、エラーや不具合(例えば、国や業種の区分が変、米株、欧州株等も含めて円換算に評価する所の計算間違い他)の修正等全部でどうだろうか、仕事の後の日曜大工で数時間位だろうか。
Chat GPTやClaudeのプロンプトの会話で仕様書を作り、それをClaude Codeに渡して最初のMVPを作成、あとはひたすらClaude Codeと会話しながらエラーをつぶしていったり、機能面の不具合を修正した。最後にリファクタリングを依頼し、例えば頻繁にYahoo FinanceのAPIからデータを取りに行くような構造を改め、最初に1回データ取得して各タブの機能で使いまわすようにしてもらう等した。
機能面の限界
勿論、機能面の限界はある。率直に言って、機関投資家が本格的に使える代物ではない。
本日時点のポジション断面と取得コストしかデータを取り込んでいない点。過去の売買履歴やポートフォリオの時系列でみた変化をデータとして持たせられないので、頻繁に売買してポートフォリオ構成が変わる場合等は有意義なヒストリカル分析なり、一定期間のAIによる運用報告書作成が出来ない。
Fama-French5+Momentumの分析が雑。Fama-Frenchのファクターデータは米株のみから作成されている。これを日本株や欧州株に適用させるとロバストな分析にはならない。実感的に低ベータのポートフォリオなのにベータに積極的にBetしているようなファクター分析になっていたりする。
データライセンスの観点等から、商用化の見込みはない。
他にも色々。
Claude Codeの可能性と想定される影響
上記のような制限は色々あるものの、上のような「個人利用する趣味のアプリとしては十分に使えるアプリ」を、Claude Codeの手を借りればほんの2-3日で制作出来てしまうというのは、個人的には衝撃的であった。
きちんとToDoを組み立ててからひとつづつ実行していき、エラー修正、テスト等しっかりやって渡してくれる。あちらを直せばこちらが壊れる、と言ったモグラたたき感も殆どなく、Claude Codeとプロンプトのやり取りを重ねれば着実にモノが良くなっていく…ChatGPT Codex、AI Studio、Cursor等試してみたが、2025年6月時点ではClaude Codeが一番、「優秀なエンジニアの部下または外注委託先」的な挙動をしてくれる印象を個人的には持った。
大企業でClaude Code又は類似機能が一般的に導入されるのは幾分後かも知れないが、企業でこれが導入されれば開発は格段に効率化されるように思われる。米国でAI失業が起き始めているのも実感を持ってそうなんだろうなと感じる面もあった。Claude Codeを使いこなすには一定のプログラミング経験・開発経験はいるかも知れないが、同じ成果を出すのに従前と同じ人員は明らかに不要、プログラミングをぜんぶ人間が書く時代はもう終わるのだろうなと言う事を実感した。
自身的には、UI・フロントエンド回りのスキル等そう高い訳ではなかった中で、こうしたツールが出てくれて非常にわくわくした。アイデアを具現化するのが非常にやりやすくなったように感じた。今後もぜひ、日曜大工での自作アプリ制作に励みたいなと感じた次第である。
何かしらご参考になりましたら幸いです。
