python - 将 XBRL 报告实例映射到 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 的命令提示符用法的文档已过时且不适用于 Python 3.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 一旦可用,就会更新到最终版本。
推荐阅读
- r - R 每个向量条目的所有排列
- android - 浮动操作按钮在灰色背景上显示为白色块
- .net - 服务器节点收到消息后如何重启客户端节点(Apache Ignite .Net 2.8.1)
- parsing - 从网站的研究中获取所有 url 并使用 JSOUP 连接到这些 URL
- php - 通过未配置为对实体进行级联持久操作的关系找到了一个新实体
- jasmine - 'expect(...).withContext is not a function'错误使用量角器
- google-cloud-platform - GCP 作曲家环境设置 - 源存储桶
- c# - .NetCore 从 IFormFile 获取视频元数据
- ios - 如何制作 UICollectionView 全局页眉和/或页脚?
- python - 让 Python 以可靠的方式从 C# 读取返回码