Блог им. empenoso

Где можно получить исторические фундаментальные данные по российским компаниям через API?

Добрый день!

Ищу решение для автоматизированного получения исторических фундаментальных данных по российским компаниям. Нужна история изменения P/E, P/S, ROE, EPS, выручки и других показателей за несколько лет для построения скринера и проведения фундаментального анализа.

Проанализировал два доступных API, но везде есть ограничения:

T-Invest API

GetAssetFundamentalsResponse(fundamentals=[
StatisticResponse(asset_uid='40d89385-a03a-4659-bf4e-d3ecba011782',
currency='RUB',
market_capitalization=6878249241240.0,
high_price_last_52_weeks=330.45,
low_price_last_52_weeks=219.2,
average_daily_volume_last_10_days=65639361.43,
average_daily_volume_last_4_weeks=60348494.76,
beta=0.8,
free_float=0.48,
forward_annual_dividend_yield=0.0,
shares_outstanding=21586948000.0,
revenue_ttm=8676400000000.0,
ebitda_ttm=0.0,
net_income_ttm=1580300000000.0,
eps_ttm=73.21,
diluted_eps_ttm=0.0,
free_cash_flow_ttm=0.0,
five_year_annual_revenue_growth_rate=0.0,
three_year_annual_revenue_growth_rate=33.48,
pe_ratio_ttm=4.35,
price_to_sales_ttm=0.79,
price_to_book_ttm=0.96,
price_to_free_cash_flow_ttm=0.0,
total_enterprise_value_mrq=0.0,
ev_to_ebitda_mrq=0.0,
net_margin_mrq=0.0,
net_interest_margin_mrq=0.0,
roe=23.36,
roa=2.81,
roic=0.0,
total_debt_mrq=0.0,
total_debt_to_equity_mrq=0.0,
total_debt_to_ebitda_mrq=0.0,
free_cash_flow_to_price=0.0,
net_debt_to_ebitda=0.0,
current_ratio_mrq=0.0,
fixed_charge_coverage_ratio_fy=0.0,
dividend_yield_daily_ttm=10.45,
dividend_rate_ttm=33.3,
dividends_per_share=33.3,
five_years_average_dividend_yield=8.36,
five_year_annual_dividend_growth_rate=0.0,
dividend_payout_ratio_fy=45.49,
buy_back_ttm=0.0,
one_year_annual_revenue_growth_rate=55.49,
domicile_indicator_code='',
adr_to_common_share_ratio=0.0,
number_of_employees=0.0,
ex_dividend_date=datetime.datetime(2024,7,11,0,0,tzinfo=datetime.timezone.utc),
fiscal_period_start_date=datetime.datetime(1970,1,1,0,0,tzinfo=datetime.timezone.utc),
fiscal_period_end_date=datetime.datetime(1970,1,1,0,0,tzinfo=datetime.timezone.utc),
revenue_change_five_years=181.25,
eps_change_five_years=87.02,
ebitda_change_five_years=0.0,
total_debt_change_five_years=0.0,
ev_to_sales=0.0)])

FinanceMarker.ru API

  • Плюсы: Есть фундаментальные показатели
  • Минусы: Ограничение в 400 запросов в день для частных лиц
  • Запрос: /fm/v2/stocks/{exchange}:{code} Получить данные по компании
  • Ответ:
  «ratios»: [
    {
      «active»: true,
      «capex_revenue»: 0,
      «capital»: 0,
      «changed_at»: «2025-03-13T06:04:44.836Z»,
      «code»: «GAZP»,
      «current_ratio»: 0,
      «debt_equity»: 0,
      «debt_ratio»: 0,
      «debtebitda»: 0,
      «dpr»: 0,
      «ebitda_margin»: 0,
      «ev_ebit»: 0,
      «evebitda»: 0,
      «evs»: 0,
      «exchange»: «MOEX»,
      «gross_margin»: 0,
      «interest_coverage»: 0,
      «month»: 0,
      «net_margin»: 0,
      «net_working_capital»: 0,
      «netdebt_ebitda»: 0,
      «operation_margin»: 0,
      «pbv»: 0,
      «pcf»: 0,
      «pe»: 0,
      «period»: «string»,
      «pfcf»: 0,
      «pffo»: 0,
      «ps»: 0,
      «roa»: 0,
      «roce»: 0,
      «roe»: 0,
      «roic»: 0,
      «ros»: 0,
      «type»: «string»,
      «year»: 0
    }
  ],

