Чтение XBRL фактов - Java - PullRequest
       14

Чтение XBRL фактов - Java

0 голосов
/ 21 ноября 2018

Мне нужно получить несколько фактов из заявок SEC 10-K, например, о валовом доходе, валовой прибыли, валовой марже, операционных расходах и т. Д. Вместе с соответствующим контекстом.

Для заявок, таких как https://www.sec.gov/Archives/edgar/data/1318605/000156459018002956/tsla-20171231.xml, кажется целесообразным просто использовать XPath, чтобы найти несколько обязательных элементов и значений.Но есть такие заявки, как (https://www.sec.gov/Archives/edgar/data/19617/000001961718000057/jpm-20171231.xml), где общие расходы разбиты на разные сегменты с расширением таксономии.

Мой вопрос

  1. Какой надежный способработать с такими файлами? Скажите, если я просто хочу получить общие эксплуатационные расходы. Есть ли надежный способ найти элементы, которые мне нужно прочитать, а затем можно подвести итог?
  2. I 'мы пытались использовать библиотеку UBMatrix для чтения файлов xbrl. Она работает с некоторыми файлами (не-SEC, может считывать значения узлов), но для заявок SEC 10-K выбрасывает NPE. Может быть, существует конкретная причина, по которой происходит сбой документов экземпляра xbrls из SEC? (хотя я не проверял код библиотеки)

В любом случае, если это возможно сделать просто с помощью XPath, я бы предпочел это. Действительность документа xbrl не важна.

Ответы [ 3 ]

0 голосов
/ 27 ноября 2018

В зависимости от того, что вы собираетесь делать с данными, я бы порекомендовал взглянуть на XBRL US API .Это обеспечивает доступ API ко всем заявкам SEC и делает данные доступными в формате JSON.Вы можете получить бесплатный ключ API для «частных, некоммерческих исследований и разработок» .

Я также посмотрю на Arelle проект с открытым исходным кодом, которыйпроцессор XBRL, написанный на PythonВ частности, есть плагин для него, который будет предоставлять данные в формате xBRL-JSON , с которым вам, вероятно, будет гораздо проще работать, чем с необработанными файлами XML, и позаботится о сложностиобрабатывая их, на которые ссылается Гизлен.

0 голосов
/ 26 декабря 2018

Существует специальный API, возвращающий основы компаний в формате JSON.Вы можете использовать метод getFundamentals(symbol), предоставляемый пакетом eodhistoricaldata-api (https://www.npmjs.com/package/eodhistoricaldata-api).

. Метод возвращает квартальную и годовую финансовую отчетность (Бухгалтерский баланс, Денежный поток, Отчет о доходах), включая валовой доход,валовая прибыль, валовая прибыль, операционные расходы и т. д.

Например:

"Highlights": {
    "MarketCapitalization": 54915055616,
    "MarketCapitalizationMln": "54915.0556",
    "EBITDA": 616286976,
    "PERatio": null,
    "PEGRatio": "-1.5700",
    "WallStreetTargetPrice": "321.8900",
    "BookValue": "26.2790",
    "DividendShare": null,
    "DividendYield": null,
    "EarningsShare": "-4.8500",
    "EPSEstimateCurrentYear": "-6.5600",
    "EPSEstimateNextYear": "-2.0000",
    "EPSEstimateNextQuarter": "-1.6700",
    "MostRecentQuarter": "2018-09-30",
    "ProfitMargin": "-0.1022",
    "OperatingMarginTTM": "-0.0710",
    "ReturnOnAssetsTTM": "-0.0271",
    "ReturnOnEquityTTM": "-0.3397",
    "RevenueTTM": "17523644416.00",
    "RevenuePerShareTTM": "103.3240",
    "QuarterlyRevenueGrowthYOY": "1.2860",
    "GrossProfitTTM": "2222487000.00",
    "DilutedEpsTTM": "-10.5600",
    "QuarterlyEarningsGrowthYOY": null
},
// ...
"Income_Statement": {
        "currency_symbol": "USD",
        "quarterly": {
            "2018-09-30": {
                "date": "2018-09-30",
                "filing_date": "2018-11-02",
                "researchDevelopment": "350848000.00",
                "effectOfAccountingCharges": null,
                "incomeBeforeTax": "271320000.00",
                "minorityInterest": "1344731000.00",
                "netIncome": "311516000.00",
                "sellingGeneralAdministrative": "729876000.00",
                "grossProfit": "1523665000.00",
                "ebit": "442941000.00",
                "operatingIncome": "442941000.00",
                "otherOperatingExpenses": null,
                "interestExpense": "-169858000.00",
                "extraordinaryItems": null,
                "nonRecurring": null,
                "otherItems": null,
                "incomeTaxExpense": "16647000.00",
                "totalRevenue": "6824413000.00",
                "totalOperatingExpenses": "6381472000.00",
                "costOfRevenue": "5300748000.00",
                "totalOtherIncomeExpenseNet": "-171621000.00",
                "discontinuedOperations": null,
                "netIncomeFromContinuingOps": "254673000.00",
                "netIncomeApplicableToCommonShares": "311516000.00"
            },
            // ...
"Balance_Sheet": {
        "currency_symbol": "USD",
        "quarterly": {
            "2018-09-30": {
                "date": "2018-09-30",
                "filing_date": "2018-11-02",
                "intangibleAssets": "291476000.00",
                "totalLiab": "23409144000.00",
                "totalStockholderEquity": "4508838000.00",
                "deferredLongTermLiab": "0.00",
                "otherCurrentLiab": "2266778000.00",
                "totalAssets": "29262713000.00",
                "commonStock": "171000.00",
                "otherCurrentAssets": "158627000.00",
                "retainedEarnings": "-5457315000.00",
                "otherLiab": "2285172000.00",
                "goodWill": "65226000.00",
                "otherAssets": "1233979000.00",
                "cash": "2967504000.00",
                "totalCurrentLiabilities": "9775324000.00",
                "shortLongTermDebt": "2106538000.00",
                "otherStockholderEquity": "8271000.00",
                "propertyPlantEquipment": "19733969000.00",
                "totalCurrentAssets": "7920491000.00",
                "longTermInvestments": "17572000.00",
                "netTangibleAssets": "4152136000.00",
                "shortTermInvestments": "0.00",
                "netReceivables": "1155001000.00",
                "longTermDebt": "9726589000.00",
                "inventory": "3314127000.00",
                "accountsPayable": "3596984000.00",
                "totalPermanentEquity": "0.00",
                "noncontrollingInterestInConsolidatedEntity": "0.00",
                "temporaryEquityRedeemableNoncontrollingInterests": "0.00",
                "accumulatedOtherComprehensiveIncome": "0.00",
                "additionalPaidInCapital": "0.00",
                "commonStockTotalEquity": "0.00",
                "preferredStockTotalEquity": "0.00",
                "retainedEarningsTotalEquity": "0.00",
                "treasuryStock": "0.00"
            },
            // ...
"Cash_Flow": {
        "currency_symbol": "USD",
        "quarterly": {
            "2018-09-30": {
                "date": "2018-09-30",
                "filing_date": "2018-11-02",
                "investments": null,
                "changeToLiabilities": "895197000.00",
                "totalCashflowsFromInvestingActivities": "-560965000.00",
                "netBorrowings": "-221931000.00",
                "totalCashFromFinancingActivities": "-84218000.00",
                "changeToOperatingActivities": "98770000.00",
                "netIncome": "311516000.00",
                "changeInCash": "739728000.00",
                "totalCashFromOperatingActivities": "1391281000.00",
                "depreciation": "502825000.00",
                "otherCashflowsFromInvestingActivities": "128600000.00",
                "dividendsPaid": "0.00",
                "changeToInventory": "-55055000.00",
                "changeToAccountReceivables": "-587594000.00",
                "salePurchaseOfStock": "0.00",
                "otherCashflowsFromFinancingActivities": "42839000.00",
                "changeToNetincome": "179168000.00",
                "capitalExpenditures": "-559765000.00"
            },
0 голосов
/ 22 ноября 2018

Самый надежный способ работы с файлами XBRL - это использование библиотеки обработки XBRL.В Java есть несколько, некоторые проприетарные (платные) и некоторые с открытым исходным кодом.

На xbrl.org:

* 1006 имеется поддерживаемый список инструментов и сервисов.*

Насколько я знаю, документы SEC надежны, широко используются многими людьми и проверены на многих процессорах.Если есть проблема с UBMatrix, такая как исключение нулевого указателя, я рекомендую обратиться к ним и сообщить им, чтобы они могли ее решить.

Определенно (теоретически) возможно использовать XPath / XQuery /XSLT также, так как XBRL использует синтаксис XML, но вы должны знать, что, разрешая контексты (которые являются объединением в реляционных терминах), вы фактически заново реализуете неполный процессор XBRL с нуля, с рискомошибки и потраченные расходы, которые идут с этим.Есть много тонкостей и экосистемы спецификаций в дополнение к основной XBRL (например, Dimensions, ...), которую необходимо учитывать, чтобы не получить неправильные значения.Используя существующий процессор, вы опираетесь на усилия, которые другие люди уже вложили в это, чтобы правильно понять всю семантику XBRL: это преимущество XBRL, являющегося стандартом.

AsИ последнее замечание: точные теги XBRL, используемые для валового дохода, валовой прибыли и т. д., могут отличаться в зависимости от компании, поскольку некоторые используют свои собственные теги (расширения), а не теги US-GAAP.Кроме того, некоторые компании опускают некоторые факты, которые потребителям необходимо вычислять на основе других фактов.Эту проблему можно решить с помощью отображений и формул поверх процессора XBRL.Чарльз Хоффман поделился отчетами по этому вопросу с множеством полезных советов и поддерживает такие сопоставления в Интернете (ключевые слова для поиска: фундаментальные концепции бухгалтерского учета, рамки отчетов).

...