Week 1 大语言模型与金融AI Agent

LLMs & Financial AI Agents

本周内容概览

理论部分 (2.5h)

  • 金融工程发展史:从MM定理到AI Agent
  • Transformer架构与GPT系列
  • 注意力机制详解
  • 提示工程:CoT, Few-shot, ReAct
  • RAG在金融中的应用
  • Multi-Agent协作框架
  • LLM工具调用机制
  • Obsidian + Claude Code个人知识库

实践部分 (1.5h)

  • 本地LLM环境搭建
  • LangChain基础操作
  • 金融信息检索Agent实现

1.1 金融工程发展史

从MM定理到AI Agent

  • 1950s-60s:MM定理、Markowitz组合、CAPM
  • 1970s:BS期权定价、Black-Scholes模型
  • 1980s:金融衍生品爆炸、数值方法(树/有限差分)
  • 1990s:风险管理( VaR )、信用风险模型
  • 2000s:电子化交易、算法交易兴起
  • 2010s:机器学习、大数据、深度学习
  • 2020s:大语言模型、AI Agent、通用人工智能

金融工程发展历程(学术创新)


1950s-1960s | 现代金融理论奠基

1970s | 定价革命

1980s | 数值方法深化

  • Markowitz (1952): 投资组合选择理论 → 均值-方差框架
  • Modigliani & Miller (1958): MM定理 → 公司资本结构无关论
  • Sharpe (1964), Lintner (1965), Mossin (1966): CAPM
  • Fama (1970): 有效市场假说(EMH)
  • Black & Scholes (1973), Merton (1973): 期权定价公式
  • Ross (1976): 套利定价理论(APT)
  • Cox, Ross & Rubinstein (1979): 二叉树期权定价
  • 蒙特卡洛模拟在金融中的应用
  • 有限差分法求解偏微分方程
  • 利率模型: Vasicek, CIR, Hull-White

金融工程发展历程(实践创新)


1990s | 风险管理时代

2000s | 量化交易时代

2010s-2020s | AI时代

  • J.P. Morgan (1994): RiskMetrics → VaR成为行业标准
  • CreditMetrics, KMV模型
  • 长期资本管理公司(LTCM) 1998年崩溃
  • 信用衍生品(CDS)市场爆发
  • 电子通信网络(ECN)兴起
  • 高频交易(HFT)占比超过50%
  • 统计套利、因子投资流行
  • 2008年金融危机 → 监管变革(Dodd-Frank)
  • Machine Learning + Big Data 全面渗透
  • 2017: Transformer架构诞生
  • 2022+: ChatGPT引爆LLM革命
  • 2024-2025: AI Agent 自主交易系统

金融工程的核心驱动力


理论驱动

  • 金融学理论深化
  • 数学工具进步
  • 经济学范式转变

技术驱动

  • 算力指数增长
  • 数据爆炸
  • AI/ML突破

市场驱动

  • 全球化与互联
  • 监管变化
  • 竞争加剧

金融工程 = 金融(问题) + 工程(方法)

创新性金融技术和金融工具的创造性应用,它用工程思维解决具体的金融问题

  • 金融工程是技术驱动
  • 金融工程是天生的交叉学科
  • 金融工程始终关注新技术
核心问题 原理与方法
资产定价
组合管理/优化
风险管理
合成与复制
无套利动态过程
风险中性

金融工程的作用

  • 微观:通过创造性的方案更好地满足客户的金融需求
  • 宏观:提高金融资源配置效率
Scientists Engineers
understand things Build thing
observe the world seek to change the world
very theoretical more practical
embrace ambiguity often frustrated by it
work free work hard

Source: Lo, Andrew W.. “Robert C. Merton: The First Financial Engineer.” Review of Financial Economics 12 (2020): 1-18.

本课程定位与路线图


Week 1: LLM与AI Agent → 技术基础
Week 2: 机器学习 → 技术基础
Week 3: 深度学习+强化学习 → 技术基础
Week 4: 大数据分析 → 技术基础
Week 5: 量化交易 → 专题应用
Week 6: 风险管理 → 专题应用
Week 7: 产品设计 → 专题应用
Week 8: Hackathon + 前沿 → 综合实战

本课程关注新技术如何重塑金融工程的三个核心领域:

  • 技术基础:LLM、ML、深度学习、大数据
  • 专题应用:交易、风险管理、产品设计
  • 前沿融合:AI Agent与金融工程的深度融合
重点:不是孤立地讲技术,而是将技术嵌入金融工程问题求解。

LLMs对劳动力市场的影响:OpenAI

  • 大约 80% 的美国劳动人口其工作中至少有 10% 的任务可能被 LLM 影响;约 19% 的劳动者可能有至少 50% 的任务面临影响。
  • 收益/分布性:较高收入、专业化岗位在暴露度上并不例外(在部分度量上甚至更高);影响跨越工资档次。
  • 结论与含义:LLM 具有广泛影响潜力,更多表现在任务重塑与工具化(tasks augmented or automated)上,而非单一的“岗位立即消失”;需关注技能改造、组织适应与采用速度对实际影响的决定性作用。

LLMs对劳动力市场的影响:Anthropic

  • 实际的任务覆盖/使用远低于理论可行性的上限(AI 尚未达到其理论全部能力的现实覆盖)。
  • 被评为高暴露的职业在官方预测(BLS)中预计增长较慢。
  • 高暴露职业中的工人群体特征:更偏向年长、女性、受教育程度更高且薪酬更高。
  • 至今(截至数据末期)尚未观察到系统性的失业率上升,但有迹象显示对年轻工人的招聘放缓。

讨论

  • AI是机遇还是挑战?
  • AI技术快速发展背景下金融人的核心竞争力是什么?

1.2 大语言模型基础

Transformer架构与GPT系列

  • Transformer: 2017年Google提出
  • GPT: Generative Pre-trained Transformer
  • 核心机制: Attention is All You Need
  • 从BERT到GPT-4的技术演进
  • 关键概念: Tokenization, Embedding, Position Encoding
  • 训练范式: 预训练 → 微调 → RLHF

基础架构与核心原理

1. 基础架构

  • Transformer架构
    • 多头自注意力机制
    • 编码器-解码器结构
    • 位置编码
    • 残差连接与层归一化

