Блог им. NatashaMe

Облигационный фонд программиста. #1

    • 26 июля 2025, 05:37
    • |
    • XXX★
  • Еще
В попытках сделать очередной шаг к успеху я решил попробовать вырастить дерево. В моем случае это означает, что на доход от своих субордов ВТБ я буду растить второй источник пассивного дохода. Отдельный портфель и одна из целей будет превысить свой основной портфель по рублевой оценке.

Суборды генерят сейчас 2кк раз в пол года (что создает относительно неплохой для современной России денежный поток в 290т.р. в мес после налогов, а на ИИС было бы 333к):
Облигационный фонд программиста. #1
В ноябре 26г ставку пересчитают и купон должен стать заметно больше, скорость роста ИИС возрастет.

Так как я раньше был программистом, то склонен пытаться все оптимизировать. Единственный способ легально не платить налоги с инвестиций это ИИС3. Соответственно завел новый ИИС3 у ВТБ и завел туда небольшую сумму для набора начальной микро-позиции.

Почему у ВТБ? Портфель планирую собирать из облигаций, а у ВТБ нет брокерской комиссии за операции с ОФЗ. Да, чтобы чуть более оптимизировано было — операций продаж не будет. Получается что для набора ОФЗ я буду платить только комиссию биржи за покупку. При покупке корпоративок — комиссию и брокера и биржи, но тоже в одну сторону только.

На ИИС3 будут приходить купоны, налога не будет. Облигаций будет много. Будет почти весь ряд ОФЗ, за вычетом специфичных линкеров и некоторых флоутеров. Ну и крупные корпораты уровня Роснефти, МТС, Ростелеком итд. Во что-то типа Диасофта того же, например, лезть точно не буду. Только крупняк.

Я сказал, что выпусков в портфеле будет много? На данный момент их 57 и если будет что-то интересное, то количество будет расти. Пропорцию пока держу примерно равную. Чем больше выплат, тем чаще я буду реинвестировать. Это выгодно с точки зрения сложного процента. Дипсик сказал что разница пои моем подходе в сравнении с реинвестированием раз в пол года будет доходить до 1,2%, я его рассчеты не проверял, мне достаточно того, что и так понятно, что чем чаще, тем лучше, а я тут за результатом пришел. Доходность я планирую смотреть и оценивать уже фактическую по всему портфелю.

Чтобы не потеряться в таком количестве облигаций пришлось думать о ведении какого-то журнала облигаций. Сначала то что я пытался построить было совсем примитивным:
Облигационный фонд программиста. #1

Это файл эксель, в котором есть основная таблица и отдельная таблица с данными под каждую облигацию. Я пытался вычислить доходность и обнаружил, что необходимо учитывать точные финансовые потоки для корректного расчета. А именно точные даты и суммы платежей по купонам, а так же даты погашения. И вот для хранения информации о купонах и понадобились изначально отдельные таблички под каждую облигацию.

Но сейчас уже все выглядит совсем иначе. Так как заметную часть портфеля составляют облигации с переменным купоном, что стало очевидно, что необходимо их более точно учитывать. Если просто брать последний купон и применять его на следующие периоды, то это катастрофа, а не точность получается. А чтобы предсказывать размеры купона, необходимо предсказывать ставку ЦБ, так как купоны привязаны либо к КС (го катку?), либо к RUONIA. Так появилась таблица предсказаний ставки:

Облигационный фонд программиста. #1

Первое предсказание уже сработало, но его многие ждали. Остальные я пока сильно не настраивал. Так вот теперь, когда есть ставка для конкретных временных интервалов по сути, я могу для каждой облиги ПК прикинуть снижающийся денежный поток в период снижения ставок, вот так:

Облигационный фонд программиста. #1

