如何解决将xBRL报表实例映射到JSON #xbrl #python #json
我希望将xBRL报告实例(特别是由SEC生成的财务报告)转换为Python词典或JSON。我已经花了一些时间使用bs4(漂亮的汤)来开发代码,但是理想情况下,我想利用开源的Arelle库。
我的理解是Arelle软件包有一个名为“ saveLoadableOIM”的插件。 xBRL.org发布了通用指南;但是,它缺少实际的实现。
http://www.xbrl.org/Specification/xbrl-json/CR-2020-05-06/xbrl-json-CR-2020-05-06.html
我发现Arelle命令提示符用法的文档已过期且不适用于python3.x。谁能通过python命令提示符提供有关如何操作Arelle的指南;具体地说,如何将SEC xBRL报告实例转换为JSON?我想要一个能够适应标准分类法(尤其是GAAP)未来变化的模型:
https://www.sec.gov/info/edgar/edgartaxonomies.shtml
具有用于将以下MSFT 10-K的xBRL报告实例映射到JSON的示例代码特别有用:
https://www.sec.gov/Archives/edgar/data/789019/000156459018019062/msft-20180630.xml
如果现有的Arelle库中有限制,我想了解这些限制。
谢谢, 雷扎
解决方法
我在Python 3下使用以下命令调用Arelle:
python3 $HOME/Arelle/arelleCmdLine.py
这是在Linux上,并假设我已经在我的主目录中以Arelle
的身份登出Arelle。
要加载插件,请使用--plugins
并将其命名为Arelle/arelle/plugin
目录(不带.py
扩展名)下的文件名。例如,--plugins=saveLoadableOIM
。然后,您可以添加--help
,并且应该会在帮助消息中看到其他选项。
这对我有用:
python3 $HOME/Arelle/arelleCmdLine.py --plugins=saveLoadableOIM --saveLoadableOIM=msft.json -f https://www.sec.gov/Archives/edgar/data/789019/000156459018019062/msft-20180630.xml
使用出色的jq提取数据的示例:
jq '[.facts[] | select( .dimensions.concept | test(":GrossProfit$") )] | sort_by(.dimensions.period)[-1]' msft.json
这将获得最新的GrossProfit值:
{
"value": "20343000000","decimals": -6,"dimensions": {
"concept": "us-gaap:GrossProfit","entity": "cik:0000789019","period": "2018-04-01T00:00:00/2018-07-01T00:00:00","unit": "iso4217:USD"
}
}
我应该注意,xBRL-JSON规范尚未最终确定,并且该JSON的格式可能会随着时间的推移而略有变化。我希望Arelle在可用后会更新到最终版本。
,我必须解决同样的问题,并开发了一个通用的 xBRL 到 JSON 转换器,它可以自动适应美国 GAAP 分类法中的任何变化。
该 API 从 10-K(和 10-Q)文件中提取所有 xBRL 财务报表,对其进行标准化并将其转换为 JSON。使用 Pandas 数据框就像一个魅力。
您可以提供任何一个
-
xBRL 文件的 URL,例如MSFT 10-K 备案 https://www.sec.gov/Archives/edgar/data/789019/000156459018019062/msft-20180630.xml
-
文件的 HTML 文件的 URL,例如https://www.sec.gov/Archives/edgar/data/789019/000156459018019062/msft-10k_20180630.htm
-
申请的登录号,例如
0001564590-18-019062
标准化财务报表包括:
- 收入报表
- StatementsOfIncomeParenthetical
- 综合收入报表
- StatementsOfComprehensiveIncomeParenthetical
- 资产负债表
- 资产负债表括号
- 现金流量报表
- StatementsOfCashFlowsParenthetical
- StatementsOfShareholdersEquity
- StatementsOfShareholdersEquityParenthetical
ConsolidatedStatementsofOperations
或 ConsolidatedStatementsOfLossIncome
等变体自动标准化为其根名称,例如StatementsOfIncome
。
示例
API 支持 GET HTTP 方法。换句话说,您只需提供 xBRL 文件 URL 即可发出简单的 GET 请求,API 将返回完全转换后的 JSON。
将 xBRL 文件转换为 JSON
GET 请求:
https://api.sec-api.io/xbrl-to-json?
xbrl-url=https://www.sec.gov/Archives/edgar/data/789019/000156459018019062/msft-20180630.xml&
token=YOUR_API_KEY
转换后的 JSON
注意:适合此处的缩短版本。
{
"StatementsOfIncome": {
"RevenueFromContractWithCustomerExcludingAssessedTax": [
{
"decimals": "-6","unitRef": "usd","period": {
"startDate": "2019-09-29","endDate": "2020-09-26"
},"value": "274515000000"
},{
"decimals": "-6","period": {
"startDate": "2018-09-30","endDate": "2019-09-28"
},"value": "260174000000"
},"period": {
"startDate": "2017-10-01","endDate": "2018-09-29"
},"value": "265595000000"
},"segment": {
"dimension": "srt:ProductOrServiceAxis","value": "us-gaap:ProductMember"
},"value": "220747000000"
},"value": "213883000000"
},"value": "225847000000"
},"value": "us-gaap:ServiceMember"
},"value": "53768000000"
},"value": "46291000000"
},"value": "39748000000"
},"value": "aapl:IPhoneMember"
},"value": "137781000000"
},"value": "142381000000"
},"value": "164888000000"
},"value": "aapl:MacMember"
},"value": "28622000000"
},"value": "25740000000"
},"value": "25198000000"
},"value": "aapl:IPadMember"
},"value": "23724000000"
},"value": "21280000000"
},"value": "18380000000"
},"value": "aapl:WearablesHomeandAccessoriesMember"
},"value": "30620000000"
},"value": "24482000000"
},"value": "17381000000"
},"segment": {
"dimension": "us-gaap:StatementBusinessSegmentsAxis","value": "aapl:AmericasSegmentMember"
},"value": "124556000000"
},"value": "116914000000"
},"value": "112093000000"
},"value": "aapl:EuropeSegmentMember"
},"value": "68640000000"
},"value": "60288000000"
},"value": "62420000000"
},"value": "aapl:GreaterChinaSegmentMember"
},"value": "40308000000"
},"value": "43678000000"
},"value": "51942000000"
},"value": "aapl:JapanSegmentMember"
},"value": "21418000000"
},"value": "21506000000"
},"value": "21733000000"
},"value": "aapl:RestOfAsiaPacificSegmentMember"
},"value": "19593000000"
},"value": "17788000000"
},"value": "17407000000"
},"segment": {
"dimension": "srt:StatementGeographicalAxis","value": "country:US"
},"value": "109197000000"
},"value": "102266000000"
},"value": "98061000000"
},"value": "country:CN"
},"value": "aapl:OtherCountriesMember"
},"value": "125010000000"
},"value": "114230000000"
},"value": "115592000000"
},"period": {
"startDate": "2020-06-28","value": "64698000000"
},"period": {
"startDate": "2020-03-29","endDate": "2020-06-27"
},"value": "59685000000"
},"period": {
"startDate": "2019-12-29","endDate": "2020-03-28"
},"value": "58313000000"
},"endDate": "2019-12-28"
},"value": "91819000000"
},"period": {
"startDate": "2019-06-30","value": "64040000000"
},"period": {
"startDate": "2019-03-31","endDate": "2019-06-29"
},"value": "53809000000"
},"period": {
"startDate": "2018-12-30","endDate": "2019-03-30"
},"value": "58015000000"
},"endDate": "2018-12-29"
},"value": "84310000000"
}
],"CostOfGoodsAndServicesSold": [
{
"decimals": "-6","value": "151286000000"
},"value": "144996000000"
},"value": "148164000000"
},"value": "18273000000"
},"value": "16786000000"
},"value": "15592000000"
},"value": "169559000000"
},"value": "161782000000"
},"value": "163756000000"
},"segment": [
{
"dimension": "us-gaap:DerivativeInstrumentRiskAxis","value": "us-gaap:ForeignExchangeContractMember"
},{
"dimension": "us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis","value": "us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember"
},{
"dimension": "us-gaap:StatementEquityComponentsAxis","value": "us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember"
}
],"value": "-584000000"
},"value": "-482000000"
}
]
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。