На прошлой неделе Microsoft добавили в Excel возможность сразу в программу получать данные по котировкам публичных компаний и курсам.
В сети комментируют, что среди этих данных нет ряда интересных:
- данные о финансовых показателях публичных компаний (часто нужны для бенчмаркинга)
- данные о курсах ЦБ РФ (в РФ мы все официально живем именно по этим курсам)
Собрал в заметке альтернативные сравнительно простые способы получения данных, которыми я пользуюсь.
Новые возможности Excel
Что бы новая функция заработала нужны:
- Подписка на Office 365
- Установленный Excel 2019
Тестовый шаблон с новой функциональностью можно скачать на соответствующей странице сайта Microsoft.
Финансовые показатели компаний
Уточню, почему копировать в Excel данные вручную с сервисов вроде Google Finance не подходит:
- web-форматирование данных часто требует правки в самом Excel
- разные разделители разрядов и дробных частей, которые обычно приводят к тому, что скопированные данные воспринимаются как даты или текст
- ручной труд (если надо выгрузить данные по 10-15 компаниям, то становится грустно)
В качестве основного способа использую неофициальный API Morningstar, который позволяет выгружать финансовые данные по трем формам в CSV формат.
Как использовать API описано на gist’е в Github. Чтобы получить данные, надо сформировать GET-запрос с правильными параметрами и заголовками.
Кроме финансовых показателей, в API Morningstar есть данные по котировкам. Сам не использовал - поэтому дополнить особо нечего.
Формат запроса иногда меняется: например, весной 2019 добавился заголовок с Referer. В комментариях обычно описывают изменения. Там же можно найти примеры реализации.
Я использую скрипт в Python (в основном для последующей обработки), но задача, в принципе, тривиально решается через VBA в Excel.
Данные о курсах валют ЦБ РФ
Данные о курсах ЦБ тривиально выгружаются через API Центробанка. Описание приведено на официальном сайте. Альтернативно можно парсить страницу ЦБ с официальными курсами, что может быть проще чем разбираться с XML из API.
Из особенностей - необходимость написания своей логики обработки нерабочих дней, когда курс не устанавливается. Нужно последовательно перебирать предыдущие дни, пока не будет выдан курс.
В интернете можно найти референтные макросы с реализацией алгоритма.
Из плюсов, если реализовать на VBA, то можно сразу сделать удобные пользовательские функции (UDF).