跳到正文

研究指南

资料归档与持续复查

一键股票研究该执行什么:串起行情、盈利预测和估值核算

一键股票研究应执行一条明确的数据和计算链,而不只是生成公司摘要。输入证券、估值日和目标财年,取得对应行情与可比EPS预测,计算前瞻市盈率,再与用户提供的同行表比较。每个步骤都要有输出约定,依赖它的计算也要明确缺失或无效输入时怎样停止。最后能写出文字,并不代表前面的数值任务已经完成。

本文用合成的A股式记录执行控制逻辑,不调用真实行情、券商研报、AI模型或CoTrading服务。Vibe参考工具和预置Agent名称的存在,不证明这条完整链已经运行。CoTrading对应编排仍为规划或待核实;实际可重复的成果,是本文独立标准库样例的输出与阻断行为。

先写出能到达数值结果的请求

本例请求为虚构股票AAA,估值日2026-10-26,预测财年2027,币种CNY。目标输出是前瞻PE及其相对可比同行中位数的比例,范围不包括综合投资建议。最终解读必须引用已经完成的结果,不能用语言生成补上缺少的预测。

真实任务使用带市场限定的证券标识,事先声明价格类型、交易日口径、预测来源、EPS定义和同行选择依据。报告发布日期不是预测财年;一份刚发表但只给2028预测的报告,不能自动填入2027列。估值日、取得数据时间和报告可获得时间也应分别保留,避免后来取到的数据被当成当时已经知道。

IFRS基金会EPS概览说明每股分子分母约定为何重要,但不规定具体A股预测供应商的方法。应查实际来源的定义,并为同行采用相容期间和口径。同币种是价格除EPS的必要条件之一,不足以证明所有同行已经可比;调整盈利与未调整盈利混合时也需要处理。

先画依赖,再决定用几个Agent

数值链包含行情、EPS、PE和同行比较四步。行情与报告可以分别取得,但PE要等两者通过核对;同行比较又依赖有效PE和可比同行表。最后写说明只是展示步骤,不能反过来修改上游成功状态。一个脚本就可以实现这些关系,多几个Agent名字并不能替代依赖检查。

步骤输入成功产物阻断条件
行情股票、估值日日期、价格、币种、来源缺失或日期错误
EPS股票、截止日、财年预测值、期间、口径、来源缺目标财年
PE相容价格与EPS价格除以正EPS缺依赖或EPS非正
同行PE与可比表中位数及相对比值缺失或不相容

每个派生结果保留被接受的输入编号,不能从别次任务捞一个方便数字补进来。允许缓存时,在请求里定义有效期并记录复用版本。工具返回一段含数字的文字,也不等于已经返回可以计算的结构化字段;提取、类型和口径检查仍要完成。

实际执行完整合成链

行情桩在估值日返回24 CNY,来源price-1。合格报告发表于2026-10-20,给出2027年EPS 1.2 CNY,来源report-1。外供同行表采用已假设可比的前瞻PE 16、20、24,中位数20。这里没有声称同行由系统自动选择,也没有把单家预测命名为市场一致预期。

match = [row for row in forecasts
         if row["year"] == request["year"]
         and row["date"] <= request["as_of"]]
if not match:
    return {"status": "partial", "pe": None,
            "steps": {"eps": "blocked_missing_year",
                      "pe": "blocked_dependency",
                      "peers": "blocked_dependency"}}
report = max(match, key=lambda row: row["date"])
pe = price["value"] / report["eps"]

完整文件docs/growth/research/round-5/examples/R552.py在除法前检查币种与正EPS,并在失败运行中保留行情成功状态。实际完整输出PE为2E+1,即20;同行中位数20;相对比值0。公式为PE / 同行中位数 − 1,零表示等于这张外供表的中位数,不代表没有风险或已经得到公允价值。

下载完整示例。使用Python 3.12+,仅需标准库,全部为合成数据;下载后运行python R552.py。

成功输出的来源列表恰好是price-1和report-1,脚本还断言相同输入重复运行产生同样对象。Python Decimal文档支持显式十进制计算;科学计数法是显示形式,用户表可以展示20.00,但应保留同一底层数值。不能为让文案更流畅而重新让模型口算一次。

给依赖链注入两种失败

