Skip to content

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

Description

@eivanovski-lab

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions