Skip to content

AI Agent 自动化投资 ​

🤖 AI Agent = LLM + 工具 + 记忆 + 规划 —— 从"问答助手"升级为"自动执行的投资决策者"。

🎯 AI Agent 核心架构 ​

📌 Agent = LLM + 4 大组件 ​

┌─────────────────────────────────────────┐
│            AI Agent 架构                │
├─────────────────────────────────────────┤
│  LLM (大脑)                             │
│  ├── GPT-4 / Claude / Gemini / Qwen    │
│  ├── 推理、规划、决策                   │
│  └── 多模态(文本/图像/音频/视频)       │
│                                         │
│  Tools (工具)                           │
│  ├── API: Tushare / AKShare / 雪球     │
│  ├── 数据库: SQL / Vector              │
│  ├── 浏览器: 抓取新闻 / 公告           │
│  ├── 代码执行: Python / SQL            │
│  └── 交易接口: 券商 API                │
│                                         │
│  Memory (记忆)                          │
│  ├── 短期: 对话上下文                  │
│  ├── 长期: 向量数据库 / 用户偏好       │
│  └── 情景: 经验案例库                  │
│                                         │
│  Planning (规划)                        │
│  ├── 任务分解: ReAct / CoT             │
│  ├── 反思: Reflection / Self-Critique   │
│  └── 多步推理: Tree of Thought         │
└─────────────────────────────────────────┘

📌 Agent vs 普通 LLM ​

维度普通 LLMAI Agent
输入单次提示长期记忆 + 上下文
输出文本行动(API 调用 / 代码执行)
能力知识执行
工具无多工具组合
规划无自主规划
错误恢复无反思 + 调整
适用场景问答、写作自动化、研究、交易

📊 Agent 关键模式 ​

📌 ReAct(Reasoning + Acting) ​

问题:上海茅台 vs 腾讯控股 哪个更值得买?

Thought 1: 用户想比较两家公司,需要 PE / 增速 / 现金流 数据
Action 1: 搜索"贵州茅台 PE 2024"
Observation 1: 贵州茅台 2024 PE 25.6

Thought 2: 也需要腾讯的 PE
Action 2: 搜索"腾讯控股 PE 2024"
Observation 2: 腾讯 2024 PE 18.5

Thought 3: 两者增速差异
Action 3: 搜索"贵州茅台 营收增速 2024"
Observation 3: 茅台 2024 营收增速 15%

Thought 4: 腾讯 营收增速
Action 4: 搜索"腾讯 营收增速 2024"
Observation 4: 腾讯 2024 营收增速 8%

Thought 5: 综合比较
Action 5: 输出分析报告

📌 CoT(Chain of Thought) ​

  • 让 LLM 显式输出推理过程
  • 提高数学 / 逻辑能力 30-50%
  • 配合 Few-shot 效果更佳

📌 Plan-and-Execute ​

用户:构建一个量化策略
  ↓
Planner: 把任务分解为 5 步
  1. 数据获取
  2. 因子计算
  3. 回测
  4. 风险评估
  5. 报告输出
  ↓
Executor: 逐步执行
  ↓
Replanner: 根据结果调整

📌 Reflection(自我反思) ​

Agent 第一次回答:买入茅台
  ↓
Critic Agent 评估:理由不够充分,需要更多数据
  ↓
Agent 重新回答:基于 PE / ROE / 增速 详细分析

📊 主流 Agent 框架 ​

📌 LangChain ​

  • 官网:langchain.com
  • GitHub:github.com/langchain-ai/langchain
  • 特点:最流行、文档全、社区大
  • 核心组件:Models / Prompts / Chains / Agents / Memory / Indexes
  • 优势:多模型支持、丰富工具、生态完整
  • 劣势:版本迭代快、抽象层多
python
from langchain.agents import create_react_agent, AgentExecutor
from langchain.tools import Tool
from langchain_openai import ChatOpenAI
from langchain import hub

