When to roll up subsidiaries in China company data, and when it double-counts
Short answer: roll up only where the dataset has not already done it for you. Disclosed filings are consolidated at the filer, so aggregating a parent with its subsidiaries counts the same relationships twice. Constructed datasets like tender activity are built to be rolled up, and reading them entity by entity shows a fraction of the truth. One column inside SAM is a subtree total that looks perfectly additive and is not.
The column that looks additive and is not
In fin_secu_sam_product_calc, product_income is a subtree roll-up. A
parent node's value already includes its children, so summing it across taxonomy
nodes double-counts. Use product_b_income, the direct block figure, when you
need additive segment revenue. (ChinaScope SAM, data cut 2026-02-26.)
This is the single most expensive line on this page. Nothing about the column name or the values suggests it. The totals simply come out large and plausible.
Already consolidated, so leave it alone
ChinaScope C2C Disclosed carries the consolidated disclosures of the listed filer. Aggregating a parent's rows together with its listed subsidiaries' rows double-counts the same underlying relationships. Treat each filer's disclosure as complete for that filer. (Data cut 2026-05-16.)
Relationships (PIT) has the same shape at table level.
internal_guaranty_detail and internal_guaranty_total, and their external and
entrusted-investment counterparts, are disclosed separately by the filer. They
are not a hierarchy. Adding detail lines to a total double-counts. (Data cut
2026-08-23.)
Built to be rolled up
ChinaScope RFP-Bids attributes a listed company's subsidiaries' tender activity,
much of it done by unlisted entities, up to the listed parent. Each link is
tagged with the ownership relationship (relation_type) and combined stake
(hold_ratio), so you can weight by stake or keep only holdings at or above
50%. Read it entity by entity and you miss most of the footprint. (Data cut
2026-05-29.)
Which ownership number to roll up with
ChinaScope Affiliate gives subsidiaries and associates three stakes: the
direct stake, the indirect stake, and the combined total. Use
totalrate for economic exposure and directrate for the immediate holding.
totalrate folds in stakes held through intermediate entities, which is
normally what you want when attributing a subsidiary's activity upward. (Data
cut 2026-05-16.)
The coverage is substantial: 191,631 distinct subsidiaries and 23,393 associates and joint ventures, plus a large body of other related parties. (Data cut 2026-05-16.)
Check your units before you multiply. Ownership-graph stakes (ratio,
vote_ratio, directrate, indirectrate, totalrate) are decimal fractions
from 0 to 1. The shareholder-register ratio is a percentage from 0 to 100.
Convert before comparing across tables, or a weighting step is out by a factor
of one hundred and still returns numbers. (Data cut 2026-05-16.)
Rolling up a tree, rather than a group
To group product or segment nodes to any level, use the ancestors path rather
than recursively resolving parent. It gets you to any level in one step.
(ChinaScope Product Taxonomy, as described in the July 2026 profile.)
Two cautions when you do. Disclosure depth is uneven, because companies report
each line of business at a single chosen depth, so upper levels 1 to 3 are dense
and levels 5 and below are sparse. Aggregation reconstructs upper totals but
cannot invent detail a company never disclosed. And in a bitemporal panel like
C2C (PIT), one period appears many times on purpose, so grouping without an
as-of filter double-counts before you have rolled up anything at all. Filter
publish_date <= as_of, take the latest row per key, then aggregate. (Data cut
2026-08-22.)