2. 核心技术原理

  • 预训练过程
    输入:大规模文本语料 → 词元化处理 → 注意力计算 
          → 上下文表示 → 输出:语言模型
    
  • 推理过程
    用户输入 → Token化 → 上下文编码 
    → 概率预测 → 文本生成
    
---

Transformer架构概览

graph TD
    Input["输入序列"] --> Embed["Token Embedding + Position Encoding"]
    Embed --> Encoder["Transformer Encoder × N"]
    Encoder --> Decoder["Transformer Decoder × N"]
    Decoder --> Output["输出序列"]
    
    subgraph Encoder
        Attn["Multi-Head Self-Attention"] --> FFN["Feed Forward Network"]
        FFN --> AddNorm1["Add & Norm"]
        AddNorm1 --> Attn
    end
    
    subgraph Decoder
        MaskAttn["Masked Self-Attention"] --> CrossAttn["Cross-Attention"]
        CrossAttn --> FFN2["Feed Forward Network"]
        FFN2 --> AddNorm2["Add & Norm"]
        AddNorm2 --> MaskAttn
    end

核心创新:摒弃RNN的循环结构,完全基于Attention机制捕获序列关系,实现并行计算。

注意力机制(Attention)详解

Scaled Dot-Product Attention:

其中:

  • (Query): 当前token的查询向量
  • (Key): 所有token的键向量
  • (Value): 所有token的值向量
  • : 键向量的维度,缩放因子防止softmax梯度消失

直观理解:Q问"谁和我相关?",K回答"我是谁",通过计算相似度,再用softmax归一化为权重,最后用V加权聚合信息。

Multi-Head Attention

多头机制:并行计算多个注意力头,捕获不同子空间的信息

其中:

常见配置:

  • BERT-base: 12层, 12头, 768维
  • GPT-3: 96层, 96头, 12288维
  • LLaMA-65B: 80层, 64头, 8192维

注意力头的分工

  • 不同头关注不同模式
  • 语法关系、语义关联、长距离依赖
  • 某些头专门关注特定位置
金融应用:不同头可同时关注不同时间尺度的市场信号

Transformer的关键组件

Position Encoding (位置编码)

由于Transformer没有递归结构,需要显式编码位置信息:

Feed-Forward Network (前馈网络)

  • 每个位置独立使用相同的FFN
  • 在GPT系列中从ReLU演变为GELU/SwiGLU

Layer Normalization (层归一化)

  • 对每个token的hidden states进行归一化
  • 稳定训练过程
  • Pre-Norm vs Post-Norm

从GPT-1到GPT-4:能力跃迁

模型 参数 训练数据 关键创新 发布时间
GPT-1 117M BookCorpus 生成式预训练 2018.06
GPT-2 1.5B WebText Zero-shot能力涌现 2019.02
GPT-3 175B Common Crawl In-context learning 2020.05
GPT-3.5 175B Code+Text RLHF, Instruction Tuning 2022.03
GPT-4 ~1.8T* 多模态数据 多模态, 更强推理 2023.03
GPT-4o ~1.8T* 多模态数据 全模态实时交互 2024.05

*注:OpenAI未公开确切参数,为外界估计值

LLM的关键能力涌现


In-Context Learning

  • 无需微调,仅通过Prompt示例
  • Few-shot, One-shot, Zero-shot
  • 上下文窗口内学习模式

Chain-of-Thought

  • 分步推理能力
  • 中间步骤可解释
  • 复杂问题分解

Instruction Following

  • 理解自然语言指令
  • 多轮对话能力
  • 任务适应性

金融工程中的涌现能力应用

  • 阅读年报/财报并提取关键信息
  • 理解金融监管文本并提取合规要求
  • 辅助撰写金融产品说明书
  • 代码生成: 自动生成回测框架代码

大模型的局限性

幻觉(Hallucination)

  • 模型可能生成看似合理但错误的内容
  • 在金融领域后果严重(错误定价、虚假信息)
  • 缓解措施:RAG、外部验证、人机协同

知识截止日期

  • 训练数据截至特定时间点
  • 无法自动获取最新市场信息
  • 需要结合实时数据源

数学计算不精确

  • 复杂数值计算可能出错
  • 不适合替代精确数值方法
  • 应结合计算工具(SymPy, NumPy)

上下文长度限制

  • 单次处理信息量有限
  • 长文档需要分块处理
  • RAG和滑动窗口策略

可解释性不足

  • 推理过程不够透明
  • 监管合规要求可解释性
  • 需要SHAP/LIME等辅助工具

成本与延迟

  • API调用有经济成本
  • 推理延迟影响实时交易
  • 模型大小与速度的权衡

主流LLM模型对比:国际模型

模型 开发方 参数量 金融工程适用场景
GPT-5.4 OpenAI 未公开(官方未披露参数量;强调最高可达 1M 上下文) 复杂数学推理 + 量化代码生成、长链路策略/回测方案整理、Agent化的“分析-验证-交付”工作流
Claude Opus 4.6 Anthropic 未公开(Anthropic 不披露参数量) 长文档财报/研报的结构化抽取、合规/风控口径推导、严谨推理与“可审计”输出风格
Claude Sonnet 4 Anthropic 未公开(官方未披露参数量;定位为更均衡的能力档) 高频代码/规则生成、偏工程化的金融工具调用编排、需要更低延迟的推理与文书辅助
Grok-4 xAI MoE 量级约 1.7T 参数(公开资料口径) 需要结合实时信息/检索的市场解读、事件驱动的结构化分析、面向交易/风控的快速迭代原型
Gemini 3.1 Pro Google/DeepMind 未公开(公开资料未披露参数量) 金融图表/多模态理解、与 Google 生态(如工作流、表格)相关的分析与交付;多源证据整合

主流LLM模型对比:国内模型

