Полгода назад, летом 2020 года я написал скрипт поиска ликвидных облигаций на Мосбирже. Скрипт нужен для поиска облигаций, которые можно купить прямо сейчас с доходностью гораздо выше банковского вклада. Проценты по вкладам так и остаются на очень низких уровнях, а тут ещё и изменения в налоговом кодексе РФ подоспели.
В связи с этим решил изменить скрипт, убрав неактуальные данные о налоговых льготах, которые уже не работают в 2021 году и добавив возможность создавать облигационные лесенки. Под лесенкой имеется ввиду получение дохода как можно в большем числе месяцев, за счёт подбора облигаций с разными месяцами выплат.
В 2020 году и ранее в налоговом кодексе РФ действовал п. 25 ст. 217, в соответствии с которым от НДФЛ освобождались проценты по государственным и муниципальным облигациям РФ. В результате чего при получении на брокерский счет, например, процентов по государственным облигациям ОФЗ со стороны брокера не удерживался никакой налог.
Однако с 1 января 2021 г. этот пункт прекратил своё действие. Поэтому с процентов по всем облигациям будет удерживаться НДФЛ. Кроме того, будет удерживаться НДФЛ и с процентов по любым корпоративным облигациям.
Ведь в 2020 году и ранее при соблюдении ряда условий можно было избежать уплаты НДФЛ с процентов по облигациям российских компаний. Для этого облигация должна была быть эмитирована уже после 1 января 2017 г. в рублях. Если по этой облигации проценты выплачивались в пределах порогового значения «ставка рефинансирования ЦБ РФ + 5%», то с этих выплат НДФЛ не удерживался. Однако с 01 января 2021 г. все эти нормы были убраны из Налогового кодекса.
В результате чего с начала 2021 года брокеры будут удерживать НДФЛ по ставке 13% с купонов по любым облигациям.
Под неликвидными вариантами подразумеваются облигации, которые выглядят привлекательными по доходности, но по ним нет покупок и продаж на бирже. Невозможно купить безадресно – если никто на бирже не подал заявку на продажу облигаций, то купить эту облигацию вы не сможете. И в облигациях такое случается часто. Все удерживают и никто не продаёт. Сейчас скрипт отсчитывает 15 дней от текущей даты moment().subtract(15, 'days')
и затем проверяет обороты за каждый торговый день – соответствует ли цифра оборота указанному пороговому значению. Если оборотов нет, то бумага в выборку не попадает.
Сводные данные о месяцах, в которых производятся выплаты, берутся из Графика выплаты купонов. Прошлые даты выплат в результаты не попадают:
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 доступен установщик 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, скорее всего вы и сами знаете как лучше сделать. Код скрипта доступен на гитхабе. Перейдите в каталог /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 доступен установщик Node.js в разделе загрузить официального сайта.
Сам процесс похож на установку под Windows и Linux.
Теперь пришла пора настроить именно те параметры которые актуальны для вас, а не те, которые указаны для примера в самом скрипте. Сделать это можно в файле index.js, со строки 45.
Редактируем цифры, запускаем скрипт заново и примерно за минуту выборка готова.
Предыдущие версии скрипта, без изменений 2021 года, доступны в следующих видах:
Скрипт помогает экономить время и находить облигации, которые устраивают по доходности и временному горизонту.
Выборка «не является индивидуальной инвестиционной рекомендацией и может не соответствовать вашему инвестиционному профилю» — фраза абсолютно верна, ведь сам скрипт просто инструмент — решение о дальнейшей покупке конкретных найденных бумаг должен принимать уже человек после знакомства с эмитентом.
Скрипт работает только за счет API Московской биржи, с которой я никак не связан. Я использую ИСС Мосбиржи только в личных информационных интересах.
Автор: Михаил Шардин,
4 января 2021 г.
VK объявляет о приобретении 40% компании Intickets.ru (Интикетс). Это облачный сервис для контроля и управления продажей билетов на мероприятия. Сумма…
OpenAI готовится запустить собственную поисковую систему на базе ChatGPT. Информацию об этом публикуют западные издания. Ожидается, что новый поисковик может…
Центр управления связью общего пользования (ЦМУ ССОП) Роскомнадзора рекомендовал компаниям из реестра провайдеров ограничить доступ поисковых ботов к информации на российских сайтах.…
Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…
Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…
Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…