网易首页 > 网易号 > 正文 申请入驻

Python + AI Agent:构建你的智能股票分析师 (实战指南)

0
分享至



1. 核心概念:为什么需要 AI Agent?

传统的 Python 股票分析通常是这样的:

  • “如果 rsi < 30 且 价格 > 200日均线,则买入。”

这种方法死板,无法理解市场语境。

AI Agent (基于大语言模型,如 GPT-4, Claude 3.5)的工作方式是这样的:

  1. 感知 (Perception):用户问“现在买英伟达怎么样?”
  2. 规划 (Planning):Agent 思考“我需要先看现在的价格,再看最近的技术指标,最后查查最近有没有重磅新闻。”
  3. 行动 (Action):自主调用 Python 函数(获取数据、爬取新闻)。
  4. 推理 (Reasoning):结合数据和新闻(比如:“虽然 RSI 超卖,但昨天财报暴雷,建议观望”),给出综合建议。
2. 技术栈准备

要实现这个系统,我们需要以下 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,它拥有两个核心工具:

  1. get_stock_data: 获取股价并计算技术指标 (macd, RSI)。
  2. search_market_news: 搜索最新的市场情绪新闻。
第一步:定义工具 (Tools)

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):

  1. 思考: 用户问 TSLA。我需要先看技术指标。
  2. 行动: 调用 。get_technical_analysis("TSLA")
  3. 观察: 收到数据 -> 价格 $175, RSI 35 (接近超卖), MACD -2.5 (空头动能减弱)。
  4. 思考: 技术面看起来跌得差不多了。但我得看看为什么跌,是不是有坏消息。
  5. 行动: 调用 。search_news("Tesla stock news latest")
  6. 观察: 收到新闻 -> “特斯拉在中国销量下滑”、“Cybertruck 产能爬坡缓慢”、“马斯克宣布新的自动驾驶发布会”。
  7. 思考: 综合来看,技术面超卖有反弹需求,但基本面有销量压力,不过自动驾驶发布会是潜在利好。
最终输出 (模拟结果)

====== 最终分析报告 ======基于当前数据,针对特斯拉 (TSLA) 的分析如下:1. **技术面分析**:- **RSI (35)**:接近30的超卖区,表明短期内抛压过重,随时可能出现技术性反弹。- **MACD**:柱状图为负值但动能减弱,下跌趋势正在放缓。- **价格**:当前 $175 处于关键支撑位附近。2. **基本面与消息面**:- **利空**:近期新闻显示中国市场竞争加剧导致销量不及预期,这对股价构成了短期压力。- **潜在利好**:马斯克暗示即将发布的 FSD v12 版本可能带来突破,市场对此有期待。3. **投资建议**:**【短期持有/轻仓博反弹】**虽然技术指标显示“便宜”,但基本面风险尚未完全释放。建议激进投资者可在 $170-$175 区间轻仓尝试博取反弹,止损设在 $165。稳健投资者建议等待 MACD 金叉或销量数据好转后再介入。*风险提示:科技股波动剧烈,请严格控制仓位。*
5. 进阶:如何让 Agent 更强大?

上面的例子是一个基础原型,要用于真实场景,可以从以下维度升级:

  1. 多模态分析 (Vision)
  2. 不仅看数字,还可以让 Agent 截图 K 线图,传给 GPT-4o-Vision 进行(如识别“头肩顶”、“双底”形态)。图表形态识别
  3. 宏观经济感知
  4. 增加一个工具获取“美联储利率决议”或“CPI 数据”,让 Agent 结合宏观大环境判断(牛市买跌,熊市不做)。
  5. 记忆功能 (Memory)
  6. 使用 LangChain 的 Memory 组件,让 Agent 记住它昨天的分析。“昨天我建议观望,今天 RSI 突破了,可以改为买入。”
  7. 回测能力
  8. 在给出建议前,让 Agent 调用 快速跑一遍该策略在过去半年的表现。backtrader
6. 总结与风险

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.

相关推荐
热点推荐
华西村那头1吨金牛,15年后竟成最成功的投资?

华西村那头1吨金牛,15年后竟成最成功的投资?

财经保探长
2026-01-30 18:38:42
一年流出视频294部的小宝到底探过多少朵花?

一年流出视频294部的小宝到底探过多少朵花?

挪威森林
2026-01-25 17:18:42
震撼!曾精确预言911的盲眼神婆预测今年8大事件,有一条暗指中国

震撼!曾精确预言911的盲眼神婆预测今年8大事件,有一条暗指中国

刀刃故事
2024-11-22 01:55:03
证监会召开资本市场“十五五”规划上市公司座谈会 持续优化发行上市制度规则

证监会召开资本市场“十五五”规划上市公司座谈会 持续优化发行上市制度规则

