Учет инвестиций в гугл-таблицах №5 — выгружаем котировки облигаций: ОФЗ, муни, корпораты и евробонды

Продолжаем использовать гугл таблицы для учета инвестиций (начало здесь). Разберем как можно автоматически получать котировки и название облигаций, обращающихся на Московской бирже. На что обратить внимание и некоторые особенности получения данных и учет в гугл таблицах (Google Sheets).

Как всегда, в статье расскажу весь алгоритм и логику получения данных. Кому неинтересно, в конце есть ссылка на готовый файл-шаблон со всеми формулами.

Получаем данные по ОФЗ

Формула вызова цены по облигациям выглядит следующим образом:

=IMPORTxml("https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQOB/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,PREVLEGALCLOSEPRICE", concatenate("//row[@SECID='",A4,"']/@PREVLEGALCLOSEPRICE"))

В отличии от акций (котировки которых мы получали в этой статье), для облигаций торгующихся на Мосбирже, формула немного отличается:

  • вместо shares пишем bonds;
  • идентификатор меняем на TQOB;
  • остальное без изменений.

В ячейке (в данном примере - A4) вместо тикера (как у акций), прописываем код ценной бумаги.

На примере ОФЗ с погашением в 2034 году. На сайте Мосбирже ищем карточку нужного инструмента. Смотрим код ценной бумаги (SU26225RMFS1) и идентификатор торгов (TQOB) - ссылка.

Код облигации

Обратите внимание!

Не путать Код ценной бумаги и ISIN код. Для Мосбиржи именно для ОФЗ - это разные значения. По другим бумагами коды могут полностью совпадать.

В таблицах это будет выглядеть примерно так:

Цены ОФЗ

 

По коду ценной бумаги совсем непонятно, что это за облигации. Можно конечно прописать название вручную, но это не наши методы. Будем получать наименование бумаг автоматически.

Для вызова названия облигаций используем следующую формулу:

=IMPORTxml("https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQOB/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,SECNAME,COUPONPERCENT,MATDATE", concatenate("//row[@SECID='",A4,"']/@SECNAME"))

В итоге таблица принимает более человеческий вид.

Автоматическое получения названия ОФЗ
Учет ОФЗ в Google Sheets

Статьи в тему:

Корпоративные, муниципальные и еврооблигации

Если применить описанную выше формулу к другим бумагам (не ОФЗ), таблица будет выдавать ошибку. В чем дело?

В идентификаторе режима торгов. У ОФЗ он - TQOB, у не ОФЗ будет другой.

На примере облигаций Система с погашением в 2028 году. 

Снова ищем страницу инструмента (облигации) на сайте Мосбиржи.

Идентификатор торгов - TQCB.

Обратите внимание: код ценной бумаги совпадает с ISIN.

 

Система корпоративные бумаги

Поэтому формула для получения котировок по корпоративным облигациям будет иметь вид:

=IMPORTxml("https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQCB/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,PREVLEGALCLOSEPRICE", concatenate("//row[@SECID='",A7,"']/@PREVLEGALCLOSEPRICE"))

Для автоматической вставки правильного названия бумаги также меняем идентификатор на TQCB:

=IMPORTxml("https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQCB/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,SECNAME,COUPONPERCENT,MATDATE", concatenate("//row[@SECID='",A7,"']/@SECNAME"))

Идентичный идентификатор торгов (соотвественно  и формулу) будет иметь муниципальные бумаги.


По еврооблигациям (торгующимися в валюте) в формуле используем другой идентификатор.
Для примера возьмем еврооблигации Газпрома в погашением в 2034 году.

Ищем на сайте Мосбиржи карточку инструмента (ссылка).

Узнаем Код - XS0191754729 и Идентификатор - TQOD.

Еврооблигация Газпрома

 

Соответственно формулы вызова котировок и названия у еврооблигаций будут иметь вид:

Котировки евробондов:

=IMPORTxml("https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQOD/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,PREVLEGALCLOSEPRICE", concatenate("//row[@SECID='",A13,"']/@PREVLEGALCLOSEPRICE"))

Название еврооблигации:

=IMPORTxml("https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQOD/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,SECNAME,COUPONPERCENT,MATDATE", concatenate("//row[@SECID='",A13,"']/@SECNAME"))

После всех манипуляций в гугл таблице у меня вышло вот так: вызов различных значений по четырем разным видам облигаций.

Облигации в гугл таблицах

 

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

Настройка таблицы

Котировки облигаций несколько отличаются от котировок акций. По облигациям выводится цена не рублях (долларах, евро), а в процентах от номинала.

Обычно номинал российских бумаг - 1 000. Соответственно, если в котировках ОФЗ мы видим 101,587 - это значит, что цена облигации 101,58% от номинала или 1 015,87 рублей.

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

Учет облигаций в гугл таблице
Учет облигаций в Google Sheets

Идентификаторы, код и поиск облигаций на Мосбиржи

Запомнить идентификаторы торгов для разных видов облигаций:

  • TQOB - ОФЗ;
  • TQCB - муниципальные и корпоративные;
  • TQOD - евробонды.

У всех облигаций (кроме ОФЗ), код ценной бумаги совпадает с ISIN.  ISIN код всегда указывается рядом с названием бумаги (в приложении брокера). Это я к тому, что не обязательно каждый раз искать на Мосбирже карточку облигаций.

Файл-шаблон

Оставляю ссылку на мой файл со всеми вышеперечисленными примерами и рабочими формулами. Файл работает только на просмотр (без права редактирования).

Чтобы утащить к себе, в верхнем меню выбираем "Файл - > Создать копию". Сохраняем и дальше тираним и переделываем под себя.

Очень приветствуются замечания, пожелания и советы по улучшению.

Удачных инвестиций!

Оцените статью
Записки инвестора
Добавить комментарий

  1. Дим_Димыч

    По моему проще настроить выгрузку из квика.

    Ответить
  2. Дмитрий!

    Не все пользуются квиком. Не везде можно выгрузить. Тут отслеживается в онлайне и в легкой табличке!
    Класс! Искусство! 🙂

    Ответить
  3. Денис

    Еще бы понять как вытащить НДК?

    Ответить
    1. Андрей

      НКД можно получить из столбца ACCRUEDINT:
      =IMPORTxml(«https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQOB/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,ACCRUEDINT», concatenate(«//row[@SECID='»,A4,»‘]/@ACCRUEDINT»))

      Ответить
  4. Михаил

    Пробую скопировать отдельную ячеек в свою таблицу. Пишет ошибка
    Скопировал всю таблицу. Попробовал уж в данной таблице скопировать ячейку , ниже , в пустую ячейку
    Но результат N.A.

    Ответить
  5. александр

    PREVADMITTEDQUOTE Признаваемая котировка предыдущего дня. (Устарело) (Не рассчитывается с 2023-01-30)

    заменяйте на PREVLEGALCLOSEPRICE (Официальная цена закрытия предыдущего дня). Иначе не работает таблица

    Ответить
    1. Максим (vse-dengy) автор

      Спасибо Огромное добрый человек! Поменял, все заработало!

      Ответить
  6. Vadim

    Таблица не подгружает котировки. Не пробовали корректировать?
    Было очень удобно)))

    Ответить
    1. Максим (vse-dengy) автор

      Поправил. Сейчас все работает.

      Ответить
  7. Виктор

    В моей таблице котировки не отображает, хотя дня три назад всё прекрасно работало. Вношу вашу формулу в свою таблицу не работает (ссылка недействительна) код офз вношу в вашу таблицу работает. Настройки таблиц одинаковые, ячейку с кодом офз указываю верно. При переносе в формуле меняется только ячейка… и не работает, хотя один раз отобразила и всё. Сравнил уже посимвольно. На что ещё обратить внимание?

    Ответить
  8. Максим

    Здравствуйте,а можно добавить столбец,с доходностью актуальной,и кол-вом купонов в год?

    Ответить
    1. Анна

      Актуальная доходность в процентах хранится в столбце YIELDATPREVWAPRICE
      Кол-во купонов в год надо считать, есть данные по длине купонного периода в днях — COUPONPERIOD.

      Ответить
  9. Павел

    Подскажите как выгрузить дату погашения? и полный купонный доход?

    Ответить
  10. Владислав

    что такое А4, А7, А13?

    Ответить
  11. Владислав

    так все-таки, каким образом выбрать именно ту ячейку А4, А7 или А13 со страницы?

    Ответить
  12. Alex

    Добрый день, если я захочу выгрузить в 2 клетки подряд одной формулой сразу и название и цену, как будет выглядеть формула?

    Ответить
  13. Владимир

    1. В функциях гугл-таблиц разделителем параметров является символ «;» , а не запятая, как нам дает уважаемый автор. Иначе адреса ячеек, например А4, воспринимаются как произвольный текст, что трактуется как синтаксическая ошибка. Помните !
    2. А где можно взять все ДЕЙСТВУЮЩИЕ обозначения и назначения колонок в запросе, чтобы самому проектировать вид гугл-таблицы. Например, SECID, LAST, ACCRUEDINT, COUPONPERIOD и т.д. ?

    Ответить
    1. Дмитрий

      https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQCB/securities.xml

      подождать надо — не сразу грузится

      Ответить
  14. Игорь

    Добрый вечер! А ссылочку на таблицу можно обновить? Текущая не работает, увы…

    Ответить