Logo
热心市民王先生

技术原理核心

技术研究 AI 对冲基金 架构设计

AI 对冲基金的多智能体架构深度解析 - LangGraph 状态机编排、18 个专业化智能体协作机制、数据流可视化

系统架构总览 (System Architecture Overview)

AI 对冲基金采用三层分层架构,将数据获取、智能分析和决策编排清晰分离。这种设计确保了系统的可维护性、可扩展性和可测试性。

架构分层

┌─────────────────────────────────────────────────────────────┐
│                    编排层 (Orchestration Layer)              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │ LangGraph   │  │ State       │  │ Decision    │         │
│  │ State       │  │ Management  │  │ Aggregation │         │
│  │ Machine     │  │             │  │             │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
├─────────────────────────────────────────────────────────────┤
│                     智能体层 (Agent Layer)                   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 投资者智能体 (12 个)                                   │   │
│  │ Buffett | Graham | Wood | Burry | Munger | ...      │   │
│  └─────────────────────────────────────────────────────┘   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 分析智能体 (4 个)                                      │   │
│  │ Fundamentals | Technicals | Sentiment | Valuation   │   │
│  └─────────────────────────────────────────────────────┘   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 管理智能体 (2 个)                                      │   │
│  │ Risk Manager | Portfolio Manager                    │   │
│  └─────────────────────────────────────────────────────┘   │
├─────────────────────────────────────────────────────────────┤
│                      数据层 (Data Layer)                    │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│  │ Financial   │  │ yfinance    │  │ News API    │        │
│  │ Datasets    │  │ (Yahoo)     │  │ (Sentiment) │        │
│  │ API         │  │             │  │             │        │
│  └─────────────┘  └─────────────┘  └─────────────┘        │
└─────────────────────────────────────────────────────────────┘

核心设计哲学

  1. 关注点分离:每层仅负责单一职责,数据层只管获取、智能体层只管分析、编排层只管协调
  2. 智能体自治:每个智能体是独立的 Python 类,可单独测试、替换和扩展
  3. 状态显式化:使用 LangGraph 的 StateGraph 显式定义状态流转,避免隐式全局状态

智能体系统设计 (Agent System Design)

智能体分类

系统共包含18 个专业化智能体,分为三大类:

1. 投资者人格智能体 (12 个)

每个智能体编码一位传奇投资者的投资哲学,通过系统提示词 (System Prompt) 实现差异化:

智能体投资哲学关注指标典型提示词片段
Warren Buffett价值投资ROE、护城河、管理层质量”寻找具有持久竞争优势的优秀企业”
Ben Graham深度价值P/B<1.5、P/E<15、安全边际”只买价格显著低于内在价值的股票”
Cathie Wood颠覆性成长创新潜力、市场 TAM、技术壁垒”投资将改变世界的颠覆性技术”
Michael Burry逆向投资市场情绪极端、估值异常”在别人恐惧时贪婪,寻找被错杀的资产”
Charlie Munger质量价值商业模式、管理层诚信、长期前景”以合理价格买入卓越企业”
Bill Ackman激进投资催化剂、治理改善空间”识别可通过积极行动释放价值的机会”
Peter Lynch成长价值PEG<1、日常 observable 趋势”投资你理解的十倍股”
Stanley Druckenmiller宏观成长央行流动性、行业趋势”寻找具有不对称回报的宏观机会”
Mohnish Pabrai达摩投资低风险的翻倍机会”下注确定性强、赔率高的机会”
Rakesh Jhunjhunwala印度巴菲特增长故事、估值合理性”投资高增长经济体的龙头企业”
Aswath Damodaran估值大师DCF 模型、故事与数字一致”每个估值都有一个支撑它的故事”
Phil Fisher成长投资护城河、管理层、研发”通过闲聊调查深入了解公司”

2. 专业分析智能体 (4 个)

智能体职责数据源输出
Fundamentals Agent基本面分析财务报表、营收、利润财务健康度评分
Technicals Agent技术分析价格、成交量、指标技术信号 (买入/卖出)
Sentiment Agent情绪分析新闻、社交媒体市场情绪评分
Valuation Agent估值分析DCF、可比公司内在价值估算