模型 开发方 参数量 金融工程适用场景
GLM-5.1 Z.AI 约 754B 参数(公开资料口径) 长上下文的策略推导、量化研究叙事与代码落地、面向“较长期限/较复杂约束”的规划型任务
MiniMax-2.7 MiniMax 约 230B 参数(公开资料口径) 工程交付/代码生成、批量报表处理逻辑、偏“工具链编排”的金融软件开发辅助
Kimi-2.6 Moonshot AI MoE:约 1T 总参数、激活约 32B(公开资料口径) 中文长文档理解、研报/公告的结构化抽取、用于回测数据口径梳理与一致性检查
MiMo(MiMo-V2-Pro) 小米 MoE:总参数约 1T+、激活约 42B(公开资料口径) 面向 Agent/工具调用的金融工作流编排、长上下文多步任务(尽调/研究/交付)与代码化输出
Qwen 3 max 阿里巴巴 超过 1T 参数(公开资料口径) 复杂中文指令下的代码与表格/脚本生成、量化研究的多轮推导、对齐“可复现实验”的脚本输出
DeepSeek v4 DeepSeek MoE:总参数约 1.6T,推理激活约 49B(公开资料口径) 金融数学推理(期权/定价/推导)、需要高质量推理的策略验证、开源生态中可复用的研究范式

模型选用建议

  • 代码 / 推理(定价、推导、策略验证)
    • DeepSeek v4:强推理、可复用研究范式(期权定价 / 参数推导 / 策略验证)
    • GPT-5.4:把推导转成可执行代码/流程(多步实现与落地)
    • Claude Opus 4.6:长链路严谨推理 + “计划-生成-校验”(更适合持续任务)
  • 长文档 & 合规口径(研报、公告、风控可审计化)
    • Claude Opus 4.6:长文本阅读 + 可追溯结构化输出(口径写清、依据拆出)
    • Kimi-2.6:中文长文档结构化抽取、口径一致性检查、公告/研报关键信息整理
    • GLM-5.1:较长上下文的策略叙事与规划型任务(把“假设-口径-步骤”串起来)
  • 多模态 / 图表理解(金融图/表结构化)
    • Gemini 3.1 Pro:读图/读表 + 结构化提取 + 生成解释/结论
    • Qwen 3 max:把理解结果进一步转成脚本/表格/可复现实验代码与流程
    • 补充:解析交给 Gemini,落地代码化交给 Qwen/DeepSeek(常见工作流)
  • 实时信息 / 事件驱动原型
    • Grok-4:事件驱动快速解读、市场叙事原型、快速形成可用框架/草案
  • 工程交付 / 工具链编排(脚本、批处理、集成)
    • MiniMax-2.7:工程交付与工具链编排(把逻辑批处理成可跑模块)
    • Claude Sonnet 4:高效代码生成 + 多步工具调用编排(工程化、性价比)
    • Qwen 3 max:中文指令下输出更完整的脚本/工作流/可复现实验产物
    • MiMo:Agent式工作流/快速迭代补位,用于自动化执行链路、减少人工中断

LLM在金融工程中的应用框架

