powered by TechFeed
表示モード
ハウツー

ClaudeにDCFやコンプス分析を自律実行させる財務エージェントの作り方 — スキルプレイブックをシステムプロンプトに注入する設計が話題に

7月27日、MarkTechPostが「Designing Skill-Driven Financial Analysis Agents with Claude, Python, MCP Connectors, and Automated Deliverables」と題した記事を公開した。LLMを財務分析に活用する試みは急速に広がっているが、「どのスキルを持たせるか」をシステムプロンプトに動的に注入するアーキテクチャは実装例が少ない。本記事はAnthropicのClaudeとPythonを組み合わせ、DCFバリュエーション・コンプス分析・ICメモ作成をエージェントに自律実行させる具体的なチュートリアルとして注目を集めている。

7月27日、MarkTechPostが「Designing Skill-Driven Financial Analysis Agents with Claude, Python, MCP Connectors, and Automated Deliverables」と題した記事を公開した。LLMを財務分析に活用する試みは急速に広がっているが、「どのスキルを持たせるか」をシステムプロンプトに動的に注入するアーキテクチャは実装例が少ない。本記事はAnthropicのClaudeとPythonを組み合わせ、DCFバリュエーション・コンプス分析・ICメモ作成をエージェントに自律実行させる具体的なチュートリアルとして注目を集めている。


核心:SkillAgentクラスとツールループ

このチュートリアルの設計思想の核心は、スキルプレイブックをシステムプロンプトに直接注入するという仕組みだ。

AnthropicはGitHubにチュートリアル内で参照されているanthropics/financial-servicesリポジトリを公開しており、DCFモデル、コンプス分析、ICメモ作成といった金融分析の手順書(SKILL.mdファイル)が格納されている。チュートリアルはこのリポジトリをクローンし、各SKILL.mdのYAMLメタデータをパースして検索可能なレジストリ(SkillRegistry)を構築するところから始まる。

class SkillAgent:
    def __init__(self, skill_queries, max_skill_chars=12000, verbose=True):
        self.skills = [registry.get(q) for q in skill_queries]
        blocks = []
        for s in self.skills:
            blocks.append(f"\n\n===== SKILL: {s.name} =====\n"
                          f"{s.description}\n{s.body[:max_skill_chars]}")
        self.system = BASE_SYSTEM + "".join(blocks)

選択したスキルの内容をシステムプロンプトに連結し、Anthropic Messages APIのツールユースループで実行する構成だ。Claudeに「頭の中で計算するな、必ずrun_pythonツールを使え」と明示的に指示している点が実装上のポイントになる。

定義されたツールは2つ:

  • run_python: Pythonコードを実行してstdoutを返す。pandasnumpyが事前インポートされており、変数はターン間で永続する
  • save_file: outputs/<filename>にテキストを保存する

MCPコネクタの読み取り

リポジトリ内の.mcp.jsonファイルを走査し、外部金融データへのコネクタ定義を確認するステップも含まれている。ここで使われるMCP(Model Context Protocol)はAnthropicが策定したエージェントとツール間の接続仕様で、異なるデータソースやツールをLLMエージェントから統一的に呼び出せるようにする標準規格だ。本チュートリアルでは実際にMCPサーバーをデプロイするのではなく、設定ファイルの内容をインスペクションするにとどめている。MCPへの対応を想定した構成にしておくことで、将来的にリアルタイムの市場データや社内DBへの接続へと発展させやすくなる。


3つのデモで確認する実用性

DCFバリュエーション+ヒートマップ

架空の企業「Meridian Software」の合成データを使い、5年間のアンレバードDCF(負債調整前フリーキャッシュフロー割引)を実行する。WACCを8.5〜10.5%、ターミナル成長率を1.5〜3.5%の範囲で変化させた2次元の感度分析グリッドをJSON形式で取得し、matplotlibでヒートマップとして可視化する。

m = re.search(r"SENS_JSON:\s*(\{.*\})", dcf_answer, re.S)
if m:
    grid = json.loads(m.group(1))
    sens = pd.DataFrame(grid)

Claudeの出力テキストからSENS_JSON:マーカーを正規表現で抽出してJSONをパースする設計は、構造化出力を強制するシンプルな手法だ。

コンプス分析→Excel出力

架空のピアセット4社(ALFA、BRVO、CHRL、DLTA)のEV、EV/Revenue、EV/EBITDA、P/Eを計算し、集計統計(min/25th/median/75th/max)とともにExcelに出力する。openpyxlでヘッダーの色付け(紺地に白文字)と列幅の自動調整まで行う。

PEファンド向けICメモの下書き

プライベートエクイティ投資委員会(IC)向けのメモをドラフトする。記事では「すべての成果物は人間によるレビューが前提のドラフトであり、投資助言ではない」とシステムプロンプトに明示的に記述していることが強調されている。


環境構築

必要なライブラリはシンプルだ:

pip install anthropic pandas openpyxl pyyaml matplotlib

Google Colab上での動作を想定しており、APIキーはColabのシークレット、環境変数、対話プロンプトの順に取得する。使用モデルは**claude-sonnet-4-6**(元記事に記載されているモデル識別子。一般的なClaudeの命名規則と表記が異なるため、実際に試す場合はAnthropicの最新モデル一覧で正確なモデル名を確認することを推奨する)。


設計上の特徴

このアーキテクチャで押さえておくべき点を整理する:

  • スキルはリポジトリのSKILL.mdから動的に読み込むため、Anthropicがリポジトリを更新すれば自動的に反映される
  • Pythonの実行名前空間(_PY_NS)がターン間で永続するため、複数ターンにわたる計算で中間変数を再利用できる
  • max_turns=12でループ上限を設けており、エージェントの暴走を防ぐ安全弁になっている
  • 生成された成果物はすべてoutputs/ディレクトリに保存される

金融分析の文脈でエージェントのツールループを実装する際の実践的な構成として、コードの再利用性が高い。

詳細はDesigning Skill-Driven Financial Analysis Agents with Claude, Python, MCP Connectors, and Automated Deliverablesを参照していただきたい。