Resolve the Firm C/D "two-snapshot" inconsistency from the co-author rev9.1 review. Root cause was NOT stale data but two live firm-assignment keys (assigned_accountant-> registry firm vs the excel_firm column) used inconsistently across tables; standardize on the registry key, which the headline Table IV/II-b already use. Sole difference = 379 signatures with excel_firm=C but registry firm=D; A and B identical under both keys. Numbers (all DB-verified, registry key, n=150,442): - Table II-c Firm C/D recomputed (was mixing keys within firm C across periods, which manufactured the spurious "third value" 38,934); now C 22,449+16,164=38,613, D 9,945+7,188=17,133, all four firms reconcile. - Table VI C/D counts + S III-B prose + Fig 3/6 captions -> 150,442. - S V-B HC-rate text -> Firm C 21.6->26.7%, Firm D 22.0->28.0%. Note on R4: the reviewer (PDF-only) asked to change S IV-C to 26.5/28.5 to match Table II-c; DB verification showed the reverse - S IV-C's 26.7/28.0 are correct and Table II-c was the stale outlier, so II-c was aligned to S IV-C (data-correct, opposite to the literal instruction). Accountant counts (R2 reviewer "179>171 impossible" = false positive; three distinct, all-reproducible universes): Table I + S III-B -> 457 (>=2 sig, owns the 150,442 signatures); Table III documented as the 437 with >=10 signatures (K=3 GMM subset, reproduces A=82.5/B=0.0/C=1.0/D=1.9% exactly); bootstrap 179/280 unchanged (accountant_id key, correct and invariant to the A-vs-BCD contrast). R3 (corpus scope): S III-B reworded - corpus = all retrievable reports, Big-4 as the primary analysis sample (removes the "corpus = four firms" vs "non-Big-4 in robustness" contradiction); per-firm counts now explicitly labelled A/B/C/D. R5 (spelling): unify to American (artefact->artifact x11, centred->centered, behaviour->behavior, analyse(d)->analyze(d), favours->favors). R6: delete non-standard "(+)" marker in S IV-C. Figures regenerated under the registry key: make_fig3_density.py and make_fig6_sensitivity.py switched to the assigned_accountant join (fig3/fig6 n=150,442); fig4/fig5 refreshed. FE/LOYO/bootstrap re-validated exactly (ORs 0.116/0.061/0.070, LOYO 53.1-54.9pp, full 53.7pp). Add CANONICAL_NUMBERS_rev9.1.md with full provenance, the analyzable/GMM definitions, and the firm-key root cause. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K35dXhb9XEM1mnYz6SSHpU
4.7 KiB
Canonical number set — Paper A v13 rev9.1 (verified 2026-06-30)
Source of truth: signature_analysis.db (/Volumes/NV2/PDF-Processing/signature-analysis/).
Verified against scripts in paper/v13_build/scripts/. All firm-level signature counts and
within-accountant HC rates below are DB-reproduced to 2 decimals.
ROOT CAUSE of the "Firm C/D two-snapshot" inconsistency
It is NOT a stale snapshot. It is two live firm-assignment keys used inconsistently:
| Key | Definition | C | D | total |
|---|---|---|---|---|
| assigned (canonical) | assigned_accountant → accountants.firm (registry firm) |
38,613 | 17,133 | 150,442 |
| excel | excel_firm column (source Excel metadata) |
38,993 | 16,752 | 150,441 |
Difference = 379 signatures with excel_firm=資誠(C) but registry firm=安永(D) (one/few cross-labeled accountants). A and B are identical under both keys. Because the headline contrast pools B/C/D, the swap is invisible to it (FE/LOYO/bootstrap reproduce exactly under either key); only per-firm-separated tables (IV, II-b, II-c, VI) are affected.
DECISION: standardize on the assigned key — it is what headline Table IV/II-b already use.
"Analyzable signatures" definition (reproduces 150,442 exactly)
Analyzable = signature whose CPA has ≥2 signatures (singleton CPAs have no same-accountant partner). Per-firm singletons (A:2, B:6, C:3, D:0) exactly equal raw−Set A.
Canonical signature counts (assigned key)
| Firm | Full 2013–23 | 2013–19 | 2020–23 |
|---|---|---|---|
| A | 60,448 | 36,550 | 23,898 |
| B | 34,248 | 19,677 | 14,571 |
| C | 38,613 | 22,449 | 16,164 |
| D | 17,133 | 9,945 | 7,188 |
| Big-4 | 150,442 | 88,621 | 61,821 |
Every row sums exactly. (excel-key alternatives, do NOT use for per-firm tables: C 2020–23 = 16,485, D 2020–23 = 6,866 — these are what the stale Table II-c rows show.)
Five-way breakdown (HC | MC | HSC | UN | LH | n), low cut = 0.8547
FULL 2013–2023 (Table IV):
- A: 81.70 | 10.76 | 0.05 | 7.35 | 0.14 | 60,448
- B: 34.56 | 35.88 | 0.29 | 28.95 | 0.32 | 34,248
- C: 23.75 | 41.44 | 0.38 | 33.97 | 0.47 | 38,613
- D: 24.51 | 29.33 | 0.22 | 45.28 | 0.66 | 17,133
- Overall: 49.58 | 26.47 | 0.21 | 23.42 | 0.32 | 150,442
2013–2019 (Table II-b):
- B: 29.04 | 39.31 | 0.39 | 30.91 | 0.35 | 19,677
- C: 21.59 | 42.09 | 0.37 | 35.53 | 0.43 | 22,449
- D: 22.01 | 29.67 | 0.20 | 47.35 | 0.76 | 9,945
2020–2023 (Table II-c) — C/D are the fix:
- A: 83.84 | 9.13 | 0.04 | 6.88 | 0.11 | 23,898
- B: 42.01 | 31.24 | 0.16 | 26.31 | 0.28 | 14,571
- C: 26.74 | 40.55 | 0.40 | 31.80 | 0.51 | 16,164 (manuscript stale: 26.53/.../16,485)
- D: 27.98 | 28.85 | 0.24 | 42.42 | 0.51 | 7,188 (manuscript stale: 28.53/.../6,866)
Per-firm period HC rates (§IV-C text / Fig 5 — already CORRECT in manuscript): A 80.3→83.8, B 29.0→42.0, C 21.6→26.7, D 22.0→28.0.
Table VI (any-pair vs same-pair HC) under assigned key
| firm | n | any-pair% | same-pair% |
|---|---|---|---|
| A | 60,448 | 81.7 | 57.3 |
| B | 34,248 | 34.6 | 9.0 |
| C | 38,613 | 23.7 | 5.3 |
| D | 17,133 | 24.5 | 7.7 |
| all | 150,442 | 49.6 | 27.3 |
(Manuscript currently shows excel-key: C 38,993, D 16,752, all 150,441, D any-pair 24.7.)
Accountant counts (R2) — reviewer's "179 > 171 impossible" is a FALSE POSITIVE
Different keys, not a contradiction:
- Bootstrap/FE (
accountant_id, is_valid): A=179 (reproduces exactly), BCD=281 (manuscript 280). - Table III / accountant-level partition (171/112/102/52 = 437): RESOLVED 2026-06-30 — this is the Big-4 accountants with ≥10 signatures (registry key), reproduces EXACTLY on current DB. GMM recipe: accountant point = (mean max_similarity_to_same_accountant, mean min_dhash_independent); sklearn GaussianMixture(n_components=3, covariance_type='full', random_state=42, n_init=10); templated cluster = highest-cosine component (cos 0.983 / dHash 2.4). Shares reproduce to the digit: A=82.5% (141/171), B=0.0% (0/112), C=1.0% (1/102), D=1.9% (1/52). Script: scratchpad/gmm.py.
- Analyzable accountant count (registry name key, ≥2 sig) = 457 (A=178, B=119, C=107, D=53) — owns the 150,442 signatures; now stated in Table I and the §III-B prose.
THREE DISTINCT, ALL-REPRODUCIBLE accountant universes (the reviewer collapsed them → false "179>171"): 457 (≥2 sig, owns 150,442) | 437 (≥10 sig, Table III GMM) | 459 = 179/280 (accountant_id bootstrap). Manuscript edits applied 2026-06-30: Table I + §III-B prose → 457; §III-B prose + Table III caption note the 437/≥10-sig subset. Bootstrap 179/280 stays (correct, key-invariant).
F5 robustness (re-validated EXACTLY on current DB, key-invariant)
Firm+Year FE ORs: B=0.116, C=0.061, D=0.070. LOYO gap range [53.1, 54.9]pp, full-sample 53.7pp.