ADR-0028 — Lever B: per-sub-industry denominator exclusion for asset managers
Date: 2026-05-24 Status: Accepted Decider: Rob
Context
Rules E1 (financed emissions & banking framework membership) and G3-PRB (UN Principles for
Responsible Banking signatory check) carry applicable_sectors = '40' (Financials), so they are
evaluated for all GICS sector-40 institutions — including GICS 40203010 (Asset Management &
Custody Banks). NZBA (sub-rule E1.1) and PRB are bank-only frameworks; asset managers structurally
cannot join them. The A(ii)/ADR-0022 OMIT sentinel already makes the score impact neutral (both
rules score OMIT → raw_score=2.5 → excluded from pillar weighted mean). However:
- Denominator distortion: E1 and G3-PRB remain in the research-depth denominator for asset managers, reducing their apparent coverage percentage.
- Display distortion: both rules appear in the institution detail rule list showing OMIT/neutral outcomes that can never become positive for asset managers.
NZBA and PRB scrapers DO run for asset managers (returning boolean=0, coverage_pct=1) because
the scrapers lack sub-industry-level filtering. The OMIT sentinel masks the score impact but the
denominator and display are still polluted.
Decision
Implement Lever B: per-sub-industry denominator exclusion, extending the is_aggregate mechanism
(ADR introduced in cycle 14 D1, migration 040).
Schema change (migration 058)
Add denominator_exclude_sub_industries TEXT DEFAULT NULL to the rule table. Semantics: when an
institution's gics_sub_industry_code appears in this comma-separated list, the rule is excluded
from the research-depth denominator — identical to is_aggregate = 1 but scoped to specific GICS
sub-industry codes.
Set denominator_exclude_sub_industries = '40203010' on rules E1 and G3-PRB.
Code changes
src/scoring/pillar.js: adddenomExcluded()helper; extendnonAggApplicablefilter to also exclude rules wheredenominator_exclude_sub_industriescontains the institution'sgics_sub_industry_code.src/scoring/composite.js: same extension incomputeCoverage().src/routes/institution.js: add SQL WHERE clause to suppress denominator-excluded rules from the sub-criterion display for matching institutions.
Score impact
None. E1 and G3-PRB contribute OMIT scores for all current 40203010 institutions (OMIT rows are
already excluded from the pillar weighted mean). The composite score_value is byte-identical
before and after rescoring (XOR hash of all 79 institutions: 12760 in both states).
Coverage change
Research-depth percentages for 40203010 institutions change because E1 and G3-PRB were
coverage_pct = 1 (scrapers ran and returned boolean=0). Removing them from both numerator and
denominator follows the same logic as is_aggregate — the is_aggregate pattern removes a rule from
both counts, not just the denominator. Net effect: coverage_pct falls slightly (example: BlackRock
46.2% → 41.7%). The intent is denominator correctness, not coverage maximisation; the task
description's "rise" expectation assumed E1/G3-PRB would have coverage_pct=0, which is not the
case since the scrapers do run for asset managers.
Rationale
NZBA and PRB are explicitly bank-member frameworks. Asset managers hold AUM but do not have loan books in the NZBA sense and cannot be PRB signatories. Including these rules in their denominator overstates the scope of their expected research coverage and clutters their displayed rule list with structurally-neutral outcomes.
The fix mirrors D1's is_aggregate logic: declare a rule non-applicable for a given sub-industry
class via a data column, not code branching. The column is general-purpose and can accommodate
future per-sub-industry exclusions without additional schema changes.
Alternatives considered
Hardcode in JS — rejected; violates the established data-driven pattern and makes future exclusions harder to audit.
New rule_denominator_exclusion table — overkill for a simple column; the sparse comma-separated
format matches applicable_sectors and keeps the mechanism in the same table.
Exclude only from display, not denominator — partial fix; the denominator distortion would remain.
Affected institutions
GICS 40203010 (Asset Management & Custody Banks): BlackRock, M&G, Invesco, Man Group, TIAA, Ninety One, Colchester Global Investors, Heptagon Capital, Schroders, Trium Capital, Octopus Investments (11 institutions as of 2026-05-24).