![]()
1. 核心概念:为什么需要 AI Agent?
传统的 Python 股票分析通常是这样的:
- “如果 rsi < 30 且 价格 > 200日均线,则买入。”
这种方法死板,无法理解市场语境。
AI Agent (基于大语言模型,如 GPT-4, Claude 3.5)的工作方式是这样的:
- 感知 (Perception):用户问“现在买英伟达怎么样?”
- 规划 (Planning):Agent 思考“我需要先看现在的价格,再看最近的技术指标,最后查查最近有没有重磅新闻。”
- 行动 (Action):自主调用 Python 函数(获取数据、爬取新闻)。
- 推理 (Reasoning):结合数据和新闻(比如:“虽然 RSI 超卖,但昨天财报暴雷,建议观望”),给出综合建议。
要实现这个系统,我们需要以下 Python 库:
- 大脑 (LLM): (GPT-4o) 或 openaiAnthropic (Claude) - 。负责逻辑推理
- 框架 (Agent Framework): LangChain或 Phidata - 负责连接模型与工具。
- 数据源 (Tools): yfinanceduck(股价数据), duckgo-search (新闻搜索), (技术指标计算)。ta
pip install langchain langchain-openai yfinance duckduckgo-search ta pandas![]()
3. 实战架构:构建 Agent
我们将构建一个 Agent,它拥有两个核心工具:
- get_stock_data: 获取股价并计算技术指标 (macd, RSI)。
- search_market_news: 搜索最新的市场情绪新闻。
Agent 不能直接上网或看盘,我们需要把 Python 函数封装成它能理解的“工具”。
import yfinance as yfimport pandas as pdfrom ta.trend import MACDfrom ta.momentum import RSIIndicatorfrom langchain.tools import toolfrom langchain_community.tools import DuckDuckGoSearchRun# 工具 1:获取技术面数据@tooldef get_technical_analysis(ticker: str) -> str:输入股票代码(如 AAPL, NVDA),返回最新的收盘价、RSI指标和MACD趋势。用于判断技术面走势。try:stock = yf.Ticker(ticker)df = stock.history(period="1mo")if df.empty:return f"无法获取 {ticker} 的数据。"# 计算 RSIrsi_indicator = RSIIndicator(close=df["Close"], window=14)current_rsi = rsi_indicator.rsi().iloc[-1]# 计算 MACDmacd = MACD(close=df["Close"])current_macd = macd.macd_diff().iloc[-1] # MACD 柱状图值current_price = df["Close"].iloc[-1]analysis = (f"【{ticker} 技术数据】\n"f"当前价格: ${current_price:.2f}\n"f"RSI (14): {current_rsi:.2f} (通常 >70 超买, <30 超卖)\n"f"MACD柱状值: {current_macd:.2f} (正值表示多头动能,负值表示空头动能)"return analysisexcept Exception as e:return f"获取技术数据出错: {str(e)}"# 工具 2:获取基本面/新闻@tooldef search_news(query: str) -> str:输入查询关键词,返回最新的财经新闻摘要。用于分析市场情绪和基本面事件。search = DuckDuckGoSearchRun()return search.run(query)第二步:组装 Agent我们将使用 LangChain的 ReAct 模式(Reasoning + Acting),让 AI 像人类一样思考。
from langchain_openai import ChatOpenAIfrom langchain.agents import create_tool_calling_agent, AgentExecutorfrom langchain_core.prompts import ChatPromptTemplate# 1. 设置 LLM (请确保设置了 OPENAI_API_KEY 环境变量)llm = ChatOpenAI(model="gpt-4-turbo", temperature=0)# 2. 绑定工具tools = [get_technical_analysis, search_news]# 3. 编写 Prompt (人设)prompt = ChatPromptTemplate.from_messages([("system","你是一位资深的华尔街股票分析师。你的目标是利用工具分析股票走势。""请遵循以下步骤:""1. 使用工具获取目标股票的技术指标。""2. 使用工具搜索该公司的最新重大新闻(财报、产品发布、监管等)。""3. 综合技术面(RSI, MACD)和基本面(新闻情绪),给出具体的买入/卖出/持有建议,并解释风险。"),("human", "{input}"),("placeholder", "{agent_scratchpad}"),# 4. 创建 Agent 实例agent = create_tool_calling_agent(llm, tools, prompt)agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)4. 运行示例与分析现在,我们要测试这个 Agent。假设我们要分析特斯拉 (TSLA)
代码调用
response = agent_executor.invoke({"input": "请分析一下特斯拉 (TSLA) 目前的走势,我应该现在买入吗?"print("====== 最终分析报告 ======")print(response["output"])Agent 的内部思考过程 (Verbose Log 模拟)当你运行上述代码时,你会看到 Agent 在后台的思考链(Chain of Thought):
- 思考: 用户问 TSLA。我需要先看技术指标。
- 行动: 调用 。get_technical_analysis("TSLA")
- 观察: 收到数据 -> 价格 $175, RSI 35 (接近超卖), MACD -2.5 (空头动能减弱)。
- 思考: 技术面看起来跌得差不多了。但我得看看为什么跌,是不是有坏消息。
- 行动: 调用 。search_news("Tesla stock news latest")
- 观察: 收到新闻 -> “特斯拉在中国销量下滑”、“Cybertruck 产能爬坡缓慢”、“马斯克宣布新的自动驾驶发布会”。
- 思考: 综合来看,技术面超卖有反弹需求,但基本面有销量压力,不过自动驾驶发布会是潜在利好。
====== 最终分析报告 ======基于当前数据,针对特斯拉 (TSLA) 的分析如下:1. **技术面分析**:- **RSI (35)**:接近30的超卖区,表明短期内抛压过重,随时可能出现技术性反弹。- **MACD**:柱状图为负值但动能减弱,下跌趋势正在放缓。- **价格**:当前 $175 处于关键支撑位附近。2. **基本面与消息面**:- **利空**:近期新闻显示中国市场竞争加剧导致销量不及预期,这对股价构成了短期压力。- **潜在利好**:马斯克暗示即将发布的 FSD v12 版本可能带来突破,市场对此有期待。3. **投资建议**:**【短期持有/轻仓博反弹】**虽然技术指标显示“便宜”,但基本面风险尚未完全释放。建议激进投资者可在 $170-$175 区间轻仓尝试博取反弹,止损设在 $165。稳健投资者建议等待 MACD 金叉或销量数据好转后再介入。*风险提示:科技股波动剧烈,请严格控制仓位。*5. 进阶:如何让 Agent 更强大?上面的例子是一个基础原型,要用于真实场景,可以从以下维度升级:
- 多模态分析 (Vision)
- 不仅看数字,还可以让 Agent 截图 K 线图,传给 GPT-4o-Vision 进行(如识别“头肩顶”、“双底”形态)。图表形态识别
- 宏观经济感知
- 增加一个工具获取“美联储利率决议”或“CPI 数据”,让 Agent 结合宏观大环境判断(牛市买跌,熊市不做)。
- 记忆功能 (Memory)
- 使用 LangChain 的 Memory 组件,让 Agent 记住它昨天的分析。“昨天我建议观望,今天 RSI 突破了,可以改为买入。”
- 回测能力
- 在给出建议前,让 Agent 调用 快速跑一遍该策略在过去半年的表现。backtrader
Python + AI Agent改变了股票分析的范式:
- 传统量化处理的是数字
- AI Agent处理的是信息(数字+文字+逻辑)。
⚠️ 风险提示:
AI Agent 会产生“幻觉”(Hallucination)。它可能编造新闻或错误解读数据。绝对不要将 AI Agent 直接连接到自动交易账户进行无人值守的实盘交易,它目前最适合的角色是全天候的智能投顾助理,最终决策权应在咱们自己手中。
AI agent学习资料获取方式:转发关注+私信【资料】
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.