graph LR Data["金融数据
新闻/财报/行情"] --> LLM["大语言模型
(GPT/Claude/LLaMA)"] LLM --> Analysis["分析与推理"] LLM --> CodeGen["代码生成"] LLM --> Report["报告生成"] Analysis --> Decision["决策支持"] CodeGen --> Backtest["回测实现"] Report --> Compliance["合规审查"] Knowledge["知识库
(RAG)"] --> LLM Tools["外部工具
(计算/API)"] --> LLM

关键趋势:LLM从"对话助手"演变为"AI Agent"——自主规划、工具调用、多步推理。

1.3 提示工程

Prompt Engineering for Finance

  • 提示工程的核心原则
  • Few-shot提示技巧
  • Chain-of-Thought (CoT)
  • ReAct: 推理+行动
  • 金融场景提示模板
  • 结构化输出控制

提示工程核心原则


1. 明确具体 (Specific)

2. 提供上下文 (Contextual)

3. 指定输出格式 (Structured)

❌ "分析这个股票"

❌ "写一个移动平均线策略"

❌ "有哪些风险?"

✅ "分析腾讯控股(0700.HK)2024年Q4财报,重点关注:营收增长率、毛利率变化、回购计划,用中文回答"

✅ "你是一个量化交易研究员。请用Python实现一个双均线交叉策略:快线5日,慢线20日,在回测框架Backtrader中实现"

✅ "请用以下JSON格式输出分析结果:{'风险类型': str, '风险等级': '高/中/低', '缓释措施': list[str]}"

Few-shot提示与In-Context Learning

Few-shot示例:情感分析应用于金融新闻

对以下金融新闻进行情感分类(positive/negative/neutral):

新闻1:"公司宣布盈利超预期,股价上涨5%"
情感:positive

新闻2:"监管机构对行业展开反垄断调查"
情感:negative

新闻3:"公司发布董事会改选公告"
情感:neutral

新闻4:"央行维持利率不变,符合市场预期"
情感:

原则:提供3-5个高质量示例,覆盖不同类别,保持一致格式。

Chain-of-Thought (CoT) 推理

零样本CoT:在提示后加 "Let's think step by step" 或 "请逐步分析"

金融分析示例

请分析:如果美联储在通胀率3.5%的情况下降息25bp,
对10年期国债收益率可能产生什么影响?请逐步分析。

步骤1:当前通胀率3.5%高于美联储2%目标
步骤2:在此背景下降息是鸽派信号,可能被市场解读为...
步骤3:历史上类似情况下,收益率曲线通常...
步骤4:综合判断,10年期收益率可能...

CoT-SC (Self-Consistency)

  • 多次运行CoT,取多数结果
  • 提高推理稳定性
  • 适合金融量化判断

ReAct模式:推理+行动

graph LR Q["用户问题"] --> Thought["思考(Thought):
我需要查找..."] Thought --> Action["行动(Action):
搜索/计算/查询"] Action --> Obs["观察(Observation):
返回结果"] Obs --> Thought2["思考(Thought):
根据结果..."] Thought2 --> Action2["行动(Action):
继续..."] Action2 --> Obs2["观察"] Obs2 --> Final["最终答案"]

ReAct在金融中的应用

  1. 思考:需要查询某公司最新财报数据
  2. 行动:调用API获取财务数据
  3. 观察:获得营收、净利润等指标
  4. 思考:基于数据计算估值倍数
  5. 行动:调用计算工具
  6. 最终:综合分析报告

渐进式提示优化案例

第1版 — 模糊提示

Prompt: "分析这只股票"
LLM输出: "这是一只中等市值的科技股,有一定的增长潜力..."

问题: 太泛,没有具体的分析框架和量化指标

第2版 — 结构化提示

Prompt: "分析茅台(600519)的投资价值。请从以下维度分析:
1. 财务指标(PE/PB/ROE/毛利率)
2. 行业地位
3. 近期催化剂
4. 风险因素"
LLM输出: 有结构的分析,但仍然主观,缺少量化基准

第3版 — 量化约束提示

Prompt: "分析茅台(600519)。要求:
- 对比近5年PE中位数和当前PE,计算偏离度
- 用Z-score评估当前估值水位
- 列出未来3个月已知催化剂及历史同类事件的市场反应
- 用FinBERT评估最近1个月新闻的情感分数
格式: Markdown表格 + 每项附量化数据"
LLM输出: 高度结构化、可量化验证的分析

金融场景Prompt模板

模板1:财报分析

你是一位资深金融分析师。请分析以下财务数据:
公司:{company_name}
财报期间:{period}
关键数据:{financial_data}

请从以下维度分析:
1. 营收增长趋势与驱动因素
2. 利润率变化及原因
3. 现金流质量
4. 风险提示
5. 投资建议(基于数据,非预测)

格式:Markdown,每个维度2-3个要点。

模板2:策略回测代码生成

你是一个量化交易研究员。请用Python Backtrader框架实现一个策略:
策略类型:{strategy_type}
参数:{parameters}
数据格式:{data_format}
输出要求:{output_requirements}

请包含完整的策略类定义、参数设置和运行代码。
并添加注释说明关键逻辑。

模板3 — 研报分析

分析以下研报的核心观点:
[研报内容]

要求:
1. 提取3个核心论断,每个100字以内
2. 给出每个论断的可信度评分(1-10)及理由
3. 识别潜在的乐观/悲观偏见
4. 列出研报中提到的具体数字(目标价、EPS预测等)

模板4 — 风险评估

评估以下投资组合的风险:
投资组合: [持仓列表+权重]

要求:
1. 行业集中度分析
2. 风格暴露(大盘/小盘/价值/成长)
3. 压力测试:假设沪深300下跌20%,估算组合损失
4. 给出3条降低风险的具体建议

Few-shot注意事项

  • 金融任务中,样本选择比样本数量更重要
  • 优先选"覆盖边缘情况"的样本(如:极端市场、退市、违约)
  • 定期更新样本(市场结构变化→旧样本误导)

结构化输出控制

JSON Mode 示例

从以下新闻中提取金融实体和事件:

新闻:"2025年3月15日,宁德时代宣布2024年全年营收
同比增长15.4%,净利润突破500亿元。同时公司宣布
10送8的分红方案。"

请输出JSON格式:
{
  "company": "宁德时代",
  "date": "2025-03-15",
  "financial_metrics": [
    {"metric": "营收增长率", "value": 15.4, "unit": "%"},
    {"metric": "净利润", "value": 500, "unit": "亿元"}
  ],
  "events": [
    {"event": "分红方案", "detail": "10送8"}
  ],
  "sentiment": "positive"
}

1.4 RAG技术

Retrieval-Augmented Generation

  • RAG基本架构
  • 文档分块策略
  • Embedding模型选择
  • 向量数据库
  • 检索增强策略
  • 金融场景RAG应用

RAG架构

graph LR Docs["金融文档
年报/研报/法规"] --> Chunk["文档分块"] Chunk --> Embed["Embedding模型"] Embed --> VectorDB["向量数据库"] Query["用户查询"] --> QueryEmbed["查询Embedding"] VectorDB --> Retrieval["相似度检索
Top-K"] QueryEmbed --> Retrieval Retrieval --> Context["检索结果+Query"] Context --> LLM["LLM"] LLM --> Answer["生成答案"]

RAG vs 纯LLM:RAG让LLM可以访问外部知识,缓解幻觉问题,适用于需要最新信息的金融场景。

  • 讨论:模型有更佳的上下文能力后RAG是否还有价值?

文档分块策略

策略 方法 优点 缺点 适用场景
固定大小分块 按字符/token数切分 简单统一 可能切断语义 通用文档
递归分块 按段落 → 句子层级 语义完整 块大小不统一 结构化文档
语义分块 按语义边界切分 语义完整 需要额外模型 高质量需求
滑动窗口 重叠分块 信息不丢失 数据冗余 关键信息密集

金融文档推荐

  • 年报:按章节分块(营收、风险、治理等)
  • 研报:按主题分块(摘要、分析、结论)
  • 法规:按条款分块

Embedding模型与向量数据库


常用Embedding模型

模型 维度 适用场景
text-embedding-3-small 1536 通用
text-embedding-3-large 3072 高质量
BGE-large-zh 1024 中文
m3e-large 1024 中文
FinBERT-Embedding 768 金融领域

常用向量数据库

数据库 特点 部署方式
ChromaDB 轻量,Python原生 本地/内存
FAISS 高速,Meta开源 本地
Milvus 分布式,大规模 服务端
Pinecone 托管服务 云端
Qdrant Rust实现,高性能 本地/云

RAG检索增强策略

基础检索:直接检索与Query最相似的Top-K文档块

HyDE (假设性文档嵌入)

  1. 先用LLM基于Query生成一个假设性回答
  2. 用这个假设回答去向量库检索
  3. 检索结果与原Query组合送入LLM

RAG-Fusion

  1. 对Query生成多个变体
  2. 分别检索每个变体
  3. 融合排序结果

金融RAG实践

  • 检索年报中的"风险因素"章节进行风险评估
  • 检索历史监管案例进行合规判断
  • 检索类似市场事件进行情景分析

金融RAG应用案例

案例:实时财报问答系统

场景:分析师需要快速查询多家公司的财务指标

数据源:过去5年A股上市公司年报(PDF格式)
分块策略:按章节+表格分块,保留章节标题元数据
检索策略:先检索章节标题,再检索内容
增强策略:将检索到的数据与当前市场数据结合

用户Query:
"宁德时代2024年的研发投入占营收比例是多少?"

RAG流程:
1. 检索"宁德时代 2024 研发投入"相关内容
2. 找到财报"研发投入"章节的具体数据
3. 将数据+Query送入LLM
4. LLM计算比例并给出分析

1.5 Multi-Agent框架

多智能体协作系统

  • 单Agent vs 多Agent
  • Agent角色定义
  • Agent通信机制
  • TradingAgents架构
  • AutoGen框架
  • 金融多Agent应用

从单Agent到多Agent

graph LR User --> Agent1["Agent
全能型"] Agent1 --> Tool1["工具1"] Agent1 --> Tool2["工具2"] Agent1 --> Tool3["工具3"]
graph LR User2["用户"] --> Orchestrator["协调者
Orchestrator"] Orchestrator --> Analyst["分析师Agent
数据分析"] Orchestrator --> Strategist["策略师Agent
策略制定"] Orchestrator --> RiskManager["风控Agent
风险评估"] Orchestrator --> Executor["执行Agent
交易执行"]

多Agent优势:专业化分工、相互校验、风险隔离、可扩展

TradingAgents框架 (GitHub 51.4k★)

核心架构:基于多Agent协作的股票交易系统

TradingAgents/
├── Analyst Agent           # 分析Agent: 市场数据、财务报表、新闻
├── Strategist Agent        # 策略Agent: 生成交易信号
├── Risk Manager Agent      # 风控Agent: 评估风险敞口
├── Portfolio Manager Agent # 组合Agent: 最终决策
├── Executor Agent          # 执行Agent: 下单执行
└── Memory Module           # 记忆模块: 历史经验存储

关键特性

  • 每个Agent有独立角色和专业领域
  • Agent间通过结构化消息通信
  • 包含短期记忆(当前对话)和长期记忆(历史经验)
  • 可配置的风险偏好和约束
  • 支持人工干预和审核

TradingAgents工作流程

graph LR Data["市场数据
行情/新闻/财报"] --> Analyst["分析Agent"] Analyst --> Report["分析报告"] Report --> Strategist["策略Agent"] Strategist --> Signal["交易信号"] Signal --> RiskManager["风控Agent"] RiskManager --> RiskCheck["风险检查"] RiskCheck --> Portfolio["组合Agent"] Portfolio --> FinalDecision["最终决策"] FinalDecision --> HumanCheck{"人工审核"} HumanCheck -->|通过| Executor["执行Agent"] HumanCheck -->|拒绝| Revise["反馈修订"] Revise --> Strategist Executor --> Order["下单"]

AutoGen框架 (微软)


核心概念

  • Agent:具有LLM、工具、记忆的自主实体
  • GroupChat:多Agent群聊模式
  • Manager:对话调度和管理
# AutoGen 多Agent配置示例
agents = {
    "analyst": AnalystAgent(
        name="金融分析师",
        system_message="你擅长分析财务数据和市场趋势",
        tools=[financial_data_api, news_api]
    ),
    "strategist": StrategistAgent(
        name="策略师",
        system_message="你擅长设计量化交易策略",
        tools=[backtest_engine, risk_calculator]
    ),
    "risk_manager": RiskManagerAgent(
        name="风控经理",
        system_message="你擅长识别和控制金融风险",
        tools=[var_calculator, stress_tester]
    )
}

# GroupChat实现多Agent协作
group_chat = GroupChat(
    agents=list(agents.values()),
    messages=[],
    max_round=10
)
manager = GroupChatManager(groupchat=group_chat)

LLM工具调用机制

Function Calling:LLM生成结构化的函数调用请求

# 定义金融工具函数
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_stock_price",
            "description": "获取股票实时价格",
            "parameters": {
                "type": "object",
                "properties": {
                    "ticker": {"type": "string", "description": "股票代码"},
                    "date": {"type": "string", "description": "日期"}
                },
                "required": ["ticker"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "calculate_var",
            "description": "计算VaR风险价值",
            "parameters": {
                "type": "object",
                "properties": {
                    "positions": {"type": "array", "items": {"type": "object"}},
                    "confidence": {"type": "number"}
                },
                "required": ["positions"]
            }
        }
    }
]
# Agent自动决定何时调用哪个工具
response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "计算当前组合的95% VaR"}],
    tools=tools
)

1.6 Obsidian + Claude Code

个人知识库搭建

  • 为什么需要个人知识库
  • Obsidian核心特性
  • Claude Code集成
  • 金融工程知识库结构
  • 知识管理最佳实践
  • 工作流演示

为什么金融工程师需要个人知识库?

知识碎片化挑战

  • 每天阅读大量研报、论文、新闻
  • 信息分散在PDF、网页、笔记中
  • 知识之间缺乏关联
  • 关键信息容易遗忘

AI时代的知识管理

  • LLM能帮助梳理和总结知识
  • 但LLM的知识截止日期有限
  • 个人知识库 = 私有知识 + LLM能力
  • Obsidian + Claude Code = 最强组合

核心理念:知识不是孤立的点,而是相互连接的网。个人知识库让你构建自己的"第二大脑"。

Obsidian核心特性

本地优先

  • 所有笔记存为Markdown文件
  • 纯文本格式,不依赖特定平台
  • 本地存储,数据安全
  • 支持Git版本管理

双向链接

  • [[Wiki链接]] 建立笔记关联
  • 图谱视图(Graph View)可视化
  • 发现知识之间的隐含联系
  • 构建知识网络

插件生态

  • 社区插件丰富
  • Dataview插件(数据库查询)
  • Excalidraw(白板绘图)
  • Templater(模板系统)
  • Kanban(看板管理)

Claude Code与Obsidian的集成

Claude Code 可以直接在终端中操作Markdown文件,实现AI辅助知识管理:

# 在Obsidian仓库中直接使用Claude Code
cd path/to/your/obsidian/vault

# Claude Code可以:
# 1. 阅读和理解现有笔记
# 2. 总结和提炼关键信息
# 3. 创建新的笔记并建立链接
# 4. 跨笔记分析和综合
# 5. 重构和重组知识结构

工作模式

  • 写入模式:Claude Code帮助你记录、总结、整理
  • 问答模式:基于你的知识库回答问题
  • 分析模式:发现知识关联和缺口
  • 回顾模式:定期复习和巩固

金融工程知识库结构

📁 fe-knowledge-vault/
├── 📁 01-理论基础/
│   ├── 随机过程.md
│   ├── 时间序列分析.md
│   ├── 金融计量经济学.md
│   └── 优化理论.md
├── 📁 02-资产定价/
│   ├── BS模型.md
│   ├── 二叉树方法.md
│   ├── 蒙特卡洛模拟.md
│   └── 随机波动率模型.md
├── 📁 03-量化交易/
│   ├── 因子模型/
│   │   ├── Fama-French三因子.md
│   │   └── 机器学习因子.md
│   ├── 统计套利.md
│   ├── 高频交易.md
│   └── Backtrader框架.md
├── 📁 04-风险管理/
│   ├── VaR与CVaR.md
│   ├── 压力测试.md
│   ├── 组合优化.md
│   └── 风险平价.md
├── 📁 05-LLM与AI/
│   ├── Transformer架构.md
│   ├── Prompt工程.md
│   ├── RAG技术.md
│   └── AI Agent框架.md
├── 📁 06-市场数据/
│   ├── A股市场特征.md
│   ├── 衍生品市场.md
│   └── 宏观指标.md
├── 📁 07-课程笔记/
│   └── 金融工程前沿/
└── 📁 08-研究项目/
    ├── 正在进行的项目.md
    └── 论文阅读笔记/

关键笔记模板:论文阅读笔记模板

---
tags: [论文, 量化交易, 2025]
authors: [作者1, 作者2]
journal: 期刊名称
year: 2025
---

# 论文标题

## 核心问题
<!-- 本文试图解决什么金融工程问题? -->

## 方法与创新
<!-- 使用了什么新方法/模型? -->

## 数据与实验
- 数据来源:
- 时间跨度:
- 主要结果:

## 关键结论

## 与[[相关笔记]]的联系

## 我的思考
<!-- 对本人的研究/实践的启示 -->

关键笔记模板:策略研究笔记模板

---
tags: [交易策略, 因子, 回测]
status: 实验中
---

# 策略名称

## 策略逻辑
<!-- 核心逻辑和假设 -->

## 实现方式
- 工具/框架:
- 代码位置:`code/strategies/`

## 回测结果
| 指标 | 数值 |
|------|------|
| 年化收益 | |
| Sharpe | |
| Max DD | |

## 风险评估

## 改进方向

Claude Code辅助知识管理实操

场景1:论文阅读与总结

你:请阅读这个PDF并提取核心内容
→ Claude Code读取论文,生成结构化笔记
→ 自动创建笔记文件,链接相关概念

场景2:知识综合与对比

你:对比所有笔记关于"随机波动率模型"的内容
→ Claude Code跨笔记检索
→ 生成对比分析报告
→ 更新综合笔记

场景3:代码与笔记关联

你:从笔记中找出所有提到"回测"的策略,整理代码结构
→ Claude Code分析笔记内容和代码目录
→ 生成策略分类和代码索引
→ 创建策略对比表格

场景4:定期知识回顾

你:回顾这个月所有关于强化学习的笔记
→ Claude Code筛选时间范围内的笔记
→ 生成知识图谱和要点总结
→ 识别知识盲区

知识管理最佳实践

原子化笔记

  • 一个笔记只讲一个概念
  • 用链接代替嵌套
  • 便于复用和组合
  • 降低维护成本

渐进式归纳

  • 捕捉 → 整理 → 关联 → 综合
  • 不要追求一次性完美
  • 允许笔记处于"未完成"状态
  • 定期回顾和完善

双向链接

  • 每个笔记主动链接相关概念
  • 反向链接自动发现
  • 图谱视图帮助发现盲区
  • 知识网络越用越强

Claude Code协作

  • 每周用Claude Code做一次知识审计
  • 让Claude Code帮你发现知识缺口
  • 用模板批量处理同类信息
  • 将临时笔记归档为永久笔记

课堂实践:搭建个人知识库

步骤1:安装Obsidian

步骤2:创建目录结构

  • 参照前面的结构创建文件夹
  • 从本周课程开始建立第一篇笔记

步骤3:安装关键插件

  • Dataview: 数据库查询功能
  • Excalidraw: 绘制思维导图
  • Templater: 模板自动化
  • Git: 版本控制

步骤4:编写第一篇笔记

  • 主题:本周学到的三个核心概念
  • 至少建立3个[[内部链接]]
  • 添加标签 #W1-LLM

步骤5:集成Claude Code

  • 在Vault目录中打开终端
  • 尝试让Claude Code总结你的笔记
  • 体验AI辅助知识管理

步骤6(可选):跨设备同步

  • 在另一设备安装Obsidian
  • 使用同步

1.7 LLM本地部署

Local LLM Deployment

  • 为什么需要本地部署
  • Ollama框架
  • 量化模型选择
  • LangChain集成
  • 金融应用部署

本地部署 vs API调用

维度 本地部署 API调用
数据安全 ✅ 数据不出本地 ❌ 数据需上传
延迟 ✅ 无网络延迟 ❌ 依赖网络
成本 一次性硬件 按量付费
模型能力 开源模型(LLaMA, Qwen等) 闭源顶尖(GPT-4, Claude)
维护成本 需要自行维护 服务商维护
定制化 可微调 有限定制

金融场景建议

  • 敏感数据(客户信息、交易策略)→ 本地部署
  • 通用分析(市场研报摘要、代码生成)→ API调用
  • 最佳实践:混合架构,本地+云端协同

Ollama框架

# 安装Ollama(支持Windows/macOS/Linux)
# 下载地址:https://ollama.ai

# 拉取模型
ollama pull llama3.1:8b
ollama pull qwen2.5:7b
ollama pull mistral:7b

# 运行模型
ollama run llama3.1:8b

# API接口(兼容OpenAI格式)
curl http://localhost:11434/api/chat \
  -d '{
    "model": "llama3.1:8b",
    "messages": [
      {"role": "user", "content": "解释什么是VaR"}
    ]
  }'

Ollama优势:一键部署、OpenAI兼容API、模型管理、GPU加速

部署框架功能对比

框架 部署难度 性能 金融特性 最佳场景
Ollama 极简 良好 一键部署、本地私有 个人投研、课程项目
vLLM 中等 极佳 企业级高性能推理 机构量化分析、高频处理
LangChain 中等 良好 多源数据链接、工具调用 复杂金融应用、RAG系统
FastChat 简单 良好 OpenAI接口兼容 量化交易API、研究原型
FinNLP 中等 良好 金融NLP专用、财报处理 财经文本分析、舆情监控

功能特性对比

特性 Ollama vLLM LangChain FastChat FinNLP
一键部署 ✅ ❌ ❌
量化支持 ✅ ✅ ✅ ✅
金融API集成 ❌ ✅ ✅
数据隐私保护 ✅ ✅ ✅ ✅ ✅
多模型协作 ❌ ✅ ✅
金融知识增强 ❌ ❌ ✅ ❌ ✅

选型建议

课程项目: Ollama (快速上手)
研究原型: FastChat + LangChain
机构部署: vLLM + LangChain
金融NLP : FinNLP + LangChain

LLM参数调优指南

核心参数

参数 范围 默认值 作用
Temperature 0.0-2.0 0.7 控制随机性/创造性
Top_p (核采样) 0.0-1.0 0.9 累积概率阈值
Top_k 0-100 50 限制候选词数量
Presence Penalty -2.0-2.0 0.0 抑制已出现内容
Frequency Penalty -2.0-2.0 0.0 抑制高频词
Max Tokens 1-∞ 模型相关 限制生成长度

场景化推荐配置

场景 Temperature Top_p Max_tokens 说明
金融分析/问答 0.1-0.3 0.8 1000-2000 低随机性,高准确性
代码生成 0.0-0.2 0.9 2000-4000 确定性输出
产品说明书/报告 0.3-0.5 0.9 2000-4000 适度创造性
情景分析/头脑风暴 0.6-0.8 0.95 1500-3000 高多样性
合规审查 0.0-0.1 0.8 1000-2000 严格一致性

常见问题排查

  • 答非所问 → 降低 Temperature 和 Top_p
  • 输出过于死板 → 提高 Temperature
  • 生成内容重复 → 提高 Presence Penalty
  • 输出截断 → 提高 Max Tokens

开源模型选择(金融场景)

模型 参数量 中文能力 金融专长 硬件需求
Qwen2.5 7B-72B ⭐⭐⭐⭐⭐ 通用强 7B: 8GB VRAM
LLaMA 3.1 8B-70B ⭐⭐⭐ 英文强 8B: 8GB VRAM
Mistral 7B-8x22B ⭐⭐ 推理强 7B: 8GB VRAM
DeepSeek-Coder 6.7B-33B ⭐⭐⭐ 代码强 6.7B: 8GB VRAM
FinMA 7B-30B ⭐⭐ 金融专用 7B: 8GB VRAM
BLOOM 7.1B-176B ⭐⭐⭐ 多语言 7.1B: 8GB VRAM

量化级别:Q4_K_M (4bit) 可在8GB显存运行7B模型,Q8_0 (8bit) 需要16GB

金融专用模型:FinMA (金融领域预训练)、BloombergGPT (金融数据训练)

LangChain集成

# 使用本地Ollama模型构建金融RAG系统
from langchain_community.llms import Ollama
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import ChromaDB
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA

# 初始化本地LLM
llm = Ollama(
    model="qwen2.5:7b",
    temperature=0.1,
    top_p=0.9
)

# 初始化Embedding
embeddings = OllamaEmbeddings(
    model="nomic-embed-text"
)

# 文档处理
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)