Получается, что на карточке облигации появилась система предсказания купона — справа. И таблица денежных потоков, которая слева и используется непосредственно для расчета доходностей, она строится на основе предсказаний купонов полуавтоматически: все, кроме следующего купона, который нужно пользователю (т.е. мне)задавать руками по факту его установления (в 99% случаев купон на период известен заранее, кроме некоторых флоатеров). То есть предсказания предсказаниями, но как только купон становится официально объявлен — модель его сразу получит, заставит пользователя ввести или выпадет в ошибку (ниже подробнее). С точки зрения эксель я просто беру дату выплаты каждую и ищу ее в диапазонах из таблицы предсказаний ставки ЦБ, потом добавляю бонус к ставке, разный у всех облигаций и считаю на основе предсказанной ставки купон.

И особенно круто, что меняя свой прогноз по ставке ЦБ на отдельной странице, все зависимые купоны автоматически обновятся для каждого выпуска. И в дальнейшем я могу разделить прогноз ставки ЦБ и Руониа (сейчас я принял допущение, что они равны). Это вселяет оптимизм по поводу возможности добавления и других настраиваемых параметров — предсказаний. Но у меня тут нет идей пока.

И я сделал так, что модель всегда знает дату на которую актуализирована и если дата меняется и начинает превышать дату какого то купона (57 облиг платят часто очень), то для этой облигации возникнет ошибка:
Облигационный фонд программиста. #1

и мне нужно тогда залезть и руками удалить строчку с прошедшей выплатой и настроить следующий купон. Это дает мне постоянный контроль: я могу в ежедневном режиме отслеживать прошедшие выплаты и собирать статистику — как часто ВТБ задерживает купоны, например :)

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

Кстати, так вот выглядит поток выплат сейчас:
Облигационный фонд программиста. #1

Деньги будут приходить часто и мелкими дозами. Но регулярно и стабильно. Есть чем заняться на пенсии, а чтобы понять какую облигу докупать надо уметь сравнить различные доходности. Так, в эксель есть функция XIRR, которая работает так:

Облигационный фонд программиста. #1

А есть доходность из терминала, которая подразумевает реинвестирование купонов под тот же процент в течение срока жизни облигации. И эти доходности сильно разные.

Пока что я на этапе заполнения карточек облигаций и на это уйдет несколько неторопливых дней — я на пенсии (вышел в 33, кста) и стараюсь не перетруждаться. Просто так их быстро раскопировать не получится, так как там операции с диапазонами выплат плюс разные условия по купонам у облигаций ПК. Пытаться автоматизировать заполнение у меня так же нет желания, этот медитативный монотонный процесс настройки полей и формул успокаивает, как лего :)

Ну и наверняка же многим интересно бы взглянуть на текущий список облигаций, которые я купил и отслеживаю:
Облигационный фонд программиста. #1

Облигационный фонд программиста. #1

Облигационный фонд программиста. #1

Облигационный фонд программиста. #1

Облигационный фонд программиста. #1

Облигационный фонд программиста. #1

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

Вывод: начинать процесс инвестирования с нуля очень интересно. Я ощущаю ИИС3 нак некую виртуальную машину изолированную. Суборды ее питают, я отслеживаю параметры, и этот процентный локомотив тихо едет, но спокойно. В отличие от того же Андрея Хохрина, лезть изучать ВДО и внутренности компаний мне не хочется. Можно купить акции и думать заплатит не заплатит, вырастет не вырастет, а можно купить облигации той же компании, например и получать доходность выше ОФЗ, но без особых рисков практически. В этом путь моего ниньдзи.

С экселем раньше, ктати, не часто работал, очень выручает дипсик. Ощущаю себя крепким джуном экселя с ним, будучи сеньером с++)) Очень показательно, как технологии ИИ эти помогут человечеству. Прикупить еще облиг яндекса надо будет.

Если было интересно читать — лайканите, если не влом, тогда может и продолжения будут.