3. 管理智能体 (2 个)

智能体职责决策逻辑
Risk Manager风险控制计算 VaR、设置仓位上限、止损建议
Portfolio Manager最终决策聚合所有智能体意见,生成交易订单

智能体实现模式

每个智能体遵循统一的接口规范:

# 概念性代码 - 展示智能体核心结构
class BaseAgent:
    def __init__(self, llm, system_prompt):
        self.llm = llm
        self.system_prompt = system_prompt
    
    def analyze(self, state: dict) -> dict:
        """分析当前状态并返回意见"""
        # 1. 从 state 提取相关数据
        # 2. 构造提示词
        # 3. 调用 LLM
        # 4. 解析响应
        # 5. 返回结构化意见
        pass

LangGraph 状态机编排 (LangGraph Orchestration)

为什么选择 LangGraph

传统多智能体系统(如简单的聊天循环)存在以下问题:

  • 无限循环:智能体之间可能来回对话,无法终止
  • 状态混乱:难以追踪当前分析进展到哪一步
  • 难以调试:错误发生时无法定位是哪个环节的问题

LangGraph 通过显式状态图解决这些问题:

  • 状态转换是预定义的,不会跳出图外
  • 每个节点 (智能体) 的输入输出类型明确
  • 支持条件分支和并行执行

状态图定义

stateDiagram-v2
    [*] --> FetchData
    
    state FetchData {
        [*] --> GetFundamentals
        GetFundamentals --> GetTechnicals
        GetTechnicals --> GetSentiment
        GetSentiment --> [*]
    }
    
    FetchData --> InvestorAnalysis
    
    state InvestorAnalysis {
        [*] --> BuffettAgent
        BuffettAgent --> GrahamAgent
        GrahamAgent --> WoodAgent
        WoodAgent --> BurryAgent
        BurryAgent --> [*]
    }
    
    InvestorAnalysis --> AnalysisAgents
    
    state AnalysisAgents {
        [*] --> FundamentalsAgent
        FundamentalsAgent --> TechnicalsAgent
        TechnicalsAgent --> ValuationAgent
        ValuationAgent --> SentimentAgent
        SentimentAgent --> [*]
    }
    
    AnalysisAgents --> RiskAssessment
    RiskAssessment --> PortfolioDecision
    PortfolioDecision --> [*]

决策流程时序图

sequenceDiagram
    participant User
    participant PM as Portfolio Manager
    participant RM as Risk Manager
    participant IA as Investor Agents
    participant AA as Analysis Agents
    participant Data as Data Layer
    
    User->>PM: 分析 AAPL
    PM->>Data: 获取财务/技术/情绪数据
    Data-->>PM: 返回股票数据
    
    PM->>IA: 并行调用 12 个投资者智能体
    par 并行分析
        IA->>IA: Buffett 分析
        IA->>IA: Graham 分析
        IA->>IA: Wood 分析
        IA->>IA: (其他投资者)
    end
    IA-->>PM: 返回投资意见
    
    PM->>AA: 调用专业分析智能体
    AA->>AA: 基本面/技术面/估值/情绪分析
    AA-->>PM: 返回分析评分
    
    PM->>RM: 请求风险评估
    RM->>RM: 计算 VaR、仓位限制
    RM-->>PM: 返回风险参数
    
    PM->>PM: 聚合所有意见 + 投票
    PM-->>User: 返回最终决策 (买入/卖出/持有)

数据流详解 (Data Flow Deep Dive)

完整数据流