# 构建金融RAG链
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vector_store.as_retriever(
        search_kwargs={"k": 5}
    )
)

# 金融问题查询
response = qa_chain.run(
    "根据2024年年报,该公司的资产负债率变化趋势如何?"
)

LangChain核心组件

graph TD subgraph "LangChain架构" Models["Models
LLM/Chat/Embedding"] --> Chains["Chains
LCEL链式调用"] Models --> Memory["Memory
对话记忆"] Chains --> Agents["Agents
自主决策"] Tools["Tools
工具集成"] --> Agents Chains --> Retrieval["Retrieval
RAG检索"] VectorStore["向量数据库"] --> Retrieval DocumentLoaders["文档加载器"] --> VectorStore TextSplitters["文本分割器"] --> VectorStore end

LangChain Chain类型与金融应用

Chain类型对比

Chain 特点 金融应用
LLMChain 单次LLM调用 简单分析
SequentialChain 多步骤串联,前一步输出→后一步输入 分析→信号→决策
RouterChain 根据输入路由到不同Chain 不同市场状态→不同策略
MapReduceChain 并行处理→汇总 批量研报分析
ConversationChain 多轮对话+记忆 投资顾问对话

Memory在金融对话中的应用

from langchain.memory import ConversationSummaryMemory

memory = ConversationSummaryMemory(
    llm=llm,
    max_token_limit=500  # 金融对话信息密度高
)
# 保留"用户风险偏好R4、投资期限2年、关注新能源"等关键信息
# 而非保留完整对话历史 → 省token + 聚焦

完整RAG Pipeline

from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA

# 1. 加载金融文档
loader = PyPDFLoader("annual_report_2024.pdf")
docs = loader.load()

# 2. 文档切分 (金融文档用较大的chunk保持上下文)
splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000, chunk_overlap=150,
    separators=["\n##", "\n#", "\n", "。", "."]
)
chunks = splitter.split_documents(docs)