# 1. 定义工具
def get_stock_price(ticker: str) -> str:
    """获取股票价格"""
    import tushare as ts
    df = ts.get_realtime_quotes(ticker)
    return f"当前价: {df['price'].iloc[0]}"

tools = [
    Tool(
        name="StockPrice",
        func=get_stock_price,
        description="获取股票实时价格"
    )
]

# 2. 创建 Agent
llm = ChatOpenAI(model="gpt-4o", temperature=0)
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 3. 执行
result = agent_executor.invoke({
    "input": "贵州茅台现在多少钱?"
})
print(result["output"])

📌 LangGraph ​

  • 官网:langchain-ai.github.io/langgraph
  • 特点:基于 LangChain 的图状态机
  • 核心:节点 + 边 + 状态
  • 适用:多步工作流、复杂状态
python
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated
import operator

# 定义状态
class AgentState(TypedDict):
    messages: Annotated[list, operator.add]
    next_step: str

# 定义节点
def research(state):
    # 调研
    return {"messages": ["调研结果..."]}

def analyze(state):
    # 分析
    return {"messages": ["分析结果..."]}

def decide(state):
    # 决策
    return {"messages": ["决策..."], "next_step": "execute"}

def execute(state):
    # 执行
    return {"messages": ["执行完成"]}

# 构建图
workflow = StateGraph(AgentState)
workflow.add_node("research", research)
workflow.add_node("analyze", analyze)
workflow.add_node("decide", decide)
workflow.add_node("execute", execute)

workflow.add_edge("research", "analyze")
workflow.add_edge("analyze", "decide")
workflow.add_edge("decide", "execute")
workflow.add_edge("execute", END)

workflow.set_entry_point("research")

app = workflow.compile()
result = app.invoke({"messages": [], "next_step": ""})

📌 AutoGen(微软) ​

  • 官网:microsoft.github.io/autogen
  • 特点:多智能体对话
  • 核心:UserProxyAgent / AssistantAgent / GroupChat
  • 适用:复杂协作任务
python
from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager

# 创建多个 Agent
researcher = AssistantAgent(
    name="Researcher",
    llm_config={"model": "gpt-4o"},
    system_message="你是一个金融研究员,负责收集和分析数据"
)

analyst = AssistantAgent(
    name="Analyst",
    llm_config={"model": "gpt-4o"},
    system_message="你是一个量化分析师,负责因子计算和回测"
)

trader = AssistantAgent(
    name="Trader",
    llm_config={"model": "gpt-4o"},
    system_message="你是一个交易员,负责执行交易和风控"
)

user = UserProxyAgent(
    name="User",
    human_input_mode="TERMINATE"
)

# 群聊
groupchat = GroupChat(
    agents=[user, researcher, analyst, trader],
    messages=[],
    max_round=10
)

manager = GroupChatManager(groupchat=groupchat, llm_config={"model": "gpt-4o"})

user.initiate_chat(manager, message="构建一个沪深 300 动量策略")

📌 CrewAI ​

  • 特点:多智能体协作框架
  • 核心:Role + Goal + Backstory
  • 适用:多角色任务
python
from crewai import Agent, Task, Crew

researcher = Agent(
    role="高级研究员",
    goal="发现 A 股最佳投资标的",
    backstory="20 年 A 股研究经验",
    tools=[search_tool, tushare_tool]
)

analyst = Agent(
    role="量化分析师",
    goal="回测并验证策略",
    backstory="10 年量化经验",
    tools=[backtest_tool]
)

task1 = Task(
    description="分析贵州茅台的基本面",
    agent=researcher
)

task2 = Task(
    description="回测白酒板块过去 5 年表现",
    agent=analyst
)

crew = Crew(agents=[researcher, analyst], tasks=[task1, task2])
result = crew.kickoff()

