如何让 Agent 有计划地进行股票数据分析?——基于 DeepSeek 的实战应用
在当今数字化时代,股票数据分析是投资者和金融从业者的重要工具。随着人工智能技术的发展,Agent(智能代理)已经被广泛应用于股票数据分析中,帮助用户更高效地获取和解读数据。今天,我们将通过一个实战项目,介绍如何让 Agent 有计划地进行股票数据分析。我们将从数据准备、指标计算,到 Agent 的计划模式设计,一步步展开。
一、数据准备:股票分析的基础
股票数据分析的核心在于数据。无论是判断一只股票的收益率、稳定性,还是分析公司的财务表现,都需要准确、完整的基础数据。以下是进行股票数据分析所需的主要数据类型:
1.1 指标数据
指标是衡量股票表现的重要工具。常见的指标包括:
- 波动率:衡量股票价格的波动程度,通常以年化波动率表示。
- 最大回撤:衡量股票价格的最大下跌幅度,反映了投资的风险。
- 涨跌幅:衡量股票价格在特定区间内的变化幅度,反映了股票的收益能力。
这些指标的计算通常基于股票的历史价格数据,例如日 K 线数据。
1.2 财报数据
财报是分析公司财务健康状况的重要依据。常见的财报数据包括:
- 年报:反映公司一年内的整体财务状况。
- 季报:反映公司每个季度的财务表现。
通过财报,我们可以直观地看到公司的收入、利润、资产负债等情况,从而判断公司的经营状况。
1.3 数据获取与准备
在上一节课程中,我们已经完成了数据的准备工作。现在,大家应该已经拥有一份完整的沪深 A 股过去两年的日 K 线数据。这些数据将作为后续分析的基础。
以下是获取股票数据的代码示例:
import akshare as akdef get_stock_data(symbol):"""获取指定股票的历史数据:param symbol: 股票代码:return: 股票历史数据的 DataFrame"""data = ak.stock_zh_a_hist(symbol=symbol, period="daily", start_date="20230101", end_date="20250101")return data
运行上述代码后, data 将是一个包含指定股票历史数据的 DataFrame
二、指标计算与可视化
有了基础数据后,接下来我们需要计算相关的指标,并进行可视化分析。以下是常用的指标计算方法和可视化工具。
2.1 指标计算
使用 Pandas 库可以方便地计算股票数据的指标。以下是一些常用指标的计算方法:
年化波动率
import pandas as pddef calculate_annualized_volatility(data):"""计算年化波动率:param data: 股票历史数据的 DataFrame:return: 年化波动率"""returns = data['close'].pct_change()annualized_volatility = returns.std() * (252 ** 0.5) # 252 是一年的交易日数量return annualized_volatility
最大回撤
def calculate_max_drawdown(data):"""计算最大回撤:param data: 股票历史数据的 DataFrame:return: 最大回撤"""cumulative_returns = (1 + data['close'].pct_change()).cumprod()peak = cumulative_returns.cummax()drawdown = (cumulative_returns - peak) / peakmax_drawdown = drawdown.min()return max_drawdown
区间涨跌幅
def calculate_return(data, start_date, end_date):"""计算指定区间的涨跌幅:param data: 股票历史数据的 DataFrame:param start_date: 开始日期:param end_date: 结束日期:return: 涨跌幅"""start_price = data.loc[data['date'] == start_date, 'close'].values[0]end_price = data.loc[data['date'] == end_date, 'close'].values[0]return (end_price - start_price) / start_price
2.2 可视化
使用 Matplotlib 库可以方便地绘制股票价格走势图。以下是绘制股价走势图的代码:
import matplotlib.pyplot as pltdef plot_stock_price(data, symbol):"""绘制股票价格走势图:param data: 股票历史数据的 DataFrame:param symbol: 股票代码"""plt.figure(figsize=(12, 6))plt.plot(data['date'], data['close'], label=f'{symbol} Close Price')plt.xlabel('Date')plt.ylabel('Price')plt.title(f'Stock Price of {symbol}')plt.legend()plt.show()
运行上述代码后,将生成股票价格走势图
三、Agent 的计划模式设计
Agent 的计划模式是一种高效的设计模式,通过制定计划和执行计划来提高效率和可靠度。在股票数据分析中,Agent 可以根据用户的问题设计出相应的计划,然后按照计划逐步执行,最终给出答案。
3.1 计划模式的实现
以下是 Agent 的计划模式实现代码:
from langchain_core.tools import tool
from llm import DeepSeek@tool
def analyze_stock(symbol, start_date, end_date):"""分析指定股票的指标:param symbol: 股票代码:param start_date: 开始日期:param end_date: 结束日期:return: 分析结果"""data = get_stock_data(symbol)volatility = calculate_annualized_volatility(data)max_drawdown = calculate_max_drawdown(data)return_ = calculate_return(data, start_date, end_date)return {'symbol': symbol,'volatility': volatility,'max_drawdown': max_drawdown,'return': return_}
3.2 用户问题解析与计划执行
Agent 根据用户的问题设计出相应的计划,并逐步执行。以下是用户问题解析与计划执行的代码:
def query_stock_analysis(user_input):"""根据用户输入的自然语言解析问题并执行分析:param user_input: 用户输入的自然语言:return: 分析结果"""# 解析用户输入parsed_input = agent.parse(user_input)symbol = parsed_input['symbol']start_date = parsed_input['start_date']end_date = parsed_input['end_date']# 执行分析计划result = agent.run_tool('analyze_stock', symbol=symbol, start_date=start_date, end_date=end_date)return result
3.3 测试计划模式
假设用户输入“分析股票代码为 300059 的股票在 2023 年 1 月 1 日到 2025 年 1 月 1 日的表现”,调用 query_stock_analysis 函数后,Agent 将解析用户输入,执行分析计划,并返回结果。以下是测试代码:
user_input = "分析股票代码为 300059 的股票在 2023 年 1 月 1 日到 2025 年 1 月 1 日的表现"
result = query_stock_analysis(user_input)
print(result)
运行上述代码后,将输出分析结果
四、总结
通过本实战项目,我们介绍了如何让 Agent 有计划地进行股票数据分析。我们从数据准备、指标计算,到 Agent 的计划模式设计,一步步完成了整个流程。希望本文能帮助你更好地理解和应用 Agent 技术。
往期回顾
(2025亲测可用)解锁Chatbox:多端畅连Claude、GPT、DeepSeek大模型全攻略
(2025亲测可用)AI大模型,解锁高效编程新姿势:Cursor 详细配置指南
API文档教程