有没有一种程序化的方法来确定 SEC 文件的最新上下文?

Is there a programmatic way to determine what the most recent context is for an SEC Filing?

如果我正在尝试阅读美国证券交易委员会的 XBRL 文件,有没有办法以编程方式确定最新的上下文是什么?或者上下文的命名是否遵循特定的模式?

例如,如果我试图阅读 AAPL Q2 2020 SEC 文件,有许多不同的上下文,例如。 FI2019Q4、FD2020Q2YTD、FI2020Q2、FD2019Q2YTD、FI2019Q4、FD2020Q2QTD 等

我只想要最新的季度数据,即。 FI2020Q2,但是我还想要一种以编程方式确定这一点的方法,这样我就不必手动决定我对每个 SEC 文件感兴趣的上下文。

是否有系统的方法来执行此操作,或者上下文的命名是否遵循某种模式?

对于 SEC 文件,应该有一个 dei:DocumentType 事实。这一事实的期间将对应于当前报告期间。然后,您可以找到具有相同时期或相同结束日期(即时事实)的其他事实。

参见 Edgar Filer Manual Volume II

的第 6.5.19 节

上下文的名称只是唯一的标识符,以允许它们被事实引用。虽然某些工具在分配它们时可能遵循约定,但您不应试图从它们推断出任何含义。

另请注意,并非同一时期的所有事实都在同一背景下。一些事实可能有额外的维度,因此会使用不同的上下文。

与概念 dei:DocumentPeriodEndDate 关联的事实具有对应于最后余额 sheet 日期的日期时间值。还有一个与概念相关的事实 dei:CurrentFiscalYearEndDate 告诉您会计期间(天和月)的结束时间。

这两个值一起可以让您推断出季度和年度周期。

例如,对于 this filing,我们有:

文档周期结束日期:2020-06-26

当前财政年度结束日期:--12-31

你可以推断:

  • 这是第二季度
  • 携带余额 sheet 值的事实应该具有即时周期(日期)2020-06-26(还有其他即时周期为 2019-12-31、2019-06-26 , ... 如果再次报告以前的期间)
  • 载有第二季度损益表和现金流量表价值的事实的粗略持续时间为 2020-03-31 至 2020-06-26,年初至今为 2020-01-01 至 2020-06-26,等等

请注意,您可能需要 add/remove 从开始和结束期间算起几天,这需要一些反复试验代码才能找到那些具有归因于 Q2、FY 的“有意义”时期的事实, 年初至今等

与事实关联的瞬间和持续时间段的解析是间接,意味着事实携带的上下文id(如FI2019Q4)允许您查找上下文和找到里面的时期。我不建议尝试理解上下文 ID,因为每个文件管理器可能使用不同的约定。相反,您需要取消引用上下文 ID 并查看实际的 XBRL 周期。