📌 MCP(Model Context Protocol) ​

  • 定义:Anthropic 2024-11 推出的开放协议
  • 目的:标准化 LLM 与外部工具 / 数据源的连接
  • 核心:MCP Server(暴露工具)+ MCP Client(消费工具)
  • 优势:跨模型、跨工具、跨数据源
LLM Agent
   ↓
MCP Client(Claude Desktop / Cursor / 自建)
   ↓
MCP Server(数据源 / 工具)
   ├── Tushare MCP Server(股票数据)
   ├── Backtrader MCP Server(回测)
   ├── 雪球 MCP Server(舆情)
   └── 邮件 MCP Server(通知)

📊 投资领域 Agent 实战 ​

📌 场景 1:自动研报 ​

python
# 自动研报生成 Agent
class ReportAgent:
    def __init__(self):
        self.tools = [TushareTool(), NewsTool(), Filer()]
        self.llm = ChatOpenAI(model="gpt-4o")
    
    def generate(self, ticker: str):
        # 1. 拉取数据
        data = self.tools[0].get_financials(ticker)
        news = self.tools[1].get_news(ticker, days=30)
        
        # 2. 提取关键观点
        key_points = self.llm.invoke(f"提取以下研报要点:{data}")
        
        # 3. 撰写研报
        report = self.llm.invoke(f"""
        基于以下数据撰写专业研报:
        财务数据:{data}
        最新新闻:{news}
        关键观点:{key_points}
        """)
        
        # 4. 输出 PDF
        self.tools[2].save(report, f"{ticker}_report.pdf")
        
        return report

📌 场景 2:量化因子研究 ​

python
# 因子研究 Agent
class FactorAgent:
    def research(self, factor: str):
        # 1. 调研学术文献
        papers = self.search_arxiv(f"{factor} factor stock returns")
        
        # 2. 实现因子
        code = self.llm.invoke(f"用 Python 实现 {factor} 因子")
        
        # 3. 回测
        backtest_result = self.backtest(code)
        
        # 4. 分析结果
        analysis = self.llm.invoke(f"""
        分析以下回测结果:
        因子代码:{code}
        回测结果:{backtest_result}
        """)
        
        return analysis

📌 场景 3:实时舆情监控 ​

python
# 舆情监控 Agent
class SentimentAgent:
    def monitor(self, ticker: str):
        while True:
            # 1. 抓取新闻 / 微博 / 雪球
            news = self.crawl(f"{ticker} 股票 今日")
            
            # 2. 情绪分析
            sentiment = self.analyze_sentiment(news)
            
            # 3. 触发告警
            if sentiment < -0.5:
                self.alert(f"{ticker} 舆情负面:{news[:5]}")
            
            time.sleep(300)  # 5 分钟一次

📌 场景 4:自动交易 ​

python
# 交易 Agent
class TradingAgent:
    def execute(self, signal: dict):
        # 1. 风险检查
        if not self.risk_check(signal):
            return "风控不通过"
        
        # 2. 资金分配
        size = self.position_size(signal)
        
        # 3. 下单
        order = self.broker.order(
            ticker=signal['ticker'],
            side=signal['side'],
            size=size
        )
        
        # 4. 记录
        self.log(order)
        
        return order

📊 量化实战案例 ​

📌 案例 1:AI 选股 Agent ​

python
# 综合 AI 选股 Agent
class AIStockPicker:
    def __init__(self):
        self.fundamental_agent = FundamentalAgent()
        self.technical_agent = TechnicalAgent()
        self.sentiment_agent = SentimentAgent()
        self.risk_agent = RiskAgent()
        self.llm = ChatOpenAI(model="gpt-4o")
    
    def pick_stocks(self, universe: list, top_n: int = 10):
        # 1. 各 Agent 评分
        scores = {}
        for ticker in universe:
            f = self.fundamental_agent.score(ticker)  # 基本面
            t = self.technical_agent.score(ticker)    # 技术面
            s = self.sentiment_agent.score(ticker)    # 舆情
            r = self.risk_agent.score(ticker)         # 风险
            
            # 2. 综合评分(LLM 加权)
            weights = self.llm.invoke(f"""
            对以下 Agent 在当前市场环境下给股票评分:
            - 基本面 (f={f}): 权重?
            - 技术面 (t={t}): 权重?
            - 舆情 (s={s}): 权重?
            - 风险 (r={r}): 权重?
            """)
            
            scores[ticker] = f * 0.4 + t * 0.3 + s * 0.2 + r * 0.1
        
        # 3. 排序选 Top N
        top_stocks = sorted(scores.items(), key=lambda x: -x[1])[:top_n]
        
        return top_stocks

