微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将xBRL报表实例映射到JSON #xbrl #python #json

如何解决将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 数据框就像一个魅力。

您可以提供任何一个

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

  2. 文件的 HTML 文件的 URL,例如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 即可发出简单的 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 举报,一经查实,本站将立刻删除。