Skip to content

SEC 13F-HR: empty filings (zero holdings) crash with ValidationError on weight #7618

Description

@RadioOrc

[Bug] SEC 13F-HR: empty filings (zero holdings) crash with ValidationError on weight

Describe the bug

obb.equity.ownership.form_13f (provider sec) raises a pydantic ValidationError for any 13F-HR filing with no reportable holdings. Managers that have exited all positions still must file, and EDGAR requires the information table to contain at least one row, so these filings carry a single placeholder entry (nameOfIssuer=NA, cusip=000000000, value=0).

ValidationError: 1 validation error for SecForm13FHRData
weight
  Input should be a valid number [type=float_type, input_value=None, input_type=NoneType]

Root cause

openbb_sec/utils/parse_13f.py (parse_13f_hr, ~L223):

total_value = df.value.sum()
df["weight"] = round(df.value.astype(float) / total_value, 6)

For an empty filing total_value == 0, so the division yields 0/0 = NaN. The subsequent .replace({nan: None, "--": None}) turns it into None, and SecForm13FHRData declares weight: float (not Optional) in openbb_sec/models/form_13FHR.py (~L31), so validation fails and the whole fetch dies.

How to reproduce

Thiel Macro LLC (CIK 1562087) has filed empty 13F-HRs since Q4 2025:

from openbb import obb
obb.equity.ownership.form_13f(symbol="1562087", date="2026-03-31", provider="sec")
# ValidationError: weight — Input should be a valid number

Suggested fix (one line)

df["weight"] = (
    round(df.value.astype(float) / total_value, 6) if total_value else 0.0
)

Verified locally against openbb-sec 1.6.6/1.6.7 (the affected lines are identical in main): the empty filing then returns its placeholder row with weight=0.0, and normal filings are unchanged (sum(weight) == 1.0 exactly on a 70-position filing).

Happy to open a PR with this change (together with a fix for a separate entity-mangling issue in the same parser — see companion issue).

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