📌 案例 2:宏观 + 个股联动 ​

python
# 宏观驱动 Agent
class MacroAgent:
    def __init__(self):
        self.macro_data = FredAPI()  # 美联储
        self.china_data = WindAPI()  # 国内宏观
        self.llm = ChatOpenAI(model="gpt-4o")
    
    def analyze(self):
        # 1. 拉取宏观数据
        cpi = self.china_data.get_cpi()
        pmi = self.china_data.get_pmi()
        m2 = self.china_data.get_m2()
        
        # 2. LLM 解读
        interpretation = self.llm.invoke(f"""
        解读当前宏观环境:
        CPI: {cpi}(通胀)
        PMI: {pmi}(经济)
        M2: {m2}(货币)
        给出最受益行业
        """)
        
        # 3. 联动个股
        sectors = self.parse_sectors(interpretation)
        stocks = self.map_sector_to_stocks(sectors)
        
        return stocks

📊 风险与挑战 ​

📌 技术风险 ​

风险应对
幻觉RAG + 人工复核
API 限流限流 + 多源数据
数据错误数据校验 + 多源对比
延迟缓存 + 异步
成本模型分层(小模型 + 大模型)

📌 投资风险 ​

风险应对
策略失效持续监控 + 再训练
过拟合样本外测试 + 简化模型
黑天鹅风控 + 止损 + 分散
流动性限额 + 大单拆分
监管合规审查 + 报备

📌 监管态势 ​

  • 2024-2025:证监会多次发布程序化交易管理规定
  • 2025-04:证监会发布《证券市场程序化交易管理规定(试行)》
  • 核心要求:
    • 备案(高频交易必须)
    • 收费(高频交易额外收费)
    • 风控(异常交易监测)
    • 公平(禁止频繁撤单等)
  • 2026:交易所升级监管科技(RegTech)

📊 学习路径 ​

📌 入门(0-3 月) ​

  1. Python 基础 + 异步编程
  2. LLM 基础(Prompt、Token、Embedding)
  3. LangChain 基础(Chain、Tool、Agent)
  4. 简单 RAG 应用

📌 进阶(3-6 月) ​

  1. LangGraph / AutoGen / CrewAI
  2. RAG 优化(混合检索 / 重排)
  3. 工具调用(Function Calling / MCP)
  4. 量化基础(因子、回测、风控)

📌 实战(6-12 月) ​

  1. 完整 Agent 系统(多源数据 + 多策略)
  2. 投资领域 RAG(研报库、新闻库)
  3. 自动交易(券商 API)
  4. 风控 + 监控 + 日志

📌 推荐资源 ​

资源类型
LangChain 官方文档入门
DeepLearning.AI Short Courses入门(免费)
OpenAI Cookbook实战
LangGraph 教程进阶
AutoGen GitHub多智能体
Anthropic MCP 文档MCP
AI Stock Picking 实战量化
Quantitative Finance with Python量化基础

📖 相关阅读 ​

💡 数据来源:LangChain / LangGraph / AutoGen 官方文档、Anthropic MCP 规范、OpenAI Cookbook、DeepLearning.AI 课程。数据截至 2026-08。

来源 ​

💡 数据截至 2026-08;具体规则以交易所/监管机构最新公告为准。

本知识库内容仅供学习参考,不构成任何投资建议。
本站总访问量 ... 次 · 访客数 ... 人