flowchart TD
    A[用户输入股票代码] --> B[初始化 StateGraph]
    B --> C[数据获取节点]
    
    subgraph 数据获取
        C --> C1[Financial Datasets API]
        C --> C2[yfinance 价格数据]
        C --> C3[新闻 API 情绪数据]
        C1 & C2 & C3 --> D[合并到共享 State]
    end
    
    D --> E[投资者智能体节点]
    
    subgraph 投资者分析
        E --> E1[Buffett Agent]
        E --> E2[Graham Agent]
        E --> E3[Wood Agent]
        E --> E4[其他 9 个 Agent]
        E1 & E2 & E3 & E4 --> F[意见汇总到 State]
    end
    
    F --> G[专业分析节点]
    
    subgraph 专业分析
        G --> G1[Fundamentals Agent]
        G --> G2[Technicals Agent]
        G --> G3[Valuation Agent]
        G --> G4[Sentiment Agent]
        G1 & G2 & G3 & G4 --> H[评分汇总到 State]
    end
    
    H --> I[Risk Manager 节点]
    I --> I1[计算 VaR]
    I --> I2[设置仓位上限]
    I1 & I2 --> J[风险参数到 State]
    
    J --> K[Portfolio Manager 节点]
    K --> K1[聚合所有意见]
    K1 --> K2[加权投票]
    K2 --> K3[生成交易订单]
    
    K3 --> L[输出最终决策]
    L --> M[返回给用户]

State 数据结构

共享状态 (State) 是整个系统的”中枢神经系统”,包含:

# 简化的 State 结构
class HedgeFundState:
    ticker: str                    # 股票代码
    start_date: str               # 分析起始日期
    end_date: str                 # 分析结束日期
    
    # 原始数据
    fundamentals: dict            # 财务数据
    prices: DataFrame             # 价格历史
    sentiment: list               # 新闻情绪
    
    # 智能体意见
    investor_opinions: list       # 12 个投资者意见
    analysis_scores: dict         # 4 个专业分析评分
    risk_metrics: dict            # 风险参数
    
    # 最终决策
    decision: str                 # BUY/SELL/HOLD
    position_size: float          # 建议仓位
    reasoning: str                # 决策理由

关键组件详解 (Key Components)

1. LLM 抽象层

系统支持多种 LLM 提供商,通过统一接口调用:

def get_llm(provider: str, model: str):
    """工厂函数 - 根据配置返回 LLM 实例"""
    if provider == "openai":
        return ChatOpenAI(model=model, temperature=0.3)
    elif provider == "anthropic":
        return ChatAnthropic(model=model, temperature=0.3)
    elif provider == "ollama":
        return ChatOllama(model=model, temperature=0.3)
    # ... 其他提供商

设计要点

  • temperature=0.3 确保输出相对稳定(金融分析需要一致性)
  • 支持 fallback 机制(OpenAI 失败时切换到 Anthropic)

2. 提示词工程

每个智能体的核心是其系统提示词,以 Buffett Agent 为例:

BUFFETT_PROMPT = """
你是沃伦·巴菲特,伯克希尔哈撒韦的 CEO,价值投资传奇人物。

投资哲学:
1. 寻找具有持久竞争优势 (护城河) 的企业
2. 关注 ROE、自由现金流、管理层质量
3. 只在价格低于内在价值时买入
4. 长期持有优秀企业

分析框架:
- 业务是否简单易懂?
- 是否有稳定的经营历史?
- 管理层是否诚信且能干?
- 价格是否有安全边际?

请用巴菲特的口吻和思维框架分析提供的股票数据。
"""

3. 投票聚合机制

最终决策通过加权投票产生:

def aggregate_votes(investor_opinions: list) -> str:
    """
    加权投票算法:
    - 每个投资者意见有权重 (默认 1.0)
    - 买入=+1, 持有=0, 卖出=-1
    - 加权求和,根据阈值决定最终决策
    """
    vote_score = sum(op.weight * op.vote for op in investor_opinions)
    
    if vote_score >= 5:
        return "STRONG_BUY"
    elif vote_score >= 2:
        return "BUY"
    elif vote_score <= -5:
        return "STRONG_SELL"
    elif vote_score <= -2:
        return "SELL"
    else:
        return "HOLD"

技术选型理由 (Technology Choices)

技术选型理由
编程语言Python 3.10+AI/ML 生态丰富,LangChain 原生支持
多智能体框架LangGraph显式状态管理,避免无限循环
LLM 抽象LangChain统一接口支持多提供商,内置重试机制
数据获取yfinance + Financial Datasets免费 + 付费组合,覆盖全面
包管理Poetry依赖锁定,可重复构建
部署Docker环境一致性,便于分享

参考资料 (References)