第 6 章 · 02 GPT 选股与情感:从文本到交易信号 本节摘要:本节梳理 quant-wiki docs/ai 下「LLM 做选股与情感分析」的实务路径。核心素材包括三块:一是 DeepSeek-R1 对特斯拉新闻的情感分析(docs/ai/DeepSeek-R1-tesla),演示从 yfinance 抓新闻 → MarkItDown 提取正文 → LLM 打分 → 投资建议的完整管线;二是 ChatGPT 量化实战(docs/ai/ChatGPT-quant),覆盖选股、策略选择、回测、风控、部署六步流程及配套 Python 代码;三是 Langchain 金融分析师(docs/ai/如何使用 DeepSeek-R1 或 ChatGPT 与 Langchain
本节摘要:本节梳理 quant-wiki docs/ai 下「LLM 做选股与情感分析」的实务路径。核心素材包括三块:一是 DeepSeek-R1 对特斯拉新闻的情感分析(docs/ai/DeepSeek-R1-tesla),演示从 yfinance 抓新闻 → MarkItDown 提取正文 → LLM 打分 → 投资建议的完整管线;二是 ChatGPT 量化实战(docs/ai/ChatGPT-quant),覆盖选股、策略选择、回测、风控、部署六步流程及配套 Python 代码;三是 Langchain 金融分析师(docs/ai/如何使用 DeepSeek-R1 或 ChatGPT 与 Langchain 构建专业金融分析师),把 LLM 接入行情、财报、新闻数据源,做成可问答的金融助手。本节既讲清「文本→情感→信号」的工程链路,也提示 LLM 在实时数据、预测能力、合规上的局限。素材来自 docs/ai。
内容来源:quant-wiki docs/ai(DeepSeek-R1-tesla、ChatGPT-quant、如何使用 DeepSeek-R1 或 ChatGPT 与 Langchain 构建专业金融分析师),知识结构化整理。
⚠️ 学习提示:LLM 生成的情感分数或选股建议本质是「基于训练数据的语言推断」,不等于「未来收益预测」。把它当特征工程的一环(文本因子),与价格、基本面因子组合,远比单独依赖 LLM 决策稳健。
阅读完本节,你应当能够:
传统量化主要用价格、财务、宏观数据,而市场上有大量「文本信息」未被充分利用:新闻、财报电话会议、社交媒体、研报、内部交易公告。LLM 恰好擅长理解这类非结构化文本,能把它转成结构化的「情感分数」或「事件标签」,作为新因子。这就是「LLM 做情感与选股」的基本动机。
💡 心法:LLM 在这条链路里是「特征提取器」,不是「决策器」。它的产出(情感分数)要和传统因子一样,经过 IC 测试、分组回测、相关性分析,确认有预测力后才能进组合。
DeepSeek-R1-tesla 演示了一个完整的最小可用管线:
| 步骤 | 工具 | 产出 |
|---|---|---|
| 1. 抓新闻 | yfinance 的 Ticker.news |
标题、摘要、链接、发布日期 |
| 2. 提正文 | MarkItDown 解析 URL | 新闻正文(清洗后) |
| 3. 情感打分 | DeepSeek-R1(经 Ollama 调用) | 每篇新闻情感分数 |
| 4. 投资建议 | LLM 综合多篇分数 | 买入/持有/卖出建议 |
def get_news(stock: str) -> list: ticker = yf.Ticker(stock) news = ticker.news relevant_news = [item for item in news if item.get('content', {}).get('contentType') == 'STORY'] # 提取 title、summary、url、pubdate
yfinance 是免费获取 Yahoo Finance 数据的常用库,Ticker.news 返回近期新闻列表。注意只保留 contentType == 'STORY' 的正式报道,过滤视频、广告等噪声。
新闻链接给的是网页,需要解析正文。MarkItDown 库能把 HTML 转成 Markdown 文本,再用正则做简单清洗。这一步是把「半结构化网页」变成「纯文本」的关键。
DeepSeek-R1 是 DeepSeek 2025 年开源的推理模型,以低成本(传闻训练成本约 600 万美元)、高性能(数学/编程/推理接近 GPT-o1)著称。把多篇新闻正文合并送给 R1,让它输出情感分数与投资建议。整个流程通过 langchain-ollama 调用本地部署的模型,既保护数据隐私又降低 API 成本。
💡 迁移提示:你可以把 DeepSeek-R1 换成任意开源 LLM(Llama、Qwen)或闭源 API(GPT、Claude),管线骨架不变。模型选择主要看成本、隐私、推理能力三者的权衡。
ChatGPT-quant 把 ChatGPT 在交易中的用法拆成六步,每步都给 Python 代码示例:
| 步骤 | ChatGPT 角色 | 关键工具 |
|---|---|---|
| 1. 股票选择 | 市场研究、情绪分析 | nltk VADER、yfinance |
| 2. 策略选择 | 给定标的生成策略 | 均值回归、动量、突破 |
| 3. 回测 | 历史数据评估 | pandas、talib |
| 4. 绩效评估 | 计算夏普、回撤 | sklearn metrics |
| 5. 风险管理 | 识别风险因素 | 多元化、止损 |
| 6. 部署 | 接入交易平台 | alpaca_trade_api |
文档给了一个用 nltk VADER 做情感分析的简洁示例:
from nltk.sentiment import SentimentIntensityAnalyzer sia = SentimentIntensityAnalyzer() for article in news_articles: scores = sia.polarity_scores(article) sentiment = scores['compound'] # compound >= 0.05 积极, <= -0.05 消极, 否则中性
VADER 是基于词典的轻量情感分析器,不需要 LLM,速度快、可解释。LLM 版本(如 DeepSeek-R1)更灵活但成本高。两者可结合:VADER 做粗筛,LLM 做精细判断。
import alpaca_trade_api as tradeapi api = tradeapi.REST(API_KEY, API_SECRET, BASE_URL, api_version='v2') api.submit_order(symbol='AAPL', qty=10, side='buy', type='market', time_in_force='gtc')
文档建议先在 paper trading(模拟账户)测试,避免真实资金风险。这与所有量化策略的部署原则一致。
文档列了四类适合 LLM 辅助的策略:
如何使用 DeepSeek-R1 或 ChatGPT 与 Langchain 构建专业金融分析师 描述了用 Langchain 把 LLM 接入多个金融数据源,做成可问答的代理:
Langchain 金融分析师是通用助手(任意金融问答),TradingAgents 是专用交易决策系统(只做买卖决策)。前者更像 Bloomberg Terminal 的 AI 版,后者更像量化交易系统的 AI 版。两者可以互补:Langchain 助手做研究,TradingAgents 做执行。
⚠️ 陷阱:LLM 会「自信地编造」(hallucination)——给出看似合理但实际错误的财务数据或事件描述。所有 LLM 给出的数字、日期、事件都要交叉验证,不能直接用于下单。
把 LLM 用对的关键,是把它纳入因子工程的常规流程,而非独立决策。一个推荐的混合骨架:
💡 心法:LLM 在这个骨架里是「数据加工厂」,而非「决策大脑」。它的产出(文本因子)要经过与传统因子同样的严格测试。这种「LLM 做特征 + 传统做决策」的分工,是目前 LLM 量化最务实的落地路径。
下一节,我们从 LLM 转向强化学习:TradeMaster、FinRobot、InvestorBench,看交易如何建模成序贯决策。