金融报表模板覆盖修补
修正数据平台的财报标准化筛选后,原2026年10月16日估值面板中的87家金融模板公司,PE覆盖从0家恢复到87家,归母权益PB从12家恢复到87家,五项共同样本从0家增加到49家。本次仅用已留存的原始数据诊断一个形成日,并隔离同次观测存在冲突的报告键。该结果没有发布为共享数据资产,不能认证历史PIT可得性,也没有运行收益回测。
| 样本与指标 | 修补前 | 隔离冲突后的诊断 |
|---|---|---|
| 有效市值报价总数 | 5,567 | 5,567 |
| 全体:PE TTM | 3,839 | 3,931 |
| 全体:扣非利润PE | 3,703 | 3,703 |
| 全体:归母权益PB | 5,447 | 5,522 |
| 全体:扣合并商誉PB代理 | 2,650 | 2,693 |
| 全体:再扣无形资产PB代理 | 2,601 | 2,644 |
| 全体:五项共同样本 | 1,743 | 1,794 |
| 原87家金融模板:PE / 扣非PE / PB | 0 / 87 / 12 | 87 / 87 / 87 |
| 原87家:两种调整PB各自覆盖 | 6 | 49 |
| 原87家:五项共同样本 | 0 | 49 |
| 原一般企业模板:PE / 共同样本 | 3,839 / 1,743 | 3,844 / 1,745 |
分组固定使用原面板的报表模板分类,不能据此解释金融与非金融行业差异。全体报价中没有指标损失覆盖。原一般企业模板组增加5个PE和2个共同样本,其余四项覆盖数不变,因此错误的影响范围也涉及原一般企业模板组。原金融模板组仍有38家缺少计算调整PB所需的资产余额,继续保持缺失,没有补零。
原2026年10月18日数据版本中已经留存所需利润和资产负债表报告。问题发生在标准化层:代码把 comp_type=1 误当成合并报表,并优先保留它。同时,合并操作重置了索引,随后的布尔掩码却按筛选前的索引对齐,误删了无关金融模板行。TuShare利润表、资产负债表和现金流量表将 comp_type 定义为公司报表模板,其中7为多元金融。合并范围由 report_type 决定。
数据平台修补接受1、2、3、4、7五种模板,取消模板优先级,保留原更新标记与公告日期筛选规则。严格构建器继续拒绝同次观测的冲突行,因此这批原始数据不能完整重建成合格标准化资产。诊断工具在正常修订筛选后隔离所有歧义键:利润表31键、62行、6家发行人,资产负债表25键、50行、4家,现金流量表13键、26行、6家。各表发行人可能重叠,不能直接相加。现金流量表仅供数据平台检查,本次估值没有使用它。
例如603093.SH的2026年一季度利润表在相同 report_type=1、最终公告日期和精确抓取时间下,同时存在模板2和7,n_oth_income、rd_exp也不同。其2026年半年资产负债表同时存在模板1和7,多个财务字段不同。现有观测、更新和公告元数据无法判定应选哪份模板。另有部分冲突只在模板标签上有差异,本次也按同一规则隔离。完整报告键、差异字段和冲突原行保留在数据平台的任务证据中。
本次没有新增API请求。修补前后使用相同原始观测和2026年10月16日报价分区。诊断保留2026年10月17日至18日的原始精确抓取时间,另行记录实际生成时间,没有改写封存输入或将可得时间提前。每项指标独立选择最新报告、550天时效限制、正且有限的分母、五项共同样本报告期一致等规则均保留。原研究关于归母与少数股东、优先股和多类别股份市值的限制仍然适用。没有新增或重算历史形成日。
专属汇总证据保存输入哈希、覆盖数和隔离数量。数据平台代码见修补PR105,诊断提交为 616f789。复现命令见英文页。原始金额继续存放在仓库外,本诊断以独立复核汇总发布,原有公开估值面板JSON保持不变。数据平台修补已先于本诊断完成合并;复现时使用上述已合并版本。
Financial statement template coverage repair
The 87 financial-template companies in the original 2026-10-16 valuation panel recover PE coverage from 0 to 87 and parent-equity PB coverage from 12 to 87 after correcting the owner’s statement normalization. Their five-metric common sample increases from 0 to 49. This is a single-date coverage diagnosis using retained raw data, with conflicting observation keys quarantined. It is not a published replacement asset, a historical PIT certification, or a return backtest.
| Sample / measure | Before | Diagnostic after |
|---|---|---|
| All valid market-value quotes | 5,567 | 5,567 |
| All quotes: PE TTM | 3,839 | 3,931 |
| All quotes: deducted-profit PE | 3,703 | 3,703 |
| All quotes: parent-equity PB | 5,447 | 5,522 |
| All quotes: PB excluding goodwill proxy | 2,650 | 2,693 |
| All quotes: PB excluding goodwill and intangibles proxy | 2,601 | 2,644 |
| All quotes: common five | 1,743 | 1,794 |
| Original 87 financial templates: PE / deducted PE / PB | 0 / 87 / 12 | 87 / 87 / 87 |
| Original 87: both adjusted PB measures | 6 | 49 |
| Original 87: common five | 0 | 49 |
| Original general template: PE / common five | 3,839 / 1,743 | 3,844 / 1,745 |
The cohorts are fixed using the original panel’s reporting-template classification. They are not industry classifications. No metric loses availability in the all-quote comparison. The original general-template cohort gains five PE observations and two common observations, so the effect extends beyond the original financial cohort. Its other four coverage counts do not change. Thirty-eight original financial-template names still lack the asset balances required by the adjusted PB measures; no missing amount is filled with zero.
The raw 2026-10-18 vintage already contains the required profit and balance-sheet legs. The standardizer treated comp_type=1 as a consolidated statement and preferred it over financial templates. In addition, its merge created a new row index, then aligned the resulting mask with the filtered frame’s original index. This deleted unrelated financial-template rows. TuShare income, balance sheet, and cash flow define comp_type as the company reporting template, including 7 for diversified financial companies. Consolidation scope is selected by report_type.
The provider correction accepts templates 1, 2, 3, 4, and 7 and removes template priority. Existing update-flag and announcement-date selection remain in place. The strict builder then rejects conflicting rows for the same observation rather than choosing a template. Complete strict rebuilding therefore fails on this retained raw bundle. The diagnostic excludes every ambiguous observation key after those ordinary revision filters: income 31 keys / 62 rows / 6 issuers; balance sheet 25 / 50 / 4; cash flow 13 / 26 / 6. Counts are per table and cannot be added as distinct issuers. Cash flow is audited for the owner but is not used in this valuation comparison.
For example, 603093.SH has report_type=1, the same final announcement date and exact retrieval timestamp, but templates 2 and 7 for its 2026-03-31 income report. The rows also differ in n_oth_income and rd_exp. Its 2026-06-30 balance-sheet rows have templates 1 and 7 and differences in several financial fields. Existing observation and update metadata cannot establish which template to use. Other conflicts sometimes differ only in the template label; all are quarantined under the same rule. Full keys, differing column names and the actual conflicting rows remain in the owner’s diagnostic evidence.
No new API requests were made. Both baseline and diagnostic use the same raw observations and 2026-10-16 daily-basic partition. The diagnostic preserves exact raw retrieval timestamps from 2026-10-17/18 and separately records its actual generation time. It neither changes sealed inputs nor makes information available earlier. The consumer retains independent latest reports, positive finite denominators, the 550-day freshness guard, and equal report periods for the five-way sample. Parent/minority, preferred-equity and multiclass ownership limitations from the original study still apply. No historical formation dates were added or recalculated.
The dedicated aggregate evidence records source hashes, metric counts and quarantine totals. This diagnosis is published as a separate reviewed aggregate. The original published valuation panel JSON remains unchanged.
Provider source: repair PR 105, diagnostic code commit 616f789. Reproduce after checking out the provider repair and this consumer revision. Resolve MDP_CODE, QMR_CODE, MDP_DATA, and QMR_DATA from the workspace configuration. Use new output directories for each run:
cd "$MDP_CODE"
python scripts/operations/audit_fundamentals_templates.py \
--vintage "$MDP_DATA/assets/tushare/a_share/fundamentals_vintages/vintage=20261018" \
--output "$MDP_DATA/task_outputs/financial-template-coverage-20261019/diagnostic01"
cd "$QMR_CODE"
python scripts/analyze_financial_template_coverage.py \
--vintage "$MDP_DATA/assets/tushare/a_share/fundamentals_vintages/vintage=20261018" \
--diagnostic "$MDP_DATA/task_outputs/financial-template-coverage-20261019/diagnostic01" \
--prices "$MDP_DATA/assets/tushare/a_share/daily_basic/a_share_all_daily_basic_latest/data/trade_date=20261016/part.parquet" \
--output "$QMR_DATA/task_outputs/financial-template-coverage-20261019/run01"
The price alias is a locator; the evidence records the exact partition hash. Source amounts remain outside both repositories. The provider repair was merged before this consumer diagnosis; reproduce with the merged revisions above.