Пробовал смотреть в сторону:

  1. MOEX ISS API — но там только рыночные данные и котировки
  2. Парсинг сайтов — но это сложнее поддерживать, тем более я частное лицо.

Вопросы к сообществу:

  1. Какие еще API предоставляют исторические фундаментальные данные по российским компаниям?
  2. Возможно ли где-то получить поквартальную/годовую историю изменения ключевых показателей?
  3. Как вы решаете задачу фундаментального скрининга по историческим данным?
  4. Может есть какие-то платные решения с разумной ценой?

Буду благодарен за любые идеи и рекомендации!

★1
20 комментариев
Странно, что сама Мосбиржа не предоставляет такие данные. Как нет и экспорта истории котировок в CSV. Видимо там нет денег и нет специалистов это организовать.
avatar
Alexide, с дневными котировками нет проблем можно по API с Мосбиржи получать. Как и почти все показатели по облигациям например
Михаил Шардин, да, я получаю текущие котировки через API Мосбиржи.
Но нет истории котировок.
avatar
Alexide, история котировок дневных во всяком случае есть на API мосбиржи
Alexide, 

Через iss и history можно за любую дату, за любой диапазон, начиная с любой даты получить. Потом функция importxml загружает это в google-spreadsheet. Аналогично для excel/openoffice

Примеры

История рпс сделок за определенную дату
iss.moex.com/iss/history/engines/otc/markets/ndm/securities.html?date=2024-04-18

История курсов валют за период
iss.moex.com/iss/history/engines/currency/markets/selt/boards/cets/securities/USD000UTSTOM.HTML?from=2020-02-15&till=2020-02-25

История курсов валют с заданной даты
https://iss.moex.com/iss/history/engines/currency/markets/selt/boards/cets/securities/USD000UTSTOM?from=2020-02-15
avatar
__rtx, Вы утверждаете, что API Мосбиржи умеет отдавать через xml страницу историю котировок акций хотя бы за 10 лет? По разным таймфреймам.
Я разработчик ПО по главной специальности и в т.ч. отлично владею ChatGPT.
avatar
__rtx, я благодарен Вам за ответ, но Вы должны понимать, что сфера разработки ПО огромна и все знать невозможно. Я специализируюсь на разработке ПО для Windows и macOS с 1998 года. Веб-технологии знаю поверхностно.
avatar

Ещё такие нашел в закладках. Сам ничего не юзаю для автоматического получения фундаментальных данных.

rudata.info/rd-api

conomy.ru/partnership

avatar
Replikant_mih, спасибо!
Как вы решаете задачу фундаментального скрининга по историческим данным?

tradingview


Базовые показатели и основные строки из отчетности встроены в сервис. Остальное — через скрипт все что угодно можно придумать.
avatar
Кактус, вы имеете в виду язык Pine — это язык программирования, разработанный TradingView и используемый для написания собственных индикаторов и стратегий?

Михаил Шардин, 

Да. Но там и без него много встроенных возможностей.
На график можно вывести практически любую строчку из отчетности, любой макроэкон. показатель. Например,



А скрипт, например, нужен, когда какую-то срочку в отчете в долларах посмотреть (для котировок акций это можно прямо вверху в формуле прописать, а вот когда какую-нибудь строчку в отчете захотим поделить на курс доллара, на цену нефти и т.д., то уже скрипт).

Пример скрипта tradingview что бы вывести капитал сбера в долларах_с_учетом_инфляции (CPI)
//@version=5
indicator(«Мой скрипт»)
book = request.financial('MOEX:SBER','BOOK_VALUE_PER_SHARE','FQ')
usdrub = request.currency_rate('usd', 'rub')
uscpi = request.economic('US', 'CPI')
 
plot(book /(usdrub*uscpi/308))

avatar
Кактус, спасибо вам за пример!
Михаил Шардин, 

Просто я не верю, что стандартных p/bv, roe, roa достаточно. Да они уже и реализованы на куче скринингов. А чтобы искать более тонкие индикаторы, как раз tradingview хорош.
avatar
Кактус, а такую табличку с данными, по которой строится график, можно оттуда как то скачать?
avatar

теги блога Михаил Шардин

....все тэги



UPDONW
Новый дизайн