让AI给你写代码(9.2):一个稍微复杂案例——静态市盈率计算

我们利用上一篇构建AI工具(让AI给你写代码(9.1):引导AI根据输入的问题,并结合本地知识库的预存需求组成提示模板,生成代码并测试,保存),通过在本地知识库预制需求,然后通过提示引导的方式生成代码这种模式,构建稍微复杂一点的程序,即在上文的最后提到的,需要使用多个接口的代码。

我们的需求是计算给定股票及时间段,计算静态市盈率——按理说,可以用akshare的乐咕乐股stock_a_indicator_lg接口直接获取,但很不幸,这个接口暂时失效了…
在这里插入图片描述
所以我们来自行构建
我们使用比较简单的逻辑:即用当前的价格除以上一年年末的收益(EPS)
涉及两个akshare的接口stock_zh_a_hist获得历史行情,以及stock_yjbb_em业绩报表数据

主要说一下面临几个问题:
1 提示问题和本地库的内容匹配

我们使用的初始预设需求如下:
计算指定股票静态市盈率,可以使用akshare库,第一步.按股票代码(stock_code),使用stock_zh_a_hist(symbol=stock_code)接口,获取该股票历史行情; 第二步,遍历历史行情dataframe的日期,获取对应前一年的报表日期(report_date,按"YYYY1231"),再使用stock_yjbb_em(date=report_date)接口获得业绩报表数据,按股票代码筛选出每股收益,然后除以按该日期对应的股票收盘价(属性‘收盘‘),得到静态市盈率,在上述dataframe新增一列“静态市盈率”,并用print打印,代码格式为python...

提示问题如下:
计算指定股票静态市盈率,例如计算600150

但不幸的是,本地库匹配的结果确实匹配到需求
我们看一下AI的答复
raw_code:: 无关。提供的上下文没有直接涉及计算特定股票(如600150)的静态市盈率的具体实现代码,而是概述了计算静态市盈率的一般步骤和如何获取股票实时行情信息。

根据提示,我们换了一个提示问题:
请输入您的问题:请计算A股股票每个历史行情日期所对应的前一年度的静态市盈率,例如600276

raw_code:: 有关。
根据提供的上下文,可以设计如下Python代码片段来计算A股股票(以600276为例)每个历史行情日期所对应的前一年度的静态市盈率,使用akshare库:
‘’’ python…

总结:
我们采用了模板
CONTEXT_QA_TMPL = “”"
下面的信息({summary_prompt})是否有这个问题({message})有关,
如果你觉得无关请告诉我无法根据提供的上下文回答’{message}'这个问题,简要回答即可,
否则请根据{summary_prompt}对{message}的问题进行回答
“”"

相当于 从本地库匹配之后,再需要AI判断一次原始问题和本地匹配的内容是否相关,粗暴采取直接用分局的方式不可取,还是要提炼归纳主题作为问题才比较可靠。

2 具体执行逻辑合理化
我们继续看AI提供的代码:

import akshare as ak
import pandas as pd
from datetime import datetime, timedelta

# 设置股票代码和开始日期
stock_code = '600276'
start_date = '20230101'

# 获取股票历史行情数据
stock_hist_df = ak.stock_zh_a_hist(symbol=stock_code, adjust="qfq", start_date=start_date)

# 确保日期列是datetime类型以便处理
stock_hist_df['日期'] = pd.to_datetime(stock_hist_df['日期'])

# 初始化静态市盈率DataFrame
pe_ratio_df = pd.DataFrame(columns=['日期', '股价', '静态市盈率'])
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhyuli

您的鼓励是对我付出努力一种赞赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值