# 3. 向量化存储
vectorstore = Chroma.from_documents(
    chunks, embedding=OllamaEmbeddings(model="nomic-embed-text")
)

# 4. 检索增强回答
qa = RetrievalQA.from_chain_type(
    llm=llm, chain_type="stuff",
    retriever=vectorstore.as_retriever(search_kwargs={"k": 5})
)
qa.run("公司在2024年的研发投入占比是多少?趋势如何?")

1.8 实践环节

Hands-on Practice

  • 环境搭建
  • 基础LLM调用
  • 金融Agent实现
  • 知识库初步搭建
  • 实践报告要求

实践1:环境搭建 (20min)

# 步骤1:安装Ollama
# 访问 https://ollama.ai 下载安装

# 步骤2:拉取模型
ollama pull qwen2.5:7b
ollama pull nomic-embed-text

# 步骤3:验证安装
ollama list

# 步骤4:安装Python依赖
pip install langchain langchain-community chromadb
pip install jupyter notebook

# 步骤5:测试API
curl http://localhost:11434/api/generate \
  -d '{
    "model": "qwen2.5:7b",
    "prompt": "什么是金融工程?用一句话回答"
  }'

实践2:基础LLM调用 (20min)

# Jupyter Notebook: 01_basic_llm_call.ipynb