А пока мне все это напоминает игру, где птичек надо было собирать: там в итоге магия сложного процента довела меня без вложений до:
Облигационный фонд программиста. #1
(https://smart-lab.ru/blog/716603.php)
7.1К | ★6
25 комментариев
ЗакрепитьКомментарий закреплен пользователем XXX★
Спасибо за описание опыта! Очень полезно. Воодушевляющий пример FIRE.
Татьяна Полищук, я случайно закрепил ваш коммент, но решил оставить. Сначала испугался что удалил (не знал, что так можно даже). У FIRE есть странные правила, про 4% например, знаменитое. Или эта их любовь к ЕТF. Эти вещи неприменимы к РФ. Но суть та же, да.
avatar
XXX★, пост с благодарностью симпатично выглядит на фоне многих советов без запроса))) да, я целом про накопить состояние (во всех смыслах — и даже то что у Вас описывается как «делаю таблицу как медитацию» это внутреннее, душевное состояние спокойствия и безопасности, осознания своего выбора, устойчивости и безопасности в этом ходе жизни), «выйти на пенсию» и начать наслаждаться жизнью.
Татьяна Полищук, наслаждаться оказалось не так просто, мне несколько лет понадобилось, чтобы перестать скучать по этому рабству и найти себе другие увлечения. Лишние 40 часов в неделю — не шутка.
avatar
Еще, как вариант, можно считать месячную доходность (в процентах годовых).
B1 — баланс портфеля на начало месяца
B2 — баланс портфеля на конец месяца
MD — дней в месяце
D = B2 — B1 — доход за месяц
P = D / B1 * 100 * 365 / MD — доходность в процентах годовых за месяц.

Если в течение месяца были пополнения, то вычитать их из B2. B1 же, напротив, включает пополнения прошлого месяца.

Ну и ежемесячно наносить точку на график. Можно таким образом и за неделю, и за квартал, и за полгода считать, но месяц — некий оптимум, не дающий серьезной погрешности при пополнениях. При расчете периодом в месяц можно пренебречь формулами xirr и им подобными.

Ну и такой метод удобен для контроля эффективности алгоритмов, когда инструментов много, сделок много, денежный поток стабильно положителен. Так сказать, подбивать итоги месяца.
avatar
myaucha, интересно, спасибо. Тут мне надо будет подумать как в модель добавить контроль для самого себя: она должна будет раз в месяц останавливаться, пока я не вычислю доходность портфеля за мес для статистики, ну дипсик мне в помощь, идею в план работ добавил.
avatar
Ну и для ежедневного расчета XIRR (как почти-программист программисту)

Public Function MyXIRR(Values As Range, Dates As Range, Balance As Range) As Double

ReDim varDates(1 To Dates.Count) As Double
ReDim varValues(1 To Values.Count) As Double

Dim objCell As Range
Dim lngIndex As Long

lngIndex = 0
For Each objCell In Dates

lngIndex = lngIndex + 1
varDates(lngIndex) = objCell.Value
Next

lngIndex = 0
For Each objCell In Values

lngIndex = lngIndex + 1
varValues(lngIndex) = objCell.Value
Next

varValues(UBound(varValues)) = varValues(UBound(varValues)) — Balance.Value

MyXIRR = Excel.WorksheetFunction.Xirr(varValues, varDates) * 100
End Function

