Skip to content

[DATA] Balance-sheet period views replace the prior fiscal-year value with empty incidental-instant columns #1246

Description

@synfonia-llc

Data Quality Issue Details

Issue Type:

  • Incorrect financial values (wrong numbers)
  • Missing financial data (expected data not present)
  • Calculation errors (formulas producing wrong results)
  • Data inconsistency (different values for same metric)
  • Historical data problems (changes over time)

Environment

EdgarTools Import Version: 5.55.0
Distribution Metadata: 5.54.0 (stale editable-install metadata)
Source Revision: origin/main at a0ff18089c844ddfe81bd21a1c7c56f4ed629e55; executed from audit worktree HEAD 70c31469dc7e6d4b386a6f8fe4ce1276d48fca51, whose edgar/** tree is identical to origin/main
Python Version: 3.14.4
Operating System: Microsoft Windows

Financial Data Details

Company/Ticker: Global Arena Holding, Inc. (GAHC)
Form Type: 10-Q
Filing Date/Period: Quarter ended September 30, 2024
Statement Type: Balance Sheet

Specific Metric/Concept:

  • Financial line item: Total Assets
  • XBRL concept name: us-gaap:Assets

Data Issue

Expected Value:

  • September 30, 2024: 744,276
  • December 31, 2023: 587,742
  • Source: checked-in filing instance and the default EdgarTools balance-sheet DataFrame
  • Page/section reference: Condensed Consolidated Balance Sheets

Actual Value from EdgarTools:

  • Three Recent Periods returns 744,276, NaN, NaN for September 30, August 22, and August 13, 2024.
  • Current vs. Previous Period returns 744,276, NaN for September 30 and August 22, 2024.
  • The populated December 31, 2023 value is omitted from both named views.

Code to reproduce:

from pathlib import Path

from edgar.xbrl import XBRL

root = Path("data/xbrl/datafiles/gahc")
xbrl = XBRL.from_files(
    instance_file=root / "Form10q_htm.xml",
    schema_file=root / "gahc-20240930.xsd.xml",
    presentation_file=root / "gahc-20240930_pre.xml",
    calculation_file=root / "gahc-20240930_cal.xml",
    definition_file=root / "gahc-20240930_def.xml",
    label_file=root / "gahc-20240930_lab.xml",
)

statement = xbrl.statements.balance_sheet()
print(xbrl.get_period_views("BalanceSheet"))

for view in (None, "Three Recent Periods", "Current vs. Previous Period"):
    frame = statement.to_dataframe(period_view=view, view="summary")
    assets = frame.loc[frame["concept"] == "us-gaap_Assets"]
    print(view, assets.to_dict(orient="records"))

Cross-Verification

Have you verified this issue with:

  • Multiple time periods for same company
  • Multiple companies with same issue
  • Direct SEC filing comparison
  • Other financial data sources

Affects multiple periods/companies?

  • Companies tested: GAHC
  • Time periods tested: September 30, August 22, August 13, and December 31, 2023/2024 instants in the same filing
  • Pattern observed: filing-wide incidental instants outrank a populated prior-fiscal-year balance-sheet instant only when a named view is selected

Expected Behavior

What should happen:

Named balance-sheet views should select instants that contain the resolved balance sheet's facts. The meaningful current-versus-prior comparison in this filing is September 30, 2024 versus December 31, 2023.

Data validation rules:

  • A named balance-sheet column should have sufficient facts from the resolved balance-sheet role.
  • Selecting a named view should not replace a populated comparable period with a statement-empty instant.
  • us-gaap:Assets should remain 744,276 and 587,742 for the two populated comparison dates.

Additional Context

The raw instance confirms the period-sufficiency distinction directly. 2024-09-30 has a filed us-gaap:Assets fact of 744276, and 2023-12-31 has a filed us-gaap:Assets fact of 587742. The sole 2024-08-13 instant context contains only DebtInstrumentFaceAmount; the sole 2024-08-22 instant context contains only DebtInstrumentFaceAmount and DebtInstrumentConvertibleConversionPrice1. Neither incidental date has an Assets fact.

The first divergent boundary is get_period_views(). It starts from all reporting_periods, filters only by period type and document end date, sorts by date, and passes that filing-wide list directly to generate_period_view().

That path has no resolved-statement role, concept-membership, or fact-sufficiency check. Any recent instant used by a cover-page, transaction, or disclosure fact can therefore become a balance-sheet column.

The default selection path does perform statement-aware filtering in _filter_periods_with_sufficient_data(), which is why the default output retains December 31. Named views bypass that safeguard.

This is distinct from Draft 34's period-view dictionary-key mismatch. Here the documented period_keys are consumed correctly; the keys themselves identify statement-empty periods.

Impact Assessment:

  • Minor (affects specific edge case)
  • Moderate (affects common use cases)
  • Major (affects core financial calculations)
  • Critical (produces completely wrong results)

A live search of the open and closed GitHub issue tracker is required immediately before submission.


Data quality issues are high priority and will be verified against official SEC filings. Accuracy is fundamental to EdgarTools.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions