#7645·OpenBB

SEC standardized financials: per-share fields empty for issuers that file only class-dimensioned facts (COKE, BRK-B, UHAL)

Author: eivanovski-labCreated Aug 24, 2026Updated Aug 24, 2026

Describe the bug

get_standardized_financials (openbb-sec) returns None for basic_eps, diluted_eps, weighted_ave_basic_shares_os and weighted_ave_diluted_shares_os for issuers that tag these concepts only with us-gaap:StatementClassOfStockAxis. The SEC companyfacts API the fetcher reads carries only undimensioned facts, so for these issuers the fields are empty even though every filing carries the values.

Affected issuers (verified)

  • Coca-Cola Consolidated (COKE, CIK 317540) — nothing since FY2019 (two classes since then). Latest 10-Q files EPS 2.39 for both classes; weighted basic shares 56,517,000 (common) + 10,047,000 (Class B).
  • Berkshire Hathaway (BRK-A/B, CIK 1067983) — no per-share facts at all; files only EarningsPerShareBasic per brka:EquivalentClassAMember (17,868/quarter) and EquivalentClassBMember (11.91/quarter). No diluted concepts exist.
  • U-Haul (UHAL, CIK 4457) — two-class method (ASC 260): per-class EPS filed as EarningsPerShareBasicUndistributed + EarningsPerShareBasicDistributed; flat view carries none of it.

To Reproduce

import asyncio
from openbb_sec.utils.company_facts import get_standardized_financials
r = asyncio.run(get_standardized_financials(symbol="COKE", period="annual", fiscal_years=[2025]))
[f for f in r.income_statement if f.tag in ("basic_eps", "diluted_eps")]  # values None / rows absent

Note

The package already contains everything needed: XBRLParser.parse_instance (xbrl_taxonomy_helper) parses the filing's extracted instance with full dimension support. A possible fix is a fallback in the standardizer: when a per-share field is empty in companyfacts, read the latest instances and aggregate the class members (basic counts sum across classes; a senior class's diluted count already includes converted juniors and must not be summed). We currently do this downstream with parse_instance + declarative per-issuer rules and would be glad to retire that shim.

Related: #7634 (missing debt tag names in the balance-sheet schema).