Мой вопрос касается источника правды об ЭДГАРЕ.
Я разрабатываю для себя простой сервис по выбору акций на основе фундаментальных данных. Поэтому я зашел на сайт EDGAR и скачал всю информацию о компании. Тестируя, я понимаю, что между json и программой просмотра xbrl есть расхождения:
В качестве конкретного примера возьмем аккаунт CostOfGoodsAndServicesSold
. Что я делаю, так это разделяю отчетность на годовую и квартальную. Итак, читая годовые данные, json от EDGAR (выше) предоставляет только это (ежеквартально немного лучше, но тоже не полно):
{
"start": "2018-06-01",
"end": "2019-05-31",
"val": 1722300000,
"accn": "0001047469-19-004266",
"fy": 2019,
"fp": "FY",
"form": "10-K",
"filed": "2019-07-18",
"frame": "CY2018"
},
Хорошо, я говорю: давайте посмотрим, как это рассчитывает другой сайт. И я вижу, что они берут это из ссылки xbrl (выше), в которой есть данные (900 + 902.8), которых нет в json:
В общем, на данный момент я заблокирован. Я вижу, что в документах есть более полные данные, чем в файлах json, и мои вопросы:
Это код, который будет получать факты с помощью движка Brel (отказ от ответственности: создан нами в ETH в качестве академического проекта):
from brel import Filing
from brel.utils import open_edgar, pprint
#load the filing
filing = open_edgar(cik = "1750", filing_type = "10-K", date = "2022-05-31")
#get the concept
CostOfGoodsAndServicesSold = filing.get_concept("us-gaap:CostOfGoodsAndServicesSold")
#get all the facts associated with this concept
facts = filing.get_facts_by_concept(CostOfGoodsAndServicesSold)
#tabular display to a human (note that the API also allows processing with code)
pprint(facts)
Это результат (полученный с помощью блокнота Jupyter Lab с приведенным выше кодом):
Вы можете видеть, что это возвращает шесть фактов, соответствующих вашему снимку экрана и содержащих правильные размерные характеристики.
Брел может быть установлен с
pip install brel-xbrl
Brel — это процессор, который соблюдает принцип независимости данных Эдгара Кодда. Мы стремимся сделать его независимым от используемого базового синтаксиса (будь то XML, JSON, Inline XBRL, CSV...), чтобы оградить пользователя от физических подробностей и придерживаться модели данных XBRL.
Пожалуйста! 1. JSON в вашей ссылке содержит только метаданные (список всех заявок). Могут быть и другие части EDGAR API, которые возвращают значения фактов, но я не уверен, насколько они сложны (т. е. разрешены ли контексты или нет). 2. Да, источником истины являются документы, XML для старых, Inline XBRL для новых. Однако существует также несколько синтаксисов для файлов, включая JSON и CSV, и можно конвертировать между синтаксисами туда и обратно. Например, встроенный файл XBRL автоматически преобразуется EDGAR в файл XML, и оба становятся доступными.
Механизм Brel напрямую загружает XML-файлы и извлекает из них данные. Не рекомендуется пытаться читать файлы напрямую в формате XML из-за сложности синтаксиса. Процессор XBRL более адекватен, точно так же, как люди используют Excel и не открывают файлы .xslx напрямую как XML.
Спасибо! Я посмотрю на это. Тогда у меня есть два вопроса: почему в json нет данных, и второй связан с этим: источником истины на самом деле являются документы, верно?