
Как искать ликвидные облигации в 2023 году
Находим выгодные варианты парковки рублей на нужный вам срок
2022 год был сложным для инвесторов, в том числе из-за блокировки многих ценных бумаг. С рублевыми облигациями, впрочем, такой проблемы не возникло, а из-за роста ставки ЦБ их доходность сейчас выглядит довольно привлекательно.
По данным ЦБ, усредненная процентная ставка по депозитам в конце августа 2023 года была 9,66% годовых. В облигациях нельзя однозначно привести усредненное число, но по картам доходности облигаций на Московской бирже видно, что:
- Доходность гособлигаций (ОФЗ) сейчас — от 10 до 11,9% годовых.
- Доходность корпоративных облигаций — от 10 до 20% годовых. У отдельных выпусков доходность выше, но и риск, скорее всего, слишком большой.


Облигации позволяют спрогнозировать будущий доход, потому что все выплаты обычно известны заранее.
Основной проблемой мне виделось, что на Мосбирже торгуется больше двух тысяч облигаций, но интересных вариантов, которые можно купить прямо сегодня, в лучшем случае пара десятков. Остальные не особенно ликвидны, то есть по ним нет или совсем мало предложений о продаже.
Еще в 2020 году я написал скрипт, который в автоматическом режиме позволяет найти подходящие облигации. За эти годы он регулярно менялся. Сейчас я представляю его обновленную версию.
Что изменилось с прошлых двух статей
Добавился новый параметр фильтрации «Значения всех купонов известны до самого погашения?». Этот параметр важен, чтобы избежать сюрпризов. В условиях эмиссии и обращения может быть прописано, что после определенного периода ставка купона определяется эмитентом и он может установить ее произвольно.
Например, есть облигация «Боржоми Финанс 001Р-01». По облигации предусмотрено 10 купонных периодов длительностью 182 дня каждый. Ставка первого купона устанавливается по итогам сбора заявок. Ставка второго — шестого купонов равна ставке первого купона, а ставка остальных купонов определяется эмитентом. Это фактически означает, что она может быть любой.
Правда, это также отсекает облигации, у которых доходность привязана к инфляции или ставке RUONIA, например ОФЗ серии 52 или ЕАБР 003Р-08. Но мне такие бумаги неинтересны: я хочу заранее видеть поток денег, который забираю от инвестиций, чтобы спрогнозировать поступления по месяцам, а там купон заранее неизвестен.
В скрипте я хотел отфильтровать облигации, у которых нет заранее известной информации обо всех выплатах.

Добавился новый параметр фильтрации «Совокупный объем сделок за 15 дней больше N шт.». Он важен потому, что позволяет отсечь неликвидные облигации, которые не проходят заданный вами порог.

Важные для меня параметры
Вот какие параметры для автоматического отбора облигаций мне важнее всего.
Диапазон доходности. В Тинькофф Журнале уже есть хорошая статья про доходность облигаций. При поиске для себя я указываю диапазон доходности 10—19%. Это эффективная доходность без учета налога с купонов и без поправки на комиссию при покупке.
Диапазон текущих цен. Обычно я ищу варианты именно для парковки денег до полутора лет и держу облигации до погашения. Для этого случая слишком высокая цена скорее отпугивает, ведь эмитент при погашении заплатит только 100% номинала. Поэтому при поиске указываю диапазон: 60—110% от номинала.
Диапазон дюрации. Дюрация — это эффективный срок до погашения облигации. Учитываю диапазон так, чтобы видеть только те облигации, погашение которых будет в нужные мне сроки. Обычно указываю диапазон 3—15 месяцев.
Наличие информации обо всех выплатах купонов до самого погашения. Считаю очень важной эту информацию, чтобы потом не пришлось дополнительно мониторить портфель, отслеживая и продавая облигации, доходность которых упала. Этот критерий экономит время в будущем.
Минимальное количество сделок в каждый из 15 последних календарных дней. Это самый важный параметр, из-за которого я вообще писал скрипт. Неприятно, когда ты выбираешь облигацию, а только потом понимаешь, что торгов по ней нет.
Скрипт проверяет облигацию в каждом из 15 календарных дней, и если хотя бы в один из дней оборот меньше, в итоговую выборку эта облигация не попадает.
Совокупное количество сделок за 15 последних календарных дней. Это новый критерий, который тоже служит фильтром, если, например, хочется выбрать только облигации, в которые можно зайти на крупную сумму в рублях.
Все эти критерии я учел в своей таблице со встроенным поиском.
Как работает таблица
Если посложнее: таблица работает за счет программного интерфейса к информационно-статистическому серверу Московской биржи (ИСС, ISS). По ссылке есть описание работы сервиса.
Если хотите попроще, то я уже во всем разобрался. Вникать в код гугл-скрипта, чтобы воспользоваться таблицей, вам не придется. Но если захочется, то пожалуйста, ведь это открытый программный код.
Сам код скрипта можно посмотреть через панель «Расширения» → Apps Script. Расскажу вкратце, что делает скрипт:
- Подключается к внешнему сервису Московской биржи, перебирая укрупненные группы разных режимов торгов облигациями . Это дает около 2,5 тысячи бумаг на входе без фильтрации.
- Далее скрипт ищет внутри этих ответов с сервера Мосбиржи бумаги, удовлетворяющие заданным диапазонам доходности и цены, а также происходит фильтрация по дюрации. Когда такие бумаги найдены, это сразу уменьшает выборку с 2,5 тысячи всех доступных на Мосбирже облигаций до нескольких десятков максимум.
- Среди найденных вариантов происходит дальнейшая фильтрация по оборотам в каждый из 15 последних торговых дней.
- После этого идет фильтр известности купонов до погашения: все даты будущих платежей с известным значением выплат или без него.
- После этого массив найденных бумаг записывается в таблицу на вкладку «Результат», а перед этим вся вкладка очищается от любых записей.
- Разрешение на отображение и выполнение внешнего веб-контента требуется, только чтобы через дополнительный пункт меню отобразить ссылку на статьи в Тинькофф Журнале.
Работа скрипта полностью зависит от серверов Московской биржи
Если Мосбиржа поменяет формат выдачи, организует другие режимы торгов или изменит что-то в существующей системе, то для корректной работы скрипта потребуется его доработка.
Пошаговое руководство по использованию
По ссылке откроется ваша копия таблицы — можно редактировать параметры поиска прямо в ней. Но если у вас в одном браузере выполнен вход в несколько гугл-аккаунтов, то придется выйти из них, оставив только один. Иначе при переходе по ссылке выше у вас будет возникать ошибка.
После корректировки параметров скрипту надо авторизоваться для работы. Для этого перейдите на вкладку меню «Расширения» → «Макросы» и выберите любой из двух пунктов: «Открыть описание работы таблицы» или «Искать по параметрам».

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

