Расхождение в данных EDGAR

Мой вопрос касается источника правды об ЭДГАРЕ.

Я разрабатываю для себя простой сервис по выбору акций на основе фундаментальных данных. Поэтому я зашел на сайт 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, и мои вопросы:

  • можно ли получить полные данные? Если да, то как?
  • есть ли лучший способ или API, чем получение json напрямую из ЭДГАР?
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это код, который будет получать факты с помощью движка 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.

Спасибо! Я посмотрю на это. Тогда у меня есть два вопроса: почему в json нет данных, и второй связан с этим: источником истины на самом деле являются документы, верно?

Leonardo Lanchas 08.06.2024 20:44

Пожалуйста! 1. JSON в вашей ссылке содержит только метаданные (список всех заявок). Могут быть и другие части EDGAR API, которые возвращают значения фактов, но я не уверен, насколько они сложны (т. е. разрешены ли контексты или нет). 2. Да, источником истины являются документы, XML для старых, Inline XBRL для новых. Однако существует также несколько синтаксисов для файлов, включая JSON и CSV, и можно конвертировать между синтаксисами туда и обратно. Например, встроенный файл XBRL автоматически преобразуется EDGAR в файл XML, и оба становятся доступными.

Ghislain Fourny 08.06.2024 21:01

Механизм Brel напрямую загружает XML-файлы и извлекает из них данные. Не рекомендуется пытаться читать файлы напрямую в формате XML из-за сложности синтаксиса. Процессор XBRL более адекватен, точно так же, как люди используют Excel и не открывают файлы .xslx напрямую как XML.

Ghislain Fourny 08.06.2024 21:06

Другие вопросы по теме

Похожие вопросы

Как функция среднего значения в этом коде выдает правильный результат, если кажется, что она выводит логическое значение, а не число с плавающей запятой?
Очистка данных с веб-сайта с бесконечной прокруткой и динамически загружаемым контентом с помощью Python Selenium
Извлеките элементы SVG и заголовок из HTML с помощью BeautifulSoup
Использование параметра «order by» в пользовательском запросе SQLAlchemy завершается неудачно
Я создал скрипт для установки флажка. После нажатия на флажок открывается новая вкладка, но флажок остается снятым
Невозможно подключить мою базу данных SQL к FastAPI и SQL SqlAlchemy
Позиционные аргументы во вложенных функциях
Интерпретатор LeetCode Python дает ответ, отличный от локального интерпретатора
Команды в моем процессоре Discord Python не запускаются, ошибок нет, они просто не выдают результат
Пакеты langchain_community и langchain выдают ошибку: отсутствует 1 обязательный аргумент, содержащий только ключевое слово: 'recursive_guard'