from openai import OpenAI

# 连接本地Ollama(兼容OpenAI接口)
client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama"  # Ollama不需要真实API key
)

# 基础对话
response = client.chat.completions.create(
    model="qwen2.5:7b",
    messages=[
        {"role": "system", "content": "你是一个金融工程助手"},
        {"role": "user", "content": "解释Black-Scholes公式的假设条件"}
    ],
    temperature=0.1
)
print(response.choices[0].message.content)

# 结构化输出
response = client.chat.completions.create(
    model="qwen2.5:7b",
    messages=[
        {"role": "user", "content": """
        分析以下股票的优缺点,输出JSON格式:
        - 代码:600519.SH
        - 名称:贵州茅台
        
        格式:{"ticker": str, "strengths": list[str], "risks": list[str]}
        """}
    ],
    temperature=0.1
)

实践3:金融信息检索Agent (40min)

# Jupyter Notebook: 02_finance_agent.ipynb

from langchain.agents import Tool, AgentExecutor, create_react_agent
from langchain_community.llms import Ollama
from langchain.prompts import PromptTemplate
from langchain_community.utilities import DuckDuckGoSearchAPIWrapper

# 1. 定义金融工具
tools = [
    Tool(
        name="金融计算器",
        func=lambda expr: f"计算结果: {eval(expr)}",
        description="执行数学计算,输入应为数学表达式"
    ),
    Tool(
        name="信息检索",
        func=DuckDuckGoSearchAPIWrapper().run,
        description="搜索金融相关信息"
    )
]

