这个工具把《股票价格合理性评估操作手册》里已经稳定的部分变成可重复执行的程序:固定信源等级、标准输入、TTM、PE/PB/PS/EV、三情景、反向 PE、持有期回报、机构预测时效判断、异常清单、Markdown 底稿和可验证缓存。
它不自动猜数据,也不把网页抓取结果直接当事实。首次分析仍需从法定披露、行情和机构预测页建立标准快照;之后同一公司只更新增量字段,程序整组重算。
在 dev/ana-dev/ 下执行:
$env:PYTHONPATH = (Get-Location).Path
python -m stock_valuation_pipeline `
--input test/stock_valuation_pipeline/fixtures/great_wall_military_20260731.json `
--output-dir tmp/valuation-601606-20260731
输出:
valuation_report.md:固定结构的计算底稿;valuation_results.json:所有冻结计算结果和异常;run_manifest.json:输入、注册表、引擎源码与契约的联合指纹,以及产物哈希。相同输入、相同注册表、相同引擎源码与契约再次运行时返回 REUSED。代码、Schema、输入或注册表变化,以及任一产物哈希不匹配时都会自动重算;需要主动重算时加 --force。
模板契约见 snapshot.schema.json,完整样例见长城军工回归快照。所有金额必须使用“元”,股本使用“股”,价格使用“元/股”;只有报告展示时才转成亿元。
关键约定:
current_cumulative 与 prior_year_same_period 必须是可直接相减的同口径累计数据;业绩预告也放入当前累计,但 basis 必须写明。normalization.adjustments[].amount 是对可持续利润的带符号影响:增加为正,剔除不可持续收益为负。coverage_status=no_usable_forecasts 和空数组,不能省略模块。supports 表明哪个主记录由该来源支持;核心数字必须落到注册表允许承载核心数据的来源。cash_available 由输入方确认可自由支配;受限资金和经营最低现金不得混入。source_registry.json 固定的是“来源身份、优先级、允许用途和回退顺序”,不是永久冻结某个数值。
默认复用:未重述的历史审计数据、历史股本变化、已完成合同事实、历史审计意见、公式与单位、官网来源等级。
每次重取:价格、摊薄股本、最新财报/预告及修正、机构预测、现金债务、公司行动、审计监管诉讼事项。
遇到修正公告、收入或利润大变、单季利润过度集中、重大合同、现金流背离、市值勾稽失败或机构预测滞后时,只扩大受影响模块的复核范围。
自动检查包括:
BLOCKED_INPUT_ERRORS 表示不能把底稿升级为正式结论;PASS_WITH_WARNINGS 表示计算完成,但应按异常清单局部复核;PASS 表示自动规则没有发现问题,仍不替代人工经营判断。
首次分析:并行取得行情、法定披露、合同与机构预测,填一次标准快照,运行一次计算,再把时间用于利润持续性和情景判断。
后续复评:复制上次快照,只更新估值日之后的新信息;若没有重述、股本变化或业务重组,不重新搜索历史年报。报告长度可以继续扩展,所有数值章节引用 valuation_results.json,避免手工多处改数。
$env:PYTHONPATH = (Resolve-Path 'dev/ana-dev')
python -m unittest discover -s dev/ana-dev/test/stock_valuation_pipeline -p 'test_*.py' -v
长城军工回归样例固定复核总市值、TTM 收入、TTM 归母与扣非、PB、PS、三情景、50 倍反向利润和五年目标价;另覆盖市值差异、机构预测滞后、未来来源、非法持有期和缓存复用。