每日经济新闻
2026-01-30 21:45:32
廖锡龙将军去世!他曾怒骂谷俊山:我死都不怕,还怕一个贪官?

廖锡龙将军去世!他曾怒骂谷俊山:我死都不怕,还怕一个贪官?

帝哥说史
2026-01-29 22:15:39
窦靖童:我妈钱多到用不完,但穷苦潦倒的爸爸,成了我如今的心病

窦靖童:我妈钱多到用不完,但穷苦潦倒的爸爸,成了我如今的心病

璀璨幻行者
2026-01-20 04:29:30
张柏芝带小儿子现身机场!胳膊戴满大金镯很阔气,把俩儿子留澳洲

张柏芝带小儿子现身机场!胳膊戴满大金镯很阔气,把俩儿子留澳洲

琴声飞扬
2026-01-30 11:40:53
投了18亿后,巴拿马撕毁对华合约,宣布港口合同无效,中方不答应

投了18亿后,巴拿马撕毁对华合约,宣布港口合同无效,中方不答应

小涛叨叨
2026-01-31 05:01:39
记者:有欧洲豪门在U23亚洲杯前力邀王钰栋,但没有积极反馈

记者:有欧洲豪门在U23亚洲杯前力邀王钰栋,但没有积极反馈

懂球帝
2026-01-30 22:07:15
全世界最狠的骗局,莫过于贷款买房。

全世界最狠的骗局,莫过于贷款买房。

流苏晚晴
2026-01-08 18:18:57
整壶滚烫咖啡泼向9个月婴儿! 中国留学生作案后逃回国难脱罪责!

整壶滚烫咖啡泼向9个月婴儿! 中国留学生作案后逃回国难脱罪责!

北国向锡安
2026-01-30 11:18:50
欧冠1分出局,马塞利诺:我们踢得非常烂、非常烂、非常烂

欧冠1分出局,马塞利诺:我们踢得非常烂、非常烂、非常烂

懂球帝
2026-01-30 10:19:01
牢A居然连“法律面前人人平等”都要推翻?

牢A居然连“法律面前人人平等”都要推翻?

非典型佛教徒
2026-01-29 00:02:20
莱万妻子:这是我丈夫在巴萨的最后一个赛季,希望大家记得他

莱万妻子:这是我丈夫在巴萨的最后一个赛季,希望大家记得他

懂球帝
2026-01-30 21:35:06
上海101-92深圳 球员评价:3人满分,3人及格,4人低迷

上海101-92深圳 球员评价:3人满分,3人及格,4人低迷

篮球资讯达人
2026-01-30 21:38:01
上海炒股大赛冠军的箴言:如果手里只有10万,不妨死磕"七大口诀"

上海炒股大赛冠军的箴言:如果手里只有10万,不妨死磕"七大口诀"

一方聊市
2026-01-19 13:13:48
黄金今天是加仓点吗?

黄金今天是加仓点吗?

舟望停云
2026-01-31 01:44:34
全世界都被特朗普耍了!打击伊朗只是个幌子,真正目标已布局四年

全世界都被特朗普耍了!打击伊朗只是个幌子,真正目标已布局四年

兴史兴谈
2026-01-27 05:18:52
我是看明白了,不管刘强东钱再多,企业再大,对于他的父母亲来说并没多大用处

我是看明白了,不管刘强东钱再多,企业再大,对于他的父母亲来说并没多大用处

生活新鲜市
2026-01-30 02:52:50
丁巨胜,升副部

丁巨胜,升副部

新京报政事儿
2026-01-30 23:46:45
2026-01-31 06:28:49
侃故事的阿庆
侃故事的阿庆
几分钟看完一部影视剧,诙谐幽默的娓娓道来
341文章数 7512关注度
往期回顾 全部

科技要闻

意念控制机器人不是科幻 1-2年就落地

头条要闻

特朗普:已向伊朗告知达成协议的最后期限

头条要闻

特朗普:已向伊朗告知达成协议的最后期限

体育要闻

“假赌黑”的子弹,还要再飞一会儿吗?

娱乐要闻

警方通报金晨交通事故,否认网传骗保

财经要闻

水贝惊雷:揭秘杰我睿百亿黄金赌局的背后

汽车要闻

合资品牌首搭800V/5C快充 东风日产NX8将于3、4月上市

态度原创

本地
艺术
手机
公开课
军事航空

本地新闻

云游中国|拨开云雾,巫山每帧都是航拍大片

艺术要闻

惊艳!越南摄影师镜头下的妩媚女子!

手机要闻

差200元!红米Turbo 5与Max该怎么选?这4点核心差异看完不纠结!

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

新西兰拒绝特朗普:不加入"和平委员会"

无障碍浏览 进入关怀版