公司可以创建自己的概念。结论AccruedAndOtherCurrentLiabilities
是由tesla
生成的。使用python代码从ssec的RESTful api中获取所有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
是一个美国gaap概念,请用代码进行验证。
'Revenues' in us_gaap_concepts
True
验证AccruedAndOtherCurrentLiabilities
不在us_gaap_concepts中。
'AccruedAndOtherCurrentLiabilities' in us_gaap_concepts
False
那么,如何从sec的数据api或某个文件中获取所有公司定制的概念呢?
如果我理解正确,获得公司美国公认会计原则分类法概念扩展的一种方法(可能还有其他方法(是执行以下操作。请注意,数据是xml格式,而不是json格式,因此需要使用xml解析器。
例如,如果你查看该公司2020年的10-K文件,你会注意到,在底部,有一个数据文件列表,第一个被描述为";XBRL分类扩展方案;并命名为";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',
等等。