如何从某些 api 或文件中获取所有非 us-gaap 概念?

How can get all non us-gaap concepts from some api or file?

允许公司创建自己的概念。概念 AccruedAndOtherCurrentLiabilities 是由 tesla 生成的。使用 python 代码从 ssec 的 RESTful api 获取所有 us-gaap 概念:

import requests
import json
cik='1318605'  #tesla's cik
url = 'https://data.sec.gov/api/xbrl/companyfacts/CIK{:>010s}.json'.format(cik)
headers = {
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"
}
res = requests.get(url=url,headers=headers)
result = json.loads(res.text)
us_gaap_concepts = list(result['facts']['us-gaap'].keys())

Revenues是us-gaap概念,用代码验证一下。

'Revenues' in us_gaap_concepts
True 

验证 AccruedAndOtherCurrentLiabilities 不在 us_gaap_concepts 中。

'AccruedAndOtherCurrentLiabilities' in us_gaap_concepts
False

如何从 sec 的数据 api 或某个文件中获取所有公司自定义概念?

如果我没理解错的话,获取公司的美国公认会计原则分类概念扩展(可能还有其他)的一种方法是执行以下操作。请注意,数据采用 xml 格式,而不是 json,因此您需要使用 xml 解析器。

例如,如果您查看该公司的 10-K filing for 2020,您会注意到在底部有一个数据文件列表,第一个被描述为“XBRL TAXONOMY EXTENSION SCHEMA”并命名为“tsla-20201231.xsd”。这就是您要查找的文件。复制 url 并开始。顺便说一句,可能可以将所有这些自动化,但这是一个不同的话题。

from lxml import etree
import requests

#get the file
url = 'https://www.sec.gov/Archives/edgar/data/1318605/000156459021004599/tsla-20201231.xsd'
headers = {
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"
}
req = requests.get(url,headers=headers)

#load it into lxml for parsing
doc = etree.XML(req.content)

#search for the customized concepts
tsla_concepts = doc.xpath('//*[@id[starts-with(.,"tsla_")]]/@name')
tsla_concepts

您将获得包含 328 个自定义概念的列表。您的 AccruedAndOtherCurrentLiabilities 位于顶部附近:

['FiniteLivedIntangibleAssetsLiabilitiesOther',
 'IndefiniteLivedIntangibleAssetsGrossExcludingGoodwill',
 'IndefiniteLivedIntangibleAssetsOtherAdjustments',

等等