# 2. 创建ReAct Agent
prompt = PromptTemplate.from_template("""
你是一个金融工程研究助手。你有以下工具可用:
{tools}

请使用中文回答问题。

问题: {input}

{agent_scratchpad}
""")

# 3. Agent执行
llm = Ollama(model="qwen2.5:7b", temperature=0)
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True,
    handle_parsing_errors=True
)

# 4. 测试
result = agent_executor.invoke({
    "input": "计算贵州茅台(600519)如果PE从30倍变为25倍,股价变化百分比是多少?"
})
print(result["output"])

实践4:搭建Obsidian知识库入口 (10min)

任务:创建本周学习笔记

---
tags: [W1, LLM, AI-Agent]
created: 2025-09-xx
---
# Week 1 学习笔记
## 核心概念
1. **Transformer注意力机制**:QKV三矩阵计算注意力权重
   - 关联:[[自注意力机制详解]]
2. **RAG技术**:检索增强生成解决幻觉问题
   - 关联:[[RAG架构]]
3. **Multi-Agent框架**:多智能体协作交易系统
   - 关联:[[TradingAgents]]
## 关键代码片段

## 疑问与思考
- [ ] Transformer的KV-Cache到底如何工作?
- [ ] RAG的分块策略对金融文档检索精度的影响?
- [ ] 多Agent框架的通信开销问题?
## 延伸阅读
- [[Attention Is All You Need]] 论文笔记
- [[TradingAgents框架分析]]

本周总结

核心收获

  1. 理解Transformer架构的核心机制
  2. 掌握提示工程的关键技巧(CoT, Few-shot, ReAct)
  3. 理解RAG的工作原理和在金融中的价值
  4. 了解Multi-Agent框架的架构设计
  5. 掌握Ollama本地部署和LangChain使用
  6. 搭建个人金融工程知识库的基础

预习准备

  • 复习线性代数和概率论基础
  • 安装Python和Jupyter环境
  • 阅读:ML基础概念(监督/无监督/泛化)

下周预告
Week 2: 机器学习与量化建模

  • 回归分析家族
  • 分类模型
  • Tree模型与集成方法
  • 模型可解释性

AI伦理与负责任使用

金融工程领域AI伦理核心议题

数据安全与隐私

  • 避免向公共模型提交敏感金融数据
  • 本地部署模型处理机密交易策略
  • 注意模型训练数据可能泄露信息

学术诚信

  • 明确标注AI辅助内容
  • 清晰区分AI与研究者贡献
  • 维护研究成果的真实性和原创性

公平与包容性

  • 警惕模型强化金融行业既有偏见
  • 注意AI工具可能扩大信息不对称
  • 确保AI辅助不加剧资源差距

负责任使用原则

  • 人类保持关键决策的最终责任
  • 建立AI辅助结果的验证机制
  • 避免过度依赖导致技能退化

金融AI伦理红线

  1. ❌ 禁止利用AI进行市场操纵或内幕交易
  2. ❌ 禁止完全依赖AI进行未经人工审核的投资决策
  3. ❌ 禁止向第三方泄露客户数据给AI服务商
  4. ❌ 禁止使用AI生成虚假金融信息误导投资者
  5. ✅ 坚持 Human-in-the-Loop 原则进行关键决策

延伸阅读与参考资料

经典论文

  • Vaswani et al. (2017): "Attention Is All You Need"
  • Brown et al. (2020): "Language Models are Few-Shot Learners"
  • Lewis et al. (2020): "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"
  • Wei et al. (2022): "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models"

金融LLM研究

  • Wu et al. (2023): "BloombergGPT: A Large Language Model for Finance"
  • Li et al. (2024): "TradingAgents: Multi-Agent LLM Framework for Stock Trading"

工具文档

### 实践报告要求 ``` 提交内容: 1. Jupyter Notebook(.ipynb) - 包含实践2和3的完整代码和输出 - 添加Markdown注释说明关键步骤 2. Obsidian笔记(.md) - 本周核心概念笔记 - 至少3个内部链接 - 包含代码片段或公式 3. 简短的反思报告(200-300字) - 遇到了什么问题?如何解决的? - LLM在金融中的优缺点体会 - 对知识管理的理解 提交方式:Git提交到课程仓库 截止时间:下次课前24小时 ```