第一种把唯一报告目标年改成2028,请求仍为2027。行情成功,EPS标为缺目标年,PE与同行标为依赖阻断,任务最终状态为部分完成,PE为空。脚本断言这些状态,而不是评价最终回答是否“看起来合理”。若错误地拿2028补上,所有步骤可能表面成功,却回答了另一道问题。

第二种保留正确年份,把EPS改为−1。EPS取得步骤成功,因为它确实返回了一条明确观测;PE按本流程政策标为非正盈利阻断,同行随之阻断。这与缺EPS不同:一个是输入存在但当前比率解释不接受,一个是必需输入未取得。错误类别不同,下一步研究也不同。

空值不能转换为零。零PE是一个具体数值结论,空值表示没有完成该计算。也不能未经约定使用上次任务EPS或邻近年份预测。降级政策必须事先明确,并在结果上标注采用了什么替代;否则所谓一键成功只是静默改变研究要求。

在小样例之外继续核对来源边界

可运行样例固定证券和行情响应,没有覆盖错证券、过期价格、请求超时等分支。真实取得层应补充这些检查,拒绝标识、币种或日期违背请求的记录,并保存精确原因。样例的币种断言只是兼容性停止条件,不是完整的供应商错误分类系统,不能冒称已处理全部异常。

真实行情需要明确时间戳和市场交易时段。Python datetime文档解释日期与时区对象,不提供市场日历,也不决定券商报告何时对用户可见。历史研究必须有真实发表和可获得证据,当前取到一条预测不自动恢复过去预期。

同行表在此由外部提供且假设可比,生产实现应保留财年、来源、观察日期和筛选依据。若同行表为空或中位数为零,应阻断相对比较,但仍可保留已经有效的公司PE。这是在链条另一个位置的部分成功,不能因为最后一步失败就把前面真实完成的计算全部丢弃。

把状态表与数值表一起交付

最终包包含请求、步骤约定、成功来源记录、数值输出和阻断依赖。完整性从所有必需步骤汇总,不由最后的写作步骤决定。本例完整运行四步均成功,缺年份运行只有行情可用;最终文字应按这个差别解释交付范围,而不能都打上已完成标签。

扩展批量股票时,每只请求股票必须有最终状态,保留部分成功,不因一只失败抹掉其他成果,也不隐藏失败证券。缺失输入取得、来源缺陷修好或请求明确修订后再跑,保留旧运行,并说明哪些下游结果重算。执行重复触发时也要以运行与输入版本定位结果,避免互相覆盖。

这样的“一次执行”有可以检查的计算产物与停止规则。它将行情、盈利和估值连接起来,同时清楚表明哪一步完成、哪一步被阻挡以及需要什么证据继续。后续增加自动调度或Agent协作时,也应继承这些约束,不能因为编排更复杂就放宽来源和依赖要求。

为了便于交接,应将本次实际步骤写成事件记录:请求被接受、行情成功、报告核对、计算执行或阻断,最后汇总状态。每个事件连接输入输出编号,不仅记录一句模型回复。缺年份时,没有PE计算事件比一段流畅的估值文字更能证明依赖门槛确实生效。事件顺序也有助于识别程序是否在核对之前就提前做了计算。

重跑时先确认输入变化范围。仅报告目标财年补齐,可以复用仍然有效的本次行情,再重算PE和同行;若估值日也改变,就需要新的价格检查。复用规则必须明确,不能把“少调用一次工具”作为唯一目标。省下的请求如果造成新旧时点混合,会让结果虽可计算却不再回答原请求。

最终报告同时保留成功例和失败例的验收结果。正常链得到20倍,错年链没有PE,非正EPS链有观测但比率阻断,这三种状态要能从记录直接区分。之后增加新工具时先重放它们,再扩大股票数量,确保功能增加没有削弱最基础的输入约束。

任务负责人还应明确哪些输入需要人工确认。同行选择与EPS定义在本例均预先约定,自动执行不会替代这些研究判断。把人工确认保留为显式输入,整条链才不会把假设伪装成机器自动发现的事实。

常见问题

必须多个AI Agent才能实现吗?

不需要,一个脚本也能执行依赖与验证。Agent数量不是独立核验的证明。

EPS缺失但总结写完,任务就完成了吗?

没有。总结可以解释部分结果,但依赖EPS的估值仍然阻断。

相关阅读