avatar
myaucha, я не хотел бы идти дальше формул в экселе. Если надо будет что то сложнее — буду из внешней тулы обновлять поля в модели, напишу на с++)
avatar
XXX★, Так это и есть адаптированная формула, на базе стандартной Excel.WorksheetFunction.Xirr. В ячейке прописываете =MyXIRR(), и вперед! Писать что-то на C++ под Excel — это уже явный перебор. А вообще, как хотите — у каждого свой путь к бедности и старости :)
avatar
myaucha, вам просто меня не понять, этот код похож на VB, а у меня короче была депрессивная ситуация в начале карьеры, когда меня короче переставили с С++ проекта на VB, который уже тогда был никому не нужен ну и я забил хрен и меня уволили из той реально неплохой даже в целом конторы. Но от прохожих скриптов тошнит до сих пор, флешбеки ;) С++ это прикольно тут и нестандартно, можно ждать веселостей при разработке. А когда на пенсии пишешь для себя что угодно но в кайф, то этого и ждешь: необычностей.
avatar
Если вы программист, то мне кажется проще на php это все сделать. Чтобы не добавлять вручную все облигации, можно у брокера заказать отчёт, он будет в формате эксель. На php есть библиотека, которая очень быстро разбирает этот экселевский файл в виде массива. Можно получить с него данные и записать в табличку MySQL. Из таблички взять isin и сделать запрос по апи на мосбиржу и получить цены, и даты выплаты купонов и офферт. Разместить это все на хостинге с доступом к Линуксу. И можно настроить автоматическое обновление. Плюс доступ с любой устройства. При желании можно добавить бот телеграмм и будет вам каждый день присылать отчёт об изменении цен и об том, когда будет ближайшая выплата какая сумма. Хотя, возможно, вы не знаете PHP, но по мне он не сильно отличается от С++ при желании и наличии времени можно за неделю осилить.
Сергей Скориков, можно, как вариант, но учить пхп мне влом, зачем этот язык мне? Я бы лучше учил питон тогда, тк сочетание питон и с++ популярнее пхп и с++. Не кажется мне пхп языком для души. И заводить БД ради 100 облигаций — это как то перебор как по мне. Эксель с его простыми формулами мало того что информативный UI позволяет создать кликами. Телеграм бот это не наглядно, не так наглядно как простая таблица с данными в клетках.
avatar
Простите, а расскажите в чем был глобальный смысл покупать субординированную облигацию?
avatar
GTO, у нее потенциал хороший и недооценка:
smart-lab.ru/blog/1180076.php
smart-lab.ru/blog/1172388.php
avatar
для учета денежного потока использую две таблицы в эксель.
в одной учет по всем бумагам по месяцам.
вертикаль — месяц.
горизонталь бумага.
таким образом учитываю начисленный доход в месяц и итоговый  в год.

вторая таблица — учет приходов денег от бумаг по месяцам.
бумага, сумма, дата получения.
по месяцам и по годам.

очень полезно видеть % доходности в год и суммы денежного потока.
Фотография экрана?)
avatar
SimpleVasya, среда разработки физически отключена от сети.
avatar
Программист фотографирует экран на телефон?
Михаил Шардин, а на что мне его фотографировать?
avatar
XXX★, хорошая статья, просто скриншоты были бы красивее. Даже если среда разработки физически отключена от сети — флешки тоже попали под запрет политикой безопасности?
Михаил Шардин, я искренне верил, да и верю, что это не принципиально, разве плохо видно суть или текст? Ну, я подумаю над этим.
avatar
Гтлк возьми. Высокий доход от госбумаг ааа
Рустем Мухаметшин, а постоянно слышу это название. Не хочу, мне неизвестна эта компания, ее нет в индексе биржи, это не тот крупняк, в который я готов лезть вместо ОФЗ. Мб я не прав с ГТЛК, часто слышу про нее.
avatar
Я не парюсь с реальным графиком платежей. Просто считаю количество (дробное, например 365/30) интервалов в год и по нему по формуле степени получаю приближенную xirr доходность без использования чиствндох
Рустем Мухаметшин, я хочу считать все платежи, инстенктивно чую, что это самое верное направление для точности и верности прогнозов (моя модель обновляет купоны в зависимости от моего прогноза ставок автоматически).
avatar

Читайте на SMART-LAB:
Фото
DXY у ключевой поддержки: шорт-сквиз или новый этап распродажи?
Индекс доллара DXY плавно дрейфует в область месячного минимума в районе 98,50. Однако ослабление доллара на FX неравномерно: EURUSD стоит около...
Фото
Итоги первичных размещений ВДО и некоторых розничных выпусков на 4 декабря 2025 г.
Следите за нашими новостями в удобном формате:  Telegram ,  Youtube ,  Смартлаб ,  Вконтакте ,  Сайт
Портрет клиента Займера
За 11 лет работы к нам обратилось более 20 млн россиян. Кто же является типичным заемщиком Займера? 🔎 Посмотрим данные за ноябрь этого года. 🔶...

теги блога XXX★

....все тэги



UPDONW
Новый дизайн