c# - 从 XBRL 文档中获取特定值

标签 c# .net xbrl arelle

我一直在使用Gepsio尝试通过他们的 EDGAR 系统翻阅标准 SEC XBRL 文件,尽管我多次尝试解决这一问题,但似乎我还是不知所措。

当您从任何文档中提取事实,并且您有兴趣检索“收入”时,根据特定的 US-GAAP 标准,可能有多达 200 个事实及其关联的收入标签。虽然每个 ID 都是唯一的,但弄清楚哪个 ID 相当于您想要的特定收入类型似乎并不是很简单。我感兴趣的收入与合并运营报表中显示的收入相同,即净收入,而不是文件中一些模糊的其他类型的收入。然而,XBRL 查看者喜欢 Arelle每次都正确,尽管浏览了 Arelle 的源代码,我也无法弄清楚他们使用的逻辑。

任何能够引导我理解这一点的正确方向的人将不胜感激。

最佳答案

你需要找到具有正确概念、时期和实体的事实。

  • 找到这个概念并不像听起来那么简单。虽然理论上应该是 us-gaap:Revenues,但许多申报人并不使用该概念,而是“滥用”另一个美国 GAAP 概念,或者(在最坏的情况下)用自己的方式编造自己的概念命名空间。 Charles Hoffman 花费了大量时间对此进行投资和设计 report frames解决此问题并允许跨文件管理器进行比较。报告框架包括映射,例如 this one您可以在其中看到至少 77 个不同的概念(us-gaap:Revenuesus-gaap:SalesRevenueNet...)用于报告收入。查理的方法是选择列表中第一个被报告的。对于某些概念(我认为收入不会发生这种情况),事实甚至可能没有得到明确报告,因此需要计算。一些 XBRL 供应商已与 Charlie 合作,并将此报告框架功能集成到他们的产品中。

  • 实体是最简单的,因为在绝大多数情况下(它甚至可能是强制性的,但我找不到这方面的说明),文件中的所有事实都共享同一个实体。对于 SEC 备案,它是公司的 CIK(具有 CIK 计划)。尽管如此,在 SEC 文件中,还有一个附加维度 (dei:LegalEntityAxis),您必须检查该维度是否不存在或设置为其默认值以过滤掉任何子公司。

  • 这个时期有点复杂。为此,您需要找到 dei:DocumentPeriodEndDate 上报告的另一个事实,该事实为您提供报告结束的期间,即 Assets 负债表日期。使用此日期,您可以筛选候选事实并选择在该日期结束的事实,以及持续时间为一年、一个或几个季度的事实。

  • 还可以报告特定场景或分支机构的收入。在这种情况下,只需过滤掉具有任何进一步维度的事实即可。

通常情况下,如果您根据上述所有内容(概念、实体、时期、额外维度)过滤事实,您应该只留下一个,因为冲突非常罕见,而且常常是错误。

另一种查找概念的不同方法是 look at the networks in each filing以编程方式查找您提到的合并操作的语句,但这也不是微不足道的,因为标签可能会有所不同。然后,您也许能够推断出收入概念,并且(缺乏)定义网络将确保维度(如果有)正确。这可能就是阿雷尔找到它的方式。

关于c# - 从 XBRL 文档中获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44356106/

相关文章:

c# - LINQ to Entities 无法识别方法 'System.String ToString()' 方法并且此方法无法转换为存储表达式

c# - 是否有不使用连续内存的开源 MemoryStream 实现?

.net - ToLowerInvariant 错误时的实例

c# - 如何在网络方法中访问 session ?

c# - 在特定时间部署版本

c# - 将带有 QueryString 的 URL 传递给 UIWebView

c# - LiveCharts 基础知识——如何画线?

python - 如何通过arelleCmdline.py安装插件

python - 将 xBRL 报告实例映射到 JSON #xbrl #python #json

r - XBRL 解析文件中不存在架构文件