Полгода назад, летом 2020 года я написал скрипт поиска ликвидных облигаций на Мосбирже. Скрипт нужен для поиска облигаций, которые можно купить прямо сейчас с доходностью гораздо выше банковского вклада. Проценты по вкладам так и остаются на очень низких уровнях, а тут ещё и изменения в налоговом кодексе РФ подоспели.
В связи с этим решил изменить скрипт, убрав неактуальные данные о налоговых льготах, которые уже не работают в 2021 году и добавив возможность создавать облигационные лесенки. Под лесенкой имеется ввиду получение дохода как можно в большем числе месяцев, за счёт подбора облигаций с разными месяцами выплат.
Изменения в работе скрипта
1. Убраны неактуальные данные о налоговых льготах.
В 2020 году и ранее в налоговом кодексе РФ действовал п. 25 ст. 217, в соответствии с которым от НДФЛ освобождались проценты по государственным и муниципальным облигациям РФ. В результате чего при получении на брокерский счет, например, процентов по государственным облигациям ОФЗ со стороны брокера не удерживался никакой налог.
Однако с 1 января 2021 г. этот пункт прекратил своё действие. Поэтому с процентов по всем облигациям будет удерживаться НДФЛ. Кроме того, будет удерживаться НДФЛ и с процентов по любым корпоративным облигациям.
Ведь в 2020 году и ранее при соблюдении ряда условий можно было избежать уплаты НДФЛ с процентов по облигациям российских компаний. Для этого облигация должна была быть эмитирована уже после 1 января 2017 г. в рублях. Если по этой облигации проценты выплачивались в пределах порогового значения «ставка рефинансирования ЦБ РФ + 5%», то с этих выплат НДФЛ не удерживался. Однако с 01 января 2021 г. все эти нормы были убраны из Налогового кодекса.
В результате чего с начала 2021 года брокеры будут удерживать НДФЛ по ставке 13% с купонов по любым облигациям.
2. Изменен механизм фильтрации неликвидных вариантов.
Под неликвидными вариантами подразумеваются облигации, которые выглядят привлекательными по доходности, но по ним нет покупок и продаж на бирже. Невозможно купить безадресно - если никто на бирже не подал заявку на продажу облигаций, то купить эту облигацию вы не сможете. И в облигациях такое случается часто. Все удерживают и никто не продаёт. Сейчас скрипт отсчитывает 15 дней от текущей даты moment().subtract(15, 'days')
и затем проверяет обороты за каждый торговый день - соответствует ли цифра оборота указанному пороговому значению. Если оборотов нет, то бумага в выборку не попадает.
3. Добавлены сводные данные о месяцах, когда происходят выплаты.
Сводные данные о месяцах, в которых производятся выплаты, берутся из Графика выплаты купонов. Прошлые даты выплат в результаты не попадают:
coupondate = json.coupons.data[i][3]
inFuture = new Date(coupondate) > new Date()
if (inFuture == true) {
couponDates.push(+coupondate
.split("-")[1]
)
console.log(`${getFunctionName()}. Купон для ${ID} выплачивается в месяц ${JSON.stringify(couponDates[couponDates.length - 1])} (строка ${couponDates.length}).`)
}
И получается массив с цифрами будущих месяцев выплат. Далее эти цифры приводятся в текстовый вид и получается что-то вроде такой строки с месяцами:
–––-–––-мар-–––-–––-июн-–––-–––-сен-–––-–––-дек
Одна строка не информативна, но когда подобные строки стоят друг под другом можно легко подобрать несколько вариантов, чтобы выплаты были в разные месяцы - это и есть начало облигационной лесенки:
–––-–––-мар-–––-май-–––-–––-авг-–––-–––-–––-дек
–––-фев-–––-апр-–––-июн-–––-–––-сен-–––-–––-дек
Как пользоваться?
Поиск ликвидных облигаций Мосбиржи под Windows
Для Windows доступен установщик Node.js в разделе загрузить официального сайта.
Скачиваем установщик для Windows и запускаем его. Кроме базовых компонентов, дополнительно ничего устанавливать не надо.
Далее скачиваем код скрипта с гитхаба. После этого переходим в каталог /SilverFir-Investment-Report-master/Node.js Release/bond_search_v2/
, где находятся скачанные файлы:
И запускаем файл first start.bat
, который содержит указание показать установленную текущую версию Node.js и установить необходимые для запуска проекта зависимости node-fetch
и moment
:
node -v
pause
npm install node-fetch moment
После этого всё готово для запуска скрипта поиска облигаций. Для этого запускаем файл start.bat
:
Менее чем за минуту будет создан HTML файл с подпапке searching_results
с текущей датой в имени — он и содержит в себе найденные результаты.
Поиск ликвидных облигаций Мосбиржи под Linux
Если на вашем компьютере установлен Linux, скорее всего вы и сами знаете как лучше сделать. Код скрипта доступен на гитхабе. Перейдите в каталог /SilverFir-Investment-Report-master/Node.js Release/bond_search_v2/
.
Проверьте что Node.js установлена:
$ node -v
Проверьте что пакетный менеджер npm для Node.js установлен:
$ npm -v
Установите зависимости (в данном случае это только node-fetch и moment):
$ npm install node-fetch moment
Запустите файл скрипта:
$ npm start
Примерно за минуту html файл будет создан:
fs.writeFileSync(path.resolve(__dirname, `./searching_results/bond_search_${moment().format('YYYY-MM-DD')}.html`), hmtl)
Поиск ликвидных облигаций Мосбиржи под macOS
Для macOS доступен установщик Node.js в разделе загрузить официального сайта.
Сам процесс похож на установку под Windows и Linux.
Настройка параметров поиска
Теперь пришла пора настроить именно те параметры которые актуальны для вас, а не те, которые указаны для примера в самом скрипте. Сделать это можно в файле index.js, со строки 45.
Редактируем цифры, запускаем скрипт заново и примерно за минуту выборка готова.
Предыдущие версии
Предыдущие версии скрипта, без изменений 2021 года, доступны в следующих видах:
Итоги
Скрипт помогает экономить время и находить облигации, которые устраивают по доходности и временному горизонту.
Выборка «не является индивидуальной инвестиционной рекомендацией и может не соответствовать вашему инвестиционному профилю» — фраза абсолютно верна, ведь сам скрипт просто инструмент — решение о дальнейшей покупке конкретных найденных бумаг должен принимать уже человек после знакомства с эмитентом.
Скрипт работает только за счет API Московской биржи, с которой я никак не связан. Я использую ИСС Мосбиржи только в личных информационных интересах.
Автор: Михаил Шардин,
4 января 2021 г.
edogs
Для тех кто совсем не в теме, мы бы сделали ремарка:
а) облигации ничем и никак не застрахованы (в отличии от вкладов), если фирма скопытится — шансов что-то получить почти ноль, кредитор третьей очереди что-ли.
б) по облигациям кроме купонного дохода могут быть и другие внезапные условия (например, условие при которых купон не выплачивается, или при которых фирма может выкупить свои купоны по номиналу), т.е. достаточно часто оказывается что процент не гарантированный
в) статистика по ликвидности это наука о прошлом, хочется продать — не факт что будет покупатель, ведь даже при ликвидности спрэд на облигации куда больше чем на акции.
г) цена облигаций меняется, сегодня купил за 100р с 6% доходв, завтра она стоит 80р, после завтра 120р. Второе приятно, первое не очень
По факту, покупая без анализа самой фирмы можно попасть в «идеальный шторм». Показатели какие-то от которых зависит выплата дохода падают, падает цена облигаций, купон не выплачивается из-за условий по выплате, риски банкротства возрастают, ликвидность никакая, страхования от государства нет — и резко приплываешь без шанса выскочить.
А вообще, если бы речь шла не о россии, а о стране где народ всё время пытаются обмануть, мы бы вспомнили вот этот анекдот
звонок в дверь, она понимает, что пришел муж и в порыве отчаяния
восклицает:
— Господи, сделай так, чтобы он ничего не заметил!
Разверзаются небеса и господь говорит:
— Хорошо, я так сделаю, но ты умрешь от воды.
Она говорит:
— Хорошо.
Проходит год, два года. Женщина не купается, моется только под душем, старается
по возможности любыми путями избегать воды. Проходит 3 года, она
неожиданно выигрывает путевку в морской круиз.
Посомневалась-посомневалась, и решила поехать. Плывет она на шикарном
лайнере, вдруг ночью начинается шторм, все в панике корабль тонет. Она
опять в порыве отчаяния восклицает:
— Господи, ну ты же не можешь из-за меня одной потопить весь корабль!
Разверзаются небеса и господь говорит:
— Да я вас, *****, на этот корабль три года собирал
empenoso Автор
Вы абсолютно правы — в инвестициях никто и ничего не может гарантировать.
Всё может неожиданно поменяться и от человека это никак не зависит.
empenoso Автор
Именно с облигациями можно брать не более 5% в каждую от всех денег которые направили в облигации и держать до погашения — тогда текущие курсы не так уж и важны.
Getequ
так не покупайте бумаги рандомных компаний, или чего-то вроде быстроденег. Вклады тоже не шибко застрахованы если у вас больше 1.4КК
ну это вы загнули, это вам не акции что бы были такие колебания. бывают просадки со 105% до 99% или 115% до 101% в периоды очередных санкций, но, как правило, возвращаются к прежним значениям. Если это конечно не дефолт по бумаге и аривидерчи))
empenoso Автор
Этот лимит уже поменяли для особых случаев:
МОСКВА, 1 октября. /ТАСС/. Лимит страхового возмещения по банковским депозитам, который составляет 1,4 млн руб., был повышен до 10 млн руб. для случаев особых жизненных обстоятельств. Сумма возмещения увеличивается в соответствии с федеральным законом №163, вступающем в силу с 1 октября.
В список особых жизненных обстоятельств входят продажа вкладчиком жилого помещения или земельного участка, на котором расположен жилой, садовый дом, иные строения, также получение наследства, возмещение ущерба, причиненного жизни, здоровью или личному имуществу, получение социальных выплат, пособий, исполнение решения суда, получение грантов в форме субсидий. При этом, если вкладчик имеет несколько счетов эскроу в одном банке на общую сумму более 10 млн рублей, возмещение выплачивается по каждому вкладу, но в целом не более 10 млн рублей. Вкладчик имеет право получить возмещение в повышенном размере в течение трех месяцев, с момента поступления средств на счет.
edogs
А пример с transocean (RIG тикер), в 2008 году стоила 150, сейчас 2. А компания из категории нефти, солидная европейская фирма. В 75 раз падение, Карл:)
Это лимит на один банк. 10 банков уже 14кк и так далее.
По поводу «завтра и послезавтра» конечно загнули, но 14 год вполне себе показал, что на 30% облигации упасть могут легко. И тут вопрос в том, когда больше шанс на ее падение, а когда на рост.
Тут ведь в чем дело — цена облигации зависит от ее доходности относительно других инструментов.
Возьмем тот же 2014 год, ставки в банках до 22% по депозитам на 3 года (т.е. за 3 года со 100р будет 166р), облигация дающая 6% даст за 3 года 118р с той же сотни, т.е. для равной доходости (рынок-с) облигация должна упасть примерно до 71р — 29% падение.
При этом с депозитом у Вас есть относительная свобода выбора. Выросли ставки — переложились в более выгодный депозит, упали ставки — продолжаете держать на старом выгоднее текущих ставок — в любом случае в плюсе. А с облигациями — выросли ставки — облигации подешевели и считаем убытки, упали ставки — облигации подорожали но всего лишь до уровня доходности депозита… итого или минус или ноль.
sshikov
>По факту, покупая без анализа самой фирмы
Ну вы все правильно говорите, но разве кто-то такую фигню предлагал? Автор как раз пытается автоматизировать отбор — ну как минимум по доходности и ликвидности (понятно, что ликвидность на сегодня, но ничего лучше придумать все равно нельзя).
ebragim
Вот только с анализом это ничего общего не имеет. Скрипт может отбросить неликвидную в данный момент бумагу, которая «выстрелит» через некоторое время, что можно было бы предугадать, изучив компанию. Было бы так всё просто — трейдеры были бы не нужны.
Так что если деньги жгут карман и надо потратить их вот прямо супер-срочно, тогда да. Во всех остальных случаях лучше самому фильтровать данные, понимая что делаешь.
empenoso Автор
Да, это быстрое и простое решение.
sshikov
Ну да, это не анализ компании, конечно. Это такой хак, если угодно.
Но вы сами сказали — можно был бы предугадать — а можно было бы и нет, точного критерия не придумали.
>Так что если деньги жгут карман и надо потратить их вот прямо супер-срочно, тогда да.
Не, ну скорее не так. Такой скрипт нужно просто выполнять периодически. Вас же никто не заставляет прямо сегодня тратить все свои деньги — мы можем такой же анализ повторить завтра.
empenoso Автор
А зачем выполнять скрипт, если ничего не собираетесь покупать?
sshikov
Ну, я работал три года с хвостиком на FI Desk, и наши алгоритмы вообще оценивали каждую бумагу после каждой сделки по ней на рынке (понятно, что для этого нужно немного больше, чем для работы такого скрипта, как тут описан — нужна подписка на все события от биржи, и это просто будет не бесплатно).
И понятно, что индивидуальному инвестору выполнять скрипт раз в час нет смысла — все равно у вас нет столько времени на анализ результата, если для вас это не основная работа. Но если вы анализируете ту же ликвидность за неделю — выполнить скрипт раз в сутки совершенно не помешает, чтобы хотя бы понимать, что неликвидная вчера и отброшенная скриптом бумага стала ликвидной сегодня — что плохого в таком плане?
empenoso Автор
Я согласен с вами, но этот скрипт как раз и нужен чтобы не запускать его каждый день — в нём проверяется количество сделок в каждый из дней за последние две недели. Если за хотя бы один день нет сделок бумага выпадает из списка. Хотя этот параметр можно в самом коде отключить например, если зачем то это надо.
sshikov
Ну, если на то пошло, я и не предлагал каждый день. Я предлагал периодически :)
gotch
Страхование депозита это тоже частично фикция. Посмотрите судебную практику отказа АСВ в выплате страхового возмещения, проникнитесь.
Кроме того, в случае глобального кризиса, из-за которого суверенный долг пойдет по наклонной, вклады физиков первые пойдут под нож. Не будет у АСВ денег.
Нет, будет конечно. Мне ведь Сбербанк заплатил 130 рублей примерно от вклада времен СССР (одна-две среднененьких зарплаты того времени). Такси дороже стоило.
empenoso Автор
Справедливости ради надо заметить что я сам лично получил несколько выплат от АСВ несколько лет назад. Когда вклады были под большие %.
gotch
Да, в большинстве случаев это работает, но можно попасть под раздачу вместе с недобросовестными вкладчиками. Знаю людей, которых вместо вклада при продлении договора на вексель развели (за 2 недели до отзыва лицензии), но это, конечно, совсем другая история.
Здесь вопрос больше что надежнее — суверенный долг, или АСВ? По мне так одна контора.
Остается банкротство брокера. Я немного напрягся при санации Открытия, но брокера в итоге это никак не затронуло (кроме стрижки с клиентов комиссии).
empenoso Автор
По вашим комментариям к статье видно что вы опытный человек
empenoso Автор
У облигаций тоже курс меняется иногда будь здоров, но если держишь до погашения, то это неважно.
xxxkms
А тут бац и ЦБ начинает последовательно ужесточать ДКП, по прежнему не важно и держим до погашения? :)
empenoso Автор
По ситуации смотрим.
gotch
Это, кстати, мне кажется, тоже в своем роде заблуждение. Вот вы купили облигацию (абсолютно надёжную, типа ОФЗ) с купоном 4.5% годовых. Тут раз, ключевая ставка 8%, депозиты в банках аж по 10% — кризис. И смысл держать подешевевшее тело? Продали с убытком, уменьшили налог, тут же переложились в бумагу с большей доходностью или депозит.
empenoso Автор
С такой низкой доходностью через этот скринер он не найдёт, если только конечно специально не задавать при поиске.
empenoso Автор
Но тогда возникает вопрос зачем этим скринером пользоваться если выбирать такие низкодоходные инструменты.
gotch
Почему, 4.5% рыночная вполне ставка.
Ключевая ставка — ориентир для абсолютно надёжных бумаг, банальная общепринятая стоимость денег в экономике. Всё, что сверху — премия за риск.
Ну и наша задача найти переоцененный риск, или допустимый уровень повышенного риска. Таким, например, были субфедеральные бумаги, или сейчас бумаги госбанков ВТБ, ГПБ, РСХБ. Премия есть, а повышенного риска (если это не субординированный выпуск для банковской) по сути нет.
Поэтому сразу в quik можем ставить доходность от 4.5%.
Если стоимость денег в экономике станет 5%, то у вас тело просядет на эти 0.5% умноженное на срок. Вы можете продать тело и перевложиться, по сути ничего не потеряв.
Только дальше пошли нюансы — комиссии, налоги, амортизация, срок погашения и т.д.
empenoso Автор
Ну например я не готов покупать облигации с доходностью 5% в рублях. Я совершенно точно знаю что можно подобрать бумаги с такой же доходностью и выше, но в долларах, к тому же которые платят ежемесячно. И их рейтинг будет выше.
Если говорим о доходности ОФЗ, то вот график:
gotch
Для развития кругозора, можете подсказать пару таких бумаг?
И, например, пару российских.
Понимаю, что выдавать рыбные места не все готовы, поэтому если нет, то нет.
Что же касается кривой ОФЗ, то доходность растет для пятилетних бумаг. Если у вас нет острого желания быть инвестором в ОФЗ-26218-ПД до 2031 года под 6.2% годовых, то и выбор невелик. На таком длинном периоде риски возрастают кратно. От термоядерной войны, до второго в новейшей истории дефолта с гораздо менее приятными вариантами реструктуризации, чем в 1998. Ну и логично, что продажа подешевевшего тела без дальнейшего реинвестирования принесет существенный убыток.
empenoso Автор
Вот пожалуйста в моей статье «Куда вложить 100 000 $ на пять лет?» есть примеры подобных бумаг, которые дают доходность в долларах и ежемесячно.
empenoso Автор
Ну, ОФЗ сейчас я и не покупаю…
KestNT
Ого, мощно. Спасибо
empenoso Автор
Спасибо!
Named
Отличная работа, спасибо за скрипт
empenoso Автор
Спасибо!
gotch
Вот скажите, этот скрипт действительно принципиально лучше пары фильтров в Quik?
Доходность последней сделки, обороты, все это есть, а риск изменения купона в будущем, оферты или дефолта скрипт все рано предсказать не может.
Всё это кончается выбором приемлемого эмитента и стоянием в стакане в ожидании продавца/покупателя. Кто-то переходит на новый уровень, и берёт с размещения.
empenoso Автор
Этот скрипт принципиально отличается от фильтров в QUIK тем, что что скрипт проверяет каждый торговый день за две недели — было количество сделок больше заданного лимита или нет. А не просто не складывает нарастающим итогом то что в какой то день много, а в какой то вообще ничего.
То есть фильтрует более тщательно.
И сейчас стал отображать месяцы выплат.
gotch
Но смысл этого какой? Ликвидность была, ликвидность будет, сейчас ликвидности нет.
Особенно ликвидность стимулирует свежая новость о внезапном траурном финансовом состоянии эмитента или техническом дефолте.
Если вы выбрали, предположим, 10 интересующих бумаг, то на графике можете легко и за минуты посмотреть сделки за последние две недели. Кроме того, можете за секунду просчитать корреляцию цены/объема на прошлых сделках и встать в стакан по нужной цене.
Скрипты, дело, конечно, хорошее, но проще можно сделать.
empenoso Автор
Мне часто требовалось искать подобные варианты, которые можно купить прямо сейчас и в какой-то момент мне надоела эта ручная работа — так родился скрипт.
Black_Spirit
Это конечно все красиво, облигации и все такое. Но рублёвые активы это так себе удовольствие. Потеря покупательской способности рубля не компенсируется никакими купонами и процентами по вкладам. И на горизонте виднеется только усиление данной тенденции. Можно поиграть в угадайку и из валюты уйти частично в рублёвые облигации в периоды роста цен на нефть.
empenoso Автор
Здесь вариант именно с рублёвой доходностью.
Black_Spirit
Годы 2011-13. Думал, дам рублю шанс, все вроде бы шло ничего себе. Часть активов была в рублёвых депозитах и облигациях. До сих пор помню то чувство, когда видишь декабрьским вечером 2014 года график с ценой доллара под 80. Эта беспомощность и самолинчевание: ну тыж видел политические события, они же должны были сработать, надо выходить из рубля. Но жирный купонный доход шептал: не ссы, прорвёмся. Ну я о том, что это все не работает. Вернее, работает до первого "черного лебедя". За период активного инвестирования таких лебедей можно поймать несколько.
empenoso Автор
Я нигде не предлагал в статье вложить все деньги в рублёвые облигации.
Это для целей, чтобы получать повышенный доход в рублях.
Black_Spirit
Вам спасибо, конечно! Интересный срипт
empenoso Автор
Спасибо!
empenoso Автор
Я о том, что классов активов гораздо больше — надо использовать их все.
gotch
Инфляция в США ненулевая, а ставки — близки к нулю. И там потеряете легко. Нет золотой пилюли.
Tolyanderv
держу до последнего и всё ок
empenoso Автор
Да
gotch
Вот из этого списка классно держать: www.rusbonds.ru/def.asp
Есть такая стратегия, покупать облигации третьесортного эмитента с доходностью *2 к рынку, и сливать в середине срока, пока он не дефолтнулся. Много есть способов ловли рыбы в мутной водице. )
empenoso Автор
Ну этот способ определенно не для всех.
Vacheslanov
Покупаю с расчетом на долгосрок. Иногда мониторю результаты, если взлетают-продаю, упали-докупаю. Всегда остаюсь в плюсе
empenoso Автор
Разумная стратегия.
gotch
Какими критериями руководствуетесь?
Надежная бумага чувствительна к ключевой ставке, ненадежная — к финансовому состоянию эмитента. Если вы не арбитражите бумаги, то просто кидаете монетку, изменится ключевая ставка или нет.
89vitaliklyadkin
Интересно какой временной интервал может проанализировать и выдать результат такой скрипт
empenoso Автор
Любой, вы сами можете задать в настройках или переписать как вам надо — это ведь Open Source.
89vitaliklyadkin
Спасибо
Ilias
Не очень понятно почему это замена депозита и причем тут налог. Вроде бы нет никаких попыток выбрать облигации с доходностью = (доход от депозита + 13% нового налога) или найти какие-то хитрые возможности не платить налог.
empenoso Автор
Замена депозита потому поток стабильный.
empenoso Автор
А хитрых возможностей не платить налог скорее всего просто нет.
Ilias
Насколько я слышал, он вроде бы на какие-то отдельные типы ETF не платится, нет?
empenoso Автор
Это как? Российские ETF не выплачивают дивиденды вообще.
gotch
ETF (БПИФ) на облигации не платят налог на купоны. Однако, когда вы продадите тело, с его роста придется заплатить налог, если у вас не вычет типа ИИС Б. Аналогично по инфляционным облигациям, по которым купоны не платятся, а индексируется тело.
empenoso Автор
Смысл покупать актив и не получать текущих поступлений? Лично мне так не нравится.