Здравствуйте, уважаемые читатели. В наше время очень важно уметь инвестировать или хотя бы начать пытаться в это направление, ведь если ты не инвестируешь, то теряешь деньги (иногда они теряются как раз из-за инвестиций). Один из способов инвестирования – покупка ценных бумаг. Одна из самых простых бумаг – облигации федерального займа (ОФЗ). Такие облигации выпускает государство, а именно — Министерством финансов РФ. Проще говоря, мы, как покупатели таких ценных бумаг, даем деньги в долг государству, но не просто так, а за выплату процентов (купонов) по бумаге или продавая ценную бумагу дороже, чем мы ее изначально купили. ОФЗ могут быть нескольких видов, но в этой статье мы будем затрагивать только ОФЗ-ПД (с постоянным купонным доходом).
Вашему вниманию предоставляется пример построения отчета, позволяющего в удобном виде получать информацию о доходности ОФЗ за выбранный период времени. Данные собираются с помощью API Московской Биржи.
Порядок использования Биржевой информации
P.S. Данная статья не является индивидуальной инвестиционной рекомендацией, а рассказывает лишь о возможностях работы с API в 1С и СКД.
В результате можно реализовать что-то подобное (по правилам МосБиржи сам отчет предоставляться не будет) :
Возможны 2 варианта подключения к серверу Московской Биржи:
- Подключение без аутентификации;
- Подключение с аутентификацией (по подписке).
Отличие заключается во времени предоставления биржевой информации. Если подключение происходит без аутентификации, то итоги торгов и ход торгов в режиме online недоступны (предоставляются с 15-минутной задержкой).
Более подробно ознакомиться с принципами работы, доступными методами и метаданными можно тут: Программный интерфейс к ИСС. В этой статье будет приведена только краткая сводка необходимых данных, которые нужны для разработки отчета.
Домен для подключения: http://iss.moex.com
Взаимодействие с сервером осуществляется с помощью протокола HTTP на архитектуре RESTful.
Все запросы, доступные в справочнике (ознакомиться с ними можно по прикрепленной выше ссылке), принадлежат к одному из пространств имен:
- /iss (данные Торговой системы);
- /iss/history (данные итогов торгов. Исторические данные по результатам торгов являются доступными только по подписке).
В данной статье нам не нужны данные итогов торгов, поэтому в запросах мы будем использовать только пространство имен iss.
Реализация метода для подключения к API Московской Биржи:
Соединение = Новый HTTPСоединение("iss.moex.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(ЗапросНаСброкеЧитайтеНиже);
Ответ = Соединение.ВызватьHTTPМетод("GET", Запрос);
В результате получаем ответ от сервера в виде объекта HTTPОтвет. Если в ответе код состояния = 200, значит запрос был успешно получен и обработан.
Для получения данных по ОФЗ нам потребуется запрос следующего вида:
Примеры запросов с картинки:
1. https://iss.moex.com/iss/engines.json Определяем engines
2. https://iss.moex.com/iss/engines/stock/markets.json Определяем markets
3. https://iss.moex.com/iss/engines/stock/markets/bonds/boards.json Определяем boards
Итоговый запрос имеет следующий вид:
https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQOB/securities.json (Данные получаем в JSON формате)
Реализация отчета
Все действия будут реализованы в методе ПриКомпоновкеРезультата в модуле объекта отчета. После получения ответа от сервера и преобразования JSON-данных приступим к обработке результата.
Имена колонок и их расшифровка:
Данные, хранящиеся в свойстве data структуры securities, имеют следующий вид:
В целом этих данных вполне достаточно. Если мы знаем, под каким номером какое значение находится (номер индекса получаем из свойства columns), то другие свойства структуры можно не анализировать. Мы просто обходим массив и по номеру индекса получаем нужные нам значения.
Далее нам осталось только передать получившуюся таблицу значений в качестве внешнего источника:
Формулы расчета доходности
Тут ничего сложного нет, формулы расчета предоставляет Московская Биржа, их можно найти по ссылке https://www.moex.com/ru/bondization/calc, дополнительно можно проверить получившийся результат с расчетами Московской Биржи. Давайте рассмотрим пример получения и расчета НКД. НКД – накопленный купонный доход. У ОФЗ есть периоды выплат купонных доходов (чаще всего – 2 раза в год). Длительность одного купона может равняться 182 дням. Сумма одного купона делится на количество дней между выплатами (на количество дней жизни купона). Если вдруг владелец ценной бумаги решил ее продать, то ему причитается накопленная сумма купона (С даты выплаты предыдущего купона по дату продажи).
Сумма НКД в таблицу securities (колонка ACCRUEDINT) рассчитывается на следующий день.
Если вдруг понадобится узнать НКД на текущую дату, то можно воспользоваться следующей формулой:
Далее приведен пример формулы, рассчитывающую номинальную доходность:
Спасибо за внимание!
Вступайте в нашу телеграмм-группу Инфостарт