如何让 Agent 有计划地进行股票数据分析?——基于 DeepSeek 的实战应用

在当今数字化时代,股票数据分析是投资者和金融从业者的重要工具。随着人工智能技术的发展,Agent(智能代理)已经被广泛应用于股票数据分析中,帮助用户更高效地获取和解读数据。今天,我们将通过一个实战项目,介绍如何让 Agent 有计划地进行股票数据分析。我们将从数据准备、指标计算,到 Agent 的计划模式设计,一步步展开。

一、数据准备:股票分析的基础

股票数据分析的核心在于数据。无论是判断一只股票的收益率、稳定性,还是分析公司的财务表现,都需要准确、完整的基础数据。以下是进行股票数据分析所需的主要数据类型:

1.1 指标数据

指标是衡量股票表现的重要工具。常见的指标包括:

  • 波动率:衡量股票价格的波动程度,通常以年化波动率表示。
  • 最大回撤:衡量股票价格的最大下跌幅度,反映了投资的风险。
  • 涨跌幅:衡量股票价格在特定区间内的变化幅度,反映了股票的收益能力。

这些指标的计算通常基于股票的历史价格数据,例如日 K 线数据。

1.2 财报数据

财报是分析公司财务健康状况的重要依据。常见的财报数据包括:

  • 年报:反映公司一年内的整体财务状况。
  • 季报:反映公司每个季度的财务表现。

通过财报,我们可以直观地看到公司的收入、利润、资产负债等情况,从而判断公司的经营状况。

1.3 数据获取与准备

在上一节课程中,我们已经完成了数据的准备工作。现在,大家应该已经拥有一份完整的沪深 A 股过去两年的日 K 线数据。这些数据将作为后续分析的基础。

以下是获取股票数据的代码示例:

import akshare as ak

def 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 pd

def 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) / peak
    max_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 plt

def 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文档教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值