Building an AI-Driven Stock Analysis System: 5 Key Steps Using Langgraph Deepseek and Ollama
- Rifx.Online
- Machine Learning , Data Science , AI Applications
- 08 Mar, 2025
基于开源工具的 AI 驱动股票分析
开源 AI 工具的兴起使得构建复杂、经济高效的解决方案变得前所未有地容易。在本指南中,我将向您展示如何创建一个AI 驱动的股票分析系统,利用强大的开源工具,如 LangGraph、DeepSeek R1–7B 和 Ollama——所有这些都托管在 Google Colab 上,以最大限度地降低基础设施成本。
无论您是数据科学家、软件开发人员,还是仅仅对 AI 感兴趣的人,此工作流程都旨在实现模块化、可扩展和对开发人员友好。
开源 AI 的优势
大型语言模型 (LLM) 的普及为开发人员开启了令人兴奋的可能性:
- 免费计算资源:使用 Google Colab 等平台。
- 经济高效的模型:通过使用 Ollama 在本地运行模型来避免高昂的云 API 成本。
- 可定制性:完全控制模型和管道。
- 学习潜力:亲身体验 DeepSeek 等工具。
通过结合这些工具,您可以创建与企业级设置相媲美的系统,而成本仅为一小部分。
为什么要在本地运行 LLM?
Ollama 允许您在本地运行 DeepSeek R1–7B,即使在 Colab 环境中,也有几个优势:
- 经济高效:不依赖于昂贵的 API 订阅。
- 数据隐私:敏感的股票数据保留在本地。
- 灵活性:定制工作流程和模型以满足您的需求。
- 可扩展性:在不被供应商锁定的情况下扩展功能。
系统概述
我们的 AI 管道遵循一个四步架构,以提供关于任何公开交易股票的见解。
工作流程:
- 技术分析:评估股票价格模式和市场指标。
- 市场分析:审查行业表现和比较指标。
- 新闻分析:处理情绪和突发新闻事件。
- 建议:将见解综合为可操作的建议。
每个阶段都作为一个独立的**“Agent”**运行,并且是定向无环图 (DAG) 工作流程的一部分。
我们将使用的工具
以下是核心技术的细分:
- LangChain:用于链接 AI 提示和代理的框架。
- LangGraph:用于编排工作流程,并在代理之间共享状态。
- DeepSeek R1–7B:用于分析推理的开源 LLM。
- Ollama:用于本地 LLM 托管,以节省成本和保护数据隐私。
- Google Colab:免费、灵活的计算环境。
这些工具结合了现代 LLM 的强大功能和实用、对开发人员友好的工作流程。
实施股票分析管道
这个系统的核心是 LangGraph 驱动的定向无环图 (DAG) 工作流程。工作流程中的每个代理都专注于一个特定的分析领域。
1:定义工作流程
def create_analysis_graph() -> Graph:
"""Create the analysis workflow graph"""
# Create workflow graph
workflow = StateGraph(State)
## Add nodes
workflow.add_node("technical", technical_analysis)
workflow.add_node("market", market_analysis)
workflow.add_node("news", news_analysis)
workflow.add_node("recommendation", generate_recommendation)
## Define edges
workflow.add_edge("technical", "market")
workflow.add_edge("market", "news")
workflow.add_edge("news", "recommendation")
workflow.add_edge(START, "technical")
## Set end node
workflow.add_edge("recommendation", END)
2:构建每个代理
以下是如何定义一个示例代理,如技术分析代理:
### Technical Analysis Node
def technical_analysis(state: State) -> State:
"""Node for technical analysis"""
symbol = state["symbol"]
llm = state["llm"]
## Fetch technical data
stock = yf.Ticker(symbol)
hist = stock.history(period='1y')
## Calculate indicators
sma_20 = hist['Close'].rolling(window=20).mean()
sma_50 = hist['Close'].rolling(window=50).mean()
rsi = calculate_rsi(hist['Close'])
data = {
'current_price': hist['Close'].iloc[-1],
'sma_20': sma_20.iloc[-1],
'sma_50': sma_50.iloc[-1],
'rsi': rsi.iloc[-1],
'volume_trend': hist['Volume'].iloc[-5:].mean() / hist['Volume'].iloc[-20:].mean()
}
prompt = PromptTemplate.from_template(
"""Analyze these technical indicators for {symbol}:
{data}
Provide:
1. Trend analysis
2. Support/Resistance levels
3. Technical rating (Bullish/Neutral/Bearish)
4. Key signals
"""
)
chain = LLMChain(llm=llm, prompt=prompt)
analysis = chain.run(symbol=symbol, data=json.dumps(data, indent=2))
state["results"]["technical"] = {
"data": data,
"analysis": analysis
}
return state
市场分析、新闻分析和建议生成代理的步骤类似。
输出 — 思考
最终输出
实际应用
部署后,此管道提供全面的见解:
- 技术指标:分析移动平均线、RSI、MACD 等。
- 市场趋势:了解行业范围或宏观经济影响。
- 新闻情绪:检测突发新闻中的看涨或看跌趋势。
- 可操作的建议:生成具有置信度得分的建议。
总结
本指南展示了 LangGraph、DeepSeek 和 Ollama 如何在人工智能驱动的金融分析中开启新的可能性。借助开源工具和免费计算资源,您可以构建强大的系统来应对现实世界的挑战。
重要提示:基于人工智能的建议是对专业金融建议的补充,而不是替代。在做出投资决策之前,请务必进行彻底的研究。