将 XBRL 报告实例映射到 JSON

Mapping XBRL report instances to 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

使用awesomejq提取数据的例子:

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 数据框就像一个魅力。

您可以提供

  1. URL 到 xBRL 文件,例如MSFT 10-K 归档 https://www.sec.gov/Archives/edgar/data/789019/000156459018019062/msft-20180630.xml

  2. URL 到归档的 HTML 文件,例如https://www.sec.gov/Archives/edgar/data/789019/000156459018019062/msft-10k_20180630.htm

  3. 申请的入藏号,例如0001564590-18-019062

标准化财务报表包括:

  • 收入报表
  • StatementsOfIncomeParenthetical
  • 综合收入报表
  • StatementsOfComprehensiveIncomeParenthetical
  • 资产负债表
  • 资产负债表括号
  • 现金流量表
  • StatementsOfCashFlowsParenthetical
  • StatementsOfShareholdersEquity
  • StatementsOfShareholdersEquityParenthetical

ConsolidatedStatementsofOperationsConsolidatedStatementsOfLossIncome 等变体会自动标准化为其根名称,例如StatementsOfIncome.

例子

API 支持 GET HTTP 方法。换句话说,您只需提供 xBRL 文件 URL 和 API returns 完全转换后的 JSON.

即可发出简单的 GET 请求

将 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",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "value": "260174000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "value": "265595000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ProductMember"
        },
        "value": "220747000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ProductMember"
        },
        "value": "213883000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ProductMember"
        },
        "value": "225847000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ServiceMember"
        },
        "value": "53768000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ServiceMember"
        },
        "value": "46291000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ServiceMember"
        },
        "value": "39748000000"
      },

      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:IPhoneMember"
        },
        "value": "137781000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:IPhoneMember"
        },
        "value": "142381000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:IPhoneMember"
        },
        "value": "164888000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:MacMember"
        },
        "value": "28622000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:MacMember"
        },
        "value": "25740000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:MacMember"
        },
        "value": "25198000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:IPadMember"
        },
        "value": "23724000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:IPadMember"
        },
        "value": "21280000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:IPadMember"
        },
        "value": "18380000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:WearablesHomeandAccessoriesMember"
        },
        "value": "30620000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:WearablesHomeandAccessoriesMember"
        },
        "value": "24482000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "aapl:WearablesHomeandAccessoriesMember"
        },
        "value": "17381000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:AmericasSegmentMember"
        },
        "value": "124556000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:AmericasSegmentMember"
        },
        "value": "116914000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:AmericasSegmentMember"
        },
        "value": "112093000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:EuropeSegmentMember"
        },
        "value": "68640000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:EuropeSegmentMember"
        },
        "value": "60288000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:EuropeSegmentMember"
        },
        "value": "62420000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:GreaterChinaSegmentMember"
        },
        "value": "40308000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:GreaterChinaSegmentMember"
        },
        "value": "43678000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:GreaterChinaSegmentMember"
        },
        "value": "51942000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:JapanSegmentMember"
        },
        "value": "21418000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:JapanSegmentMember"
        },
        "value": "21506000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:JapanSegmentMember"
        },
        "value": "21733000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:RestOfAsiaPacificSegmentMember"
        },
        "value": "19593000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:RestOfAsiaPacificSegmentMember"
        },
        "value": "17788000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "us-gaap:StatementBusinessSegmentsAxis",
          "value": "aapl:RestOfAsiaPacificSegmentMember"
        },
        "value": "17407000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "srt:StatementGeographicalAxis",
          "value": "country:US"
        },
        "value": "109197000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "srt:StatementGeographicalAxis",
          "value": "country:US"
        },
        "value": "102266000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "srt:StatementGeographicalAxis",
          "value": "country:US"
        },
        "value": "98061000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "srt:StatementGeographicalAxis",
          "value": "country:CN"
        },
        "value": "40308000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "srt:StatementGeographicalAxis",
          "value": "country:CN"
        },
        "value": "43678000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "srt:StatementGeographicalAxis",
          "value": "country:CN"
        },
        "value": "51942000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "srt:StatementGeographicalAxis",
          "value": "aapl:OtherCountriesMember"
        },
        "value": "125010000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "srt:StatementGeographicalAxis",
          "value": "aapl:OtherCountriesMember"
        },
        "value": "114230000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "srt:StatementGeographicalAxis",
          "value": "aapl:OtherCountriesMember"
        },
        "value": "115592000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2020-06-28",
          "endDate": "2020-09-26"
        },
        "value": "64698000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2020-03-29",
          "endDate": "2020-06-27"
        },
        "value": "59685000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-12-29",
          "endDate": "2020-03-28"
        },
        "value": "58313000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2019-12-28"
        },
        "value": "91819000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-06-30",
          "endDate": "2019-09-28"
        },
        "value": "64040000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-03-31",
          "endDate": "2019-06-29"
        },
        "value": "53809000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-12-30",
          "endDate": "2019-03-30"
        },
        "value": "58015000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2018-12-29"
        },
        "value": "84310000000"
      }
    ],
    "CostOfGoodsAndServicesSold": [
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ProductMember"
        },
        "value": "151286000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ProductMember"
        },
        "value": "144996000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ProductMember"
        },
        "value": "148164000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ServiceMember"
        },
        "value": "18273000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ServiceMember"
        },
        "value": "16786000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "segment": {
          "dimension": "srt:ProductOrServiceAxis",
          "value": "us-gaap:ServiceMember"
        },
        "value": "15592000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "value": "169559000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "value": "161782000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2017-10-01",
          "endDate": "2018-09-29"
        },
        "value": "163756000000"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2019-09-29",
          "endDate": "2020-09-26"
        },
        "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"
      },
      {
        "decimals": "-6",
        "unitRef": "usd",
        "period": {
          "startDate": "2018-09-30",
          "endDate": "2019-09-28"
        },
        "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": "-482000000"
      }
    ]
  }
}