Далее выберите аккаунт, с которого вы хотите запускать скрипт.


«Гугл-таблицы» предупреждают, что приложение не проверено, но если нажать на ссылку «Дополнительные настройки», то появится еще одна ссылка — переход на страницу. Жмем на нее.

Далее появится сообщение, что приложение «Т—Ж. Поиск ликвидных облигаций на Мосбирже 2023 🔎» сможет выполнять следующие действия:
- Создание, просмотр, изменение и удаление ваших таблиц.
- Подключение к внешнему сервису.
- Отображение и выполнение внешнего веб-контента в уведомлениях и на боковых панелях гугл-приложений.
После этого ниже будет кнопка «Разрешить». Нажмите на нее, и все будет готово — скрипт авторизован.
В меню этой гугл-таблицы появится новый пункт «Поиск облигаций v. 102023», а в нем — кнопка «Искать по параметрам». Она запустит работу скрипта, который закончит свою работу примерно за две минуты, вставив результаты работы на лист «Результат».

Запомнить
- Скрипт сделает всю предварительную механическую работу по подбору подходящих вариантов облигаций в рублях.
- Решение о дальнейшей покупке конкретных найденных бумаг должен принимать сам человек после знакомства с эмитентом.
Новости, которые касаются инвесторов, — в нашем телеграм-канале. Подписывайтесь, чтобы быть в курсе происходящего: @investnique
13.09, 10:19
выглядит круто! спасибо, что поделились
13.09, 10:19
Tchevengour, 🙏
13.09, 12:56
Шардин - человек будущего.
13.09, 13:10
Михаил, 🙏😂
13.09, 11:14
Можно добавить параметр в поиск "Бумаги для квалифицированных инвесторов" с опцией "Да" / "Нет"?
Или вывести в результаты эту колонку?
13.09, 11:14
Дмитрий, да, если биржа транслирует эту информацию.
13.09, 17:16
@Михаил, а рейтинг эмитента можно выводить в таблицу?
14.09, 01:48
Александр, скрипт берёт только те данные которые транслирует Мосбиржа. Насколько я помню рейтинга там нет
16.09, 12:15
сделал пошагово как написано, но отсутствует новый пункт "поиск облигации" в чем причина?
16.09, 12:16
Рафис, перейдите расширение-искать по параметрам.
Что пишет?
16.09, 12:27
Михаил, выполняется скрипт
16.09, 12:51
Рафис, то есть поиск работает? Просто нет пункта меню?
Попробуйте обновить страницу с таблицей в браузере
16.09, 16:35
Комментарий удален пользователем
16.09, 16:47
Рафис, обновить страницу Ctrl+F5
17.09, 05:43
Комментарий удален пользователем
17.09, 13:43
Рафис, а вы скопировали таблицу в свой аккаунт?
17.09, 15:14
Михаил, когда скачиваешь там сразу автоматом выходит создать копию
18.09, 06:46
Рафис, и дали разрешения?
18.09, 08:15
Комментарий удален пользователем
20.09, 04:25
Комментарий удален пользователем
20.09, 04:27
Рафис, у вас пункта меню нет, но сам поиск-то идёт если через «Расширения» → «Макросы» → «Искать по параметрам»?
15.10, 11:50
Раньше пользовался данной таблицей, очень удобно было
Но сейчас гугл блокирует работу скрипта
Есть решение этой проблемы?
17.10, 05:03
Даниил, у меня всё работает.
Если вы разбираетесь в программировании создайте новую таблицу, скопируйте скрипты из этого репозитория и у вас тоже всё заработает:
https://github.com/empenoso/SilverFir-Investment-Report/tree/master/Google%20Apps%20Script%20Release/2023_bond_search
18.10, 13:27
Михаил, В таблицах так и не удалось запусти, а вот Node.js работает, спасибо!
19.10, 04:35
Даниил, отлично!
17.10, 14:00
Михаил, а вариант Node.js тоже ведь работает? Раньше им пользовался, судя по хронологии именно там была более актуальная версия.
P.S. На Гитхабе описание можно обновить. То, что появилась v3 на GAP (и ссылка на ТЖ), видно только из описания папки.
17.10, 14:19
Maxim, да, именно на базе Node.js была сделана Google Apps Script версия - они равнозначны сейчас на октябрь 2023 года.
Описание обновил там, спасибо.
17.10, 14:42
Михаил, спасибо. Если что, у меня GAP сработала, только что проверял. Фильтра включеннного по умолчанию не хватает. Возможно, он сохранится после первого запроса. Или Google Spreadsheet обновляет лист "Результаты"?
17.10, 14:48
Maxim, да, вкладка "Результат" полностью стирается и заново записывается новыми данными.
17.10, 18:06
Михаил, ну, мне почему-то кажется, что в конец кода можно дописать включение фильтра..=) По-моему, файлик, который генерировал Node.js был с ней.
Ещё интересно было смотреть за запросами, которые в командной строке отображались. Но, наверное, в бесплатном GAP это было бы лишней нагрузкой.
18.10, 04:55
Maxim, Node.js и Google Apps Script одинаково бесплатны потому что open source.
Чтобы просмотреть журнал выполнения скрипта Google Apps, выполните следующие действия:
1. Откройте редактор сценариев Google Apps, перейдя на сайт script.google.com или открыв файл Google Sheets, Docs или Slides и выбрав «Расширения» > «Скрипт приложений».
2. В редакторе Apps Script щелкните меню «Просмотр» и выберите «Журналы» или нажмите Ctrl + Enter (Cmd + Enter на Mac), чтобы открыть журналы.
3. Журналы появятся на отдельной панели внизу редактора. Вы можете пролистать журналы, чтобы просмотреть детали выполнения.
18.10, 05:08
Михаил, я имел в виду, что GAP ресурсы Гугла использует, а Node.js - моего компьютера.
Вопрос не в журналах, а в дизайне, если можно так выразится. Во время работы GAP мы просто видим "скрипт выполняет", а в Node.js были по-своему красивые строчки кода..=)
18.10, 05:20
Maxim, если перейти в файл Google Sheets и выбрать «Расширения» > «Apps Script», то там как раз будет то что вы ищете - логи, текущее исполнение и по-своему красивые строчки кода..=)
18.10, 08:19
Михаил, понял теперь, если оттуда же и запустить выполнение. Ну да, оно. Но это уже не для рядового пользователя. Хотя, приложение на Node.js запустить - тоже не для него..=)
18.10, 08:28
Maxim, ну это же опенсорс - вроде работает, но если начать ковырять - чёрт ногу сломит :)
15.10, 11:52
Даниил, а вы скопировали к себе в аккаунт?
15.10, 11:56
Михаил, Да
28.10, 18:00
Михаил, здравствуйте.
Спасибо за ваш труд - таблица принесла много пользы.
Я не смог разобраться с колонкой "Дюрация, месяцев".
В ней либо закралась ошибка, либо я чего-то не понимаю :)
Например, по одной из отобранных облигаций выводится значение = "28,8".
Я решил его перепроверить на сайте Мосбиржи. Там на карточке облигации указан параметр "Дней до погашения" = "1039". Я эти дни делю на "30", чтобы получить что-то похожее на месяцы. Получаю значение "34,63", что прям сильно отличается от значения из Таблицы (28,8).
Пожалуйста, помогите разобраться.
29.10, 03:30
Александр, особенности дюрации.
Обозначает среднее время (в годах или днях), за которое вкладчик полностью вернёт свои вложения в облигацию. Дюрация — это не то же самое, что срок погашения.
По количеству дней она может быть равна сроку погашения, а может быть короче него.
https://journal.tinkoff.ru/guide/duration/