美国证券交易委员会(SEC)的一个主要作用是确保投资者获得可靠的信息,以便作出决定.为此,美国证券交易委员会要求公开上市的公司提交准确描绘其财务状况的报告.公司传统上以常规文本提供这些报告,但随着计算机化股票分析的普及,SEC决定采用一种更加结构化,计算机可读的格式.
美国证券交易委员会选择了可扩展商业报告语言(XBRL)作为结构化企业报告的格式.从2009年4月起,美国证券交易委员会要求企业除了提供文本外,还必须以XBRL格式提供财务报告.此后,印度和英国也采用XBRL格式进行企业报告.
XBRL基于可扩展标记语言(XML),但使用特殊的标签来标记财务数据.本节介绍XML和命名空间的基础知识,然后概述XBRL.
我喜欢把XML看作是通用的HTML.一个XML文档包含与HTML中类似的标签和属性,但XML并没有定义任何特定的标签或属性.相反,实现者可以通过创建模式来定义自己的标记和属性.模式是在特殊的XML文档中定义的,格式为XMLSchemaDefinition(XSD),因此,模式文档的后缀为*.xsd而不是*.xml.
XBRL文档是一个XML文档,它使用XBRL的标签和属性来组织其内容.这听起来似乎很简单,但一个文档可能需要访问许多不同模式的功能.例如,不同的国家有不同的报告要求,因此美国的报告与英国的报告需要使用不同的元素集.同样,不同类型的报告需要不同的模式,因此年度报告与招股说明书将使用不同的标签.
要彻底讨论美国公司年报中的标签/属性,可能会花上一本相当大的书.在这次讨论中,我的目标是介绍一些美国报告中常见的访问的命名空间.
1.基础XBRL模式--提供XBRL文档的整体结构.
2.美国文件和实体信息(DEI)--设置文件的类型和特征.
3.美国"公认会计原则"----界定了美国报告的必要内容.
4.特定实体的模式----定义了提供报告的实体的特定要素.
你不需要记住这些命名空间的元素,但你越熟悉,就越能从XBRL文档中提取数据.
为了理解基础模式提供的其他标签,你应该熟悉以下术语.
-instance-一个XBRL文档,其根元素是.
-事实--报告中的个别细节,如2000万美元.
-概念-与某一事实相关的含义,如销售商品的成本.
-实体----概念所描述的公司或个人.
-情境-将一个实体与一个概念联系起来的数据结构.
通过给上下文的ID分配一个contextRef属性,文档中以后的章节可以引用这个上下文.这在下面的标记中显示出来.
1.2.2 美国文件和实体信息(DEI)
每一份提交给SEC的XBRL文件都需要提供有关其内容的信息,提交者可以通过加入美国文件和实体信息(DEI)模式的元素来满足这一要求.提交者可以通过纳入美国文件和实体信息(DEI)模式的元素来满足这一要求.这些元素通常以dei为前缀,文档可以通过以下声明来访问它们.
本模式中定义的元素可识别XBRL报告的类型,并提供关于提交报告的实体的信息.以下标记取自eBay的一份年度报告,演示了如何使用DEI元素.





如图所示,每个DEI元素都有一个id属性和一个contextRef,它指的是文档中早期定义的元素.
为确保企业在会计报告中使用通用术语,美国财务会计准则委员会(FASB)提供了一套名为"公认会计原则"(GAAP)的标准.企业可以通过访问FASB的模式定义,在XBRL报告中提供GAAP数据.GAAP元素通常以us-gaap为前缀.
这个模式提供了数千个与会计相关的元素,
你可以通过搜索相应的us-gaap元素来查找报告中的会计数据.例如,eBay的2014年年报以下列标号确定其负债总额.
us-gaap模式有很多元素,在名称和目的上都很相似.如果你要搜索具体的会计数据,一定不要混淆这些元素.
下载XBRL文档后,你可以使用多种方法提取数据.如果你知道你感兴趣的是什幺元素,你可以对文本进行粗暴的搜索,比如us-
本节将介绍如何使用前文中介绍的BeautifulSoup包来解析XBRL.你不需要学习任何新的类或方法,但重要的是要指定你要进行XML解析.如果你安装了lxml库(pipinstalllxml),那么你可以用下面的代码创建BeautifulSoup实例.
出于某种原因,当我调用find_all方法搜索XBRL标记时,返回的列表总是空的.但是当我调用find_all方法时,如果没有参数,返回的列表就会包含代表XBRL标签的Tag.因此,我使用了如下的代码.
清单1:从IBM的年报中读取股东权益(xbrl_reader.py)
只有当SEC不改变EDGAR网站的标记时,这段代码才能正常工作.当然,标记不可能随着时间的推移而保持不变,所以请记住,你可能需要挖掘标记来更新代码.更多Python教程尽在开课吧Python教程频道