SEC 13F-HR: 空申报 (持有量为零) 在权重计算时出现 ValidationError 错误
作者: RadioOrc创建于 2026年7月31日更新于 2026年7月31日
[Bug] SEC 13F-HR: empty filings (zero holdings) crash with ValidationError on weight
问题描述
obb.equity.ownership.form_13f (提供者 sec) 为任何 13F-HR 表单 (没有可报告的持仓) 都会引发 pydantic ValidationError。退出所有持仓的经理仍然需要提交,而且 EDGAR 要求信息表中至少包含一行,因此这些提交包含一个占位符项(nameOfIssuer=NA、cusip=000000000、value=0)。
ValidationError: 1 个验证错误为 SecForm13FHRData
weight
输入应为有效数字 [类型=float_type,输入值=None,输入类型=NoneType]
根本原因
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)
对于空提交,total_value == 0,因此除法结果为 0/0 = NaN。随后的 .replace({nan: None, "--": None}) 将其转换为 None,而 SecForm13FHRData 在 openbb_sec/models/form_13FHR.py (~L31) 中声明 weight: float(不是可选项),因此验证失败,整个获取操作失败。
内容来源: OpenBB-finance/OpenBB