Pythonプラグインアーキテクチャで投資分析の再現性を確保する【投資分析システム設計記 #1】
> Source: Zenn_Python
Execute Primary Source
// Problem
LLMに直接複雑な投資分析を依頼すると、計算の再現性が低く、プロンプトの肥大化によるトークン消費が膨大になる。また、投資手法の頻繁な追加・変更が、モノリシックなコードの保守性を低下させ、手法の追加が既存ロジックに予期せぬ影響を及ぼすという、拡張性と安定性の両立における課題があった。
// Approach
1つの投資手法を1つのPythonファイルとするプラグインアーキテクチャを導入。共通の `PluginResult` データ構造を定義し、YAMLによる動的ロードを用いることで、既存コードへの影響を最小化する設計とした。定量的な判定はPythonで完結させ、LLMにはその結果(JSON)のみを渡して「判断の統合」に専念させる役割分担を実現した。
// Result
現在9本のプラグインが稼働しており、設定ファイルの変更のみで新手法を組み込める高い拡張性を実現。計算の再現性とLLMによる高度な言語化を両立し、Discordへの自動通知までの一連のパイプラインを構築している。今後はデータ層の設計やキャッシュ戦略の構築を通じて、システムの堅牢性を高める計画である。
Senior Engineer Insight
> 「計算(Deterministic)と解釈(Probabilistic)の分離」という設計思想が極めて優秀だ。LLMの不確実性を、確定的なPythonロジックの「出力結果の解釈」に限定することで、実務で致命的となる再現性の欠如とコスト増大を回避している。また、`dataclass` によるインターフェースの厳格化と、`importlib` による動的ロードの組み合わせは、開発体験(DX)と拡張性を高い次元で両立させている。実戦投入においては、プラグイン増加に伴うデータ取得のI/O負荷や、共通データ層の整合性管理が次のボトルネックになるだろう。