输入股票生成研报

股票研报功能的前后端

前端

前端需要用户键盘输入一个股票代码,在前端进行格式判断,如果输入不是一个正确的股票代码,就显示没有这种次股票代码,如果代码正确,就可以转给后端,进行研报的生成。

研报以一个pdf的形式传到前端,在页面对这个pdf进行预览并且提供下载功能。

后端

后端根据传进来的股票代码进行相关的图表以及文字解释的生成。

以下是几个关键函数:

### get_stock_performance(self)

该函数获取并比较指定股票与标准普尔500指数(S&P 500)的表现,并生成图表保存为PNG文件。获得默认时间一年内的股票的历史收盘价数据,获取目标股票和标准普尔500指数的收盘价数据,并且计算股票和指数的变化率,以百分比形式表示,绘制成一个图,并保存为.png文件。

```

def get_stock_performance(self):

    """

    获取并比较股票与标准普尔500指数(S&P 500)的表现,生成图表并保存为PNG文件。

    Returns:

        str: 图表文件的存储路径。

    """

    def fetch_stock_data(ticker, period="1y"):

        stock = yf.Ticker(ticker)

        hist = stock.history(period=period)

        return hist['Close']

    target_close = fetch_stock_data(self.ticker_symbol)

    sp500_close = fetch_stock_data("^GSPC")

    # 计算变化率

    company_change = (target_close - target_close.iloc[0]) / target_close.iloc[0] * 100

    sp500_change = (sp500_close - sp500_close.iloc[0]) / sp500_close.iloc[0] * 100

    # 计算额外的日期点

    start_date = company_change.index.min()

    four_months = start_date + DateOffset(months=4)

    eight_months = start_date + DateOffset(months=8)

    end_date = company_change.index.max()

    # 准备绘图

    plt.rcParams.update({'font.size': 20})  # 调整为更大的字体大小

    plt.figure(figsize=(14, 7))

    plt.plot(company_change.index, company_change, label=f'{self.info["shortName"]} Change %', color='blue')

    plt.plot(sp500_change.index, sp500_change, label='S&P 500 Change %', color='red')

    # 设置标题和标签

    plt.title(f'{self.info["shortName"]} vs S&P 500 - Change % Over the Past Year')

    plt.xlabel('Date')

    plt.ylabel('Change %')

    # 设置x轴刻度标签

    plt.xticks([start_date, four_months, eight_months, end_date],

            [start_date.strftime('%Y-%m'),

                four_months.strftime('%Y-%m'),

                eight_months.strftime('%Y-%m'),

                end_date.strftime('%Y-%m')])

    plt.legend()

    plt.grid(True)

    plt.tight_layout()

    # plt.show()

    plot_path = f"{self.project_dir}/stock_performance.png"

    plt.savefig(plot_path)

    plt.close()

    return plot_path

```

### get_pe_eps_performance(self)

该函数计算并绘制指定股票的市盈率(PE)和每股收益(EPS),并保存图表为PNG文件。获取公司的损益表,提取稀释后的每股收益数据,并获取历史数据。将EPS的日期转换为UTC,并找到收盘价,用收盘价和EPS计算市盈率。并绘制图,保存为.PNG文件

### get_sec_report_address(self)

获取该公司的10K报告。

### get_key_data

此函数提取并返回股票的关键财务数据,包括最新收盘价、过去6个月的平均日交易量、市值、52周价格范围和每股账面价值(BVPS)。

### get_income_stmt

获取公司的最新损益表,

### get_cash_flow

获取公司的现金流量表

### get_earnings

根据指定的季度和年份获取公司的财报收益数据,从10-K报告中获取数据然后构建一个RAG查询链,用于回答问题。

### analyze_income_stmt,analyze_cash_flow,financial_summarization

分析和解释损益表、资产负债表和现金流量表,产生文字描述,以及产生一个全面的财务总结。

##

使用 UMAP 和高斯混合模型对文本嵌入进行聚类和降维。输入一个个文本列表,这些文本可以是任何需要处理的文本文档。通过将文本转换成嵌入向量、用UMAP将嵌入向量降维、用GMM对降维后的嵌入向量进行聚类,然后在每个全局聚类中进一步使用UMAP和GMM进行局部降维和聚类,然后对每个聚类的本文进行格式化并生成总结,递归进行上述过程。

后续可能会将不同图表生成功能分开,使用户可以既可以获得一整个pdf形式的分析研报,也可以只获得其中一部分。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值