Добрый день!

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

Цель: популяризация создания мобильных приложений на 1С + помощь в выборе облигаций для инвестирования.

Скачать приложение "Доходность облигаций" на RuStore

 

Так как в данной публикации есть 2 логические части - техническая (разработка конфигурации и мобильного приложения) и финансовая (расчет доходности), я разделю повествование на 2 части:

 

Описание техническое части (разработка конфигурации и мобильного приложения):

Еще до создания мобильного приложения я сделал для себя конфигурацию на 1С, позволяющую получать данные по облигациям и рассчитывать доходность по ним.

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

В итоге у меня получилось проанализировать в автоматическом режиме все ОФЗ + около 2500 шт корпоративных облигаций, у которых смог рассчитать доходность.

Конфигурация получала данные HTTP - запросом по API московской биржи + API Т-инвестиций + парсила сайт Смарт-лаба (рейтинги, параметры облигаций).

Материалов предостаточно, подробно описывать не буду.

Периодически в пульсе Тинькова я выкладывал расчеты доходности облигаций на основе отчетов из моей конфигурации в таком виде:

"Простую" доходность к погашению ОФЗ:

 

Эффективную доходность (с реинвестированием) ОФЗ:

 

Расшифровка эффективной доходности ОФЗ:

 

Эффективную доходность (с реинвестированием) Корпоративные облигации, пример:

 

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

По инструкции Собираем и запускаем приложение на Android (.apk файл) собрал в апк мою конфигурацию, меня порадовало 3 момента:

1) Сборка мобильного приложения заняла менее одного часа (с установкой всех компонентов)

2) Весь функционал работал.

3) Мобильное приложение получает данные в любой точке города, хотя мобильный интернет у нас глушат. Брокерские приложения сбера, тинькова, альфы  не работают, а моё приложение всегда работает !

Естественно, формы и отчеты приходилось прокручивать, т.к. они не влезали в рабочую область.

Я оптимизировал вывод информации в форму списка справочника "облигации", с применением фильтров по этому справочнику + вынес форму списка в рабочую область начальной страницы.

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

 

Внешний вид приложения:
 

 

Опции приложения:
 

Форма элемента справочника "Облигации":
 

 

Форма записи расчета эффективной доходности:
 

 

 

Отчет "Стоимость портфеля":
 

 

Отчет "Ближайшие выплаты" (на год вперед)
 

На данный момент мобильное приложение "Доходность облигаций" позволяет:
1) Получить облигации по следующим режимам торгов:
- "ОФЗ" (TQOB) - 32 шт.
- "корпоративные" (TQCB) - около 850 шт.
- "дефолтные" (TQRD) - 10 шт. 

2) Рассчитывать "простую доходность к погашению".

3) Рассчитывать "эффективную доходность (с учетом реинвестирования купонов) с выводом подробного графика реинвестирования.

4) Выводить стоимость вашего портфеля из облигаций.

5) Выводить график выплат купонов на ближайший год и ожидаемый денежный поток по вашим облигациям.

6) Вводить свою сумму инвестирования по каждой облигации и получать подробный расчет: результат в конце срока, суммы удержаного НДФЛ и т.д.

7) Бонус: загрузка и отображение акций (режим торгов: TQBR, 260 штук), с возможность добавлять в избранное) - даёт возможность посмотреть цену и изменение цены акций, даже когда мобильный интернет "глушат".

 

Описание финансовой части (расчета доходности):

Приложение позволяет рассчитать доходность по облигациям двух видов:

1) "Простая доходность к погашению" - это годовая доходность в процентах, которую получит владелец облигации, если купит её по текущей цене и продержит до погашения.

2) "Эффективная доходность к погашению" - это годовая доходность с учетом реинвестирования полученных купонов. Если сравнивать с банковскими вкладами, то это аналог "сложного" процента, когда проценты "капитализируются". При расчете эффективной доходности к погашению нужно учесть нескольких последовательных реинвестиций купонных доходов, что делает подсчет вручную очень трудоёмким. По каждому реинвестированию в приложении можно посмотреть подробную информацию - сколько докупили облигаций, по какой цене, какой налог заплатили и т.д. Алгоритм расчета эффективной доходности: покупаем на определенную сумму облигаций по текущей цене, на сумму выплаченных купонов мы приобретаем еще эти же самые облигации по выбранному варианту цены, в конце мы имеем определенное количество облигаций по цене конечного периода, умножаем кол-во на цену, получаем сумму, делим её на кол-во лет.

В приложении есть возможно рассчитать эффективную доходность по 3 вариантам цен, по которой будут реинвестироваться купоны:
а) по текущей цене
б) по номиналу облигации
в) по прогнозной цене - планируемая цена облигации в определенный период, с учетом равно пропорционального распределенного номиналь��ого дохода по всему сроку от момента покупки до конца срока владения.

Пример: облигация со сроком 5 лет, текущая цена 500 рублей, номинал 1000 рублей, выплата купонов 2 раза в год

По текущей цене - докупаем облигации по 500 рублей.
По номиналу облигации - докупаем облигации по 1000 рублей.
По прогнозной цене - докупаем облигации по усреднённой цене.
Шаг цены будет рассчитан следующим образом: (Номинал-ТекущаяЦена)/КоличествоВыплатКупоновВсего = (1000-500)/10 = 50 рублей в полгода - это настолько цена облигации должна «планово» увеличиваться каждые полгода. Т.е. сейчас купили по 500 рублей, через полгода за 550 рублей, через год по 600 рублей, а в конце цена будет равна номиналу (1000 руб).
На мой взгляд, это самый оптимальный вариант расчета, т.к. чем ближе к погашению, тем, как правило, ближе цена к номиналу.

Приложение позволяет рассчитать доходность С удержанием НДФЛ и БЕЗ удержания НДФЛ (с купоном / с увеличения цены).
Если у вас счет ИИС-3, то купоны и увеличение цены по облигациям на ИИС-3 не облагаются налогом, и вы можете считать доходность БЕЗ учета удержания НДФЛ. Эффективная доходность на большом сроке очень сильно отличается С НДФЛ и БЕЗ НДФЛ.

В приложении есть возможность посчитать и сравнить эффективные доходности облигаций на определенной дистанции - на 3, 5, 10 лет. Это поможет сделать правильный выбор при покупке облигаций, исходя из ваших целей (накопить на квартиру и т.д.).

В приложении можно отобрать облигации по сроку, и если вас не интересуют длинные облигации, вы ограничивает выборку, например до 3 лет. Есть возможность добавлять облигации в избранное, и рассчитывать только по ним.

Все параметры облигаций загружаются автоматически по API с Московской биржи (MOEX). Руками вводить ничего не нужно. Данные загружаются даже когда мобильный интернет в других инвест-приложениях не работает.

Все данные по облигациям, фильтры, избранное хранятся на вашем смартфоне, а по кнопке "загрузить / обновить" происходит обновление цены, срока и т.п.

Доступен просмотр календаря выплаты купонов по каждой облигации.

В приложении можно указать количество облигаций в вашем портфеле и сформировать отчеты: «Баланс портфеля» и «Ближайшие выплаты» (на год вперед).

Не является индивидуальной инвестиционной рекомендацией.

Расчет приблизительный, на длинной дистанции невозможно предугадать, какая будет политическая и экономическая обстановка. Текущая цена облигации сильно зависит от ключевой ставки ЦБ.

Мобильное приложение тестировалось на моём смартфоне: Realme GT NEO

Мобильное приложение разработано для ОС: Android

Расчет доходности на примере облигации ОФЗ 26225 (SU26225RMFS1)

Исходные данные:

Номинал: 1000 руб

Величина купона: 36,15 руб

Периодичность выплаты купона: 182 дня

Текущая дата: 24.01.2026 г.

Дата погашения: 18.07.2035 г.

Срок до погашения в днях = 18.07.2035 г. – 24.01.2026 г. = 3 028 дней

Срок до погашения в годах = 3 028 / 365 = 8,3 лет (точное значение = 8,29589041)

НКД на текущую дату: 13,71 руб

Цена на текущая дату: 662,8 руб

Ближайшая купонная выплата: 20.05.2026 г.

До ближайшей купонной выплаты = 20.05.2026 г. - 24.01.2026 г. = 116 дней

Сумма инвестиций = 1 облигация = 662,8 руб

 

1) Расчет простой доходности «до погашения»

Рассчитаем доход, который мы получим от инвестирования: это доход от выплаченных купонов и «номинальный» доход – это разница между ценой погашения (номинал) и ценой покупки:

Доход = КупонныйДоход + НоминальныйДоход.

КупонныйДоход = ВеличинаКупона * КоличествоВыплатКупонов

КоличествоВыплатКупонов = СрокДоПогашенияВДнях / ПериодичностьВыплатыКупона

КоличествоВыплатКупонов = 3 028 дней / 182 дня = 16,637362 раза

КупонныйДоход = 36,15 руб * 16,637362 раза = 601,44 руб

НоминальныйДоход = Номинал – ТекущаяЦена

НоминальныйДоход = 1000 руб - 662,8 руб = 337,2 руб

Доход = 601,44 руб + 337,2 руб = 938,64 руб.

Т.е. мы получим доход с 1 облигации равный = 938,64 руб к дате погашения.

Вложив сейчас 662,8 руб мы «заработаем» 938,64 руб через 8,3 лет.

Что бы рассчитать общий процент доходности нашей инвестиции, нужно полученную сумму дохода  разделить на первоначальные инвестиции и выразить в процентах:

ПроцентОбщейДоходности  = 100% * (Доход / Инвестиции)

ПроцентОбщейДоходности  = 100 (938,64 руб / 662,8 руб) = 100 1,4161738 = 141,61738 %

Т.е. за 8.3 года мы увеличим свой капитал на 141,61 %.

Что бы рассчитать годовой процент доходности, нужно общий процент доходности инвестиций разделить на количество лет инвестирования:

ПроцентГодовойДоходности  = ПроцентОбщейДоходности / СрокИнвестирования

ПроцентГодовойДоходности = 141,61738 %  / 8,29589041 лет = 17,070787 %, округляем до 17,07 %

Проверяем в мобильном приложении, всё верно, доходность к погашению = 17,07 % годовых

2) Расчет простой доходности «до погашения» с учетом удержания НДФЛ с купонных выплат.

Берем расчеты из примера 1) с единственной разницей: с купонного дохода мы удержим 13% НДФЛ:

КупонныйДоход = 601,44 руб

НДФЛКупонногоДохода = КупонныйДоход * 0,13

НДФЛКупонногоДохода = 601,44 руб * 0,13 = 78,1872 руб

КупонныйДоходЧистый = КупонныйДоход – НДФЛКупонногоДохода;

КупонныйДоходЧистый = 601,44 руб - 78,1872 руб = 523,2528 руб

Альтернативный вариант расчета чистого дохода, «очищенного» от НДФЛ (это тоже самое):

КупонныйДоходЧистый = КупонныйДоход (1-0,13) = КупонныйДоход 0,87

КупонныйДоходЧистый = КупонныйДоход * 0,87 = 523,2528 руб

 

Доход = 523,2528 руб + 337,2 руб = 860,4528 руб.

ПроцентОбщейДоходности  = 100 (860,4528 руб / 662,8 руб) = 100 1,2982088 = 129,82088 %

ПроцентГодовойДоходности = 129,82088 % / 8,29589041 лет = 15,6488, округляем до 15,65 %

Проверяем в мобильном приложении, всё верно, доходность к погашению = 15,65 % годовых

3) Расчет простой доходности «до погашения» с учетом удержания НДФЛ с купонных выплат и с учетом удержания НДФЛ с разницы цены (номинального дохода).

Берем расчеты из примера 2) с единственной разницей: с номинального дохода мы удержим 13% НДФЛ:

НоминальныйДоход = 337,2 руб

НоминальныйДоходЧистый = НоминальныйДоход * 0,87

НоминальныйДоходЧистый = 337,2 руб * 0,87 = 293,364 руб

Доход = 523,2528 руб + 293,364 руб = 816,6168 руб.

ПроцентОбщейДоходности  = 100 (816,6168 руб / 662,8 руб) = 100 1,2320712= 123,20712 %

ПроцентГодовойДоходности = 123,20712 % / 8,29589041 лет = 14,8515, округляем до 14,85 %

Проверяем в мобильном приложении, всё верно, доходность к погашению = 14,85 % годовых

4) Расчет простой доходности «до погашения» с учетом удержания НДФЛ с купонных выплат и с учетом удержания НДФЛ с разницы цены (номинального дохода) и с учетом НКД.

Выполняем расчет как в примере 3), но с одним отличием:

В расчет был добавлен учет НКД (накопленный купонный доход).

Как НКД влияет общую доходность?

Покупая облигацию с НКД – вы «замораживаете» сумму НКД, эти средства у вас не работают, не приносят доход.

Но они «не работают» не весь срок до погашения, а всего лишь до момента первой купонной выплаты.

Получается, НКД влияет на показатель «Инвестиции» в формуле: 

ПроцентОбщейДоходности  = 100% * (Доход / Инвестиции)

В нашем случае показатель «Инвестиции» равен цене покупки одной облигации =  662,8 руб

Категорически неверным будет увеличивать цену на сумму НКД в расчете, ведь после первой купонной выплаты сумма НКД высвобождается, и она уже не будет являться частью «инвестиции».

Дельту влияния обозначу как «УвеличениеИнвестиции»

Формулу скорректирую на следующую:

ПроцентОбщейДоходности  = 100% * (Доход / ( Инвестиции + УвеличениеИнвестиции ) )

Показатель «УвелическиеИнвестиции» - это влияние НКД на «среднюю» цену приобретения (сумма инвестиций) на протяжении всего срока.

Я рассчитываю влияние НКД на показатель «инвестиции» следующим образом:

Нахожу количество дней до первой купонной выплаты:

ДнейДоПервойВыплаты = БлижайшаяДатаВыплатыКупона - ТекущаяДата

ДнейДоПервойВыплаты = 20.05.2026 г. - 24.01.2026 г. = 116 дней

Т.е. мы «заморозим» НКД в размере 13,71 руб на срок 116 дней из общего срока до погашения 3 028 дней.

Исходя из этого, я «размазываю» равно пропорционально сумму НКД на весь срок инвестирования по формуле:

 

УвеличениеИнвестиции = НКД * (ДнейДоПервойВыплаты / СрокИнвестирования)

УвеличениеИнвестиции = 13,71 руб * (116 дней / 3028 дней) = 0,525218 руб

Т.е. НКД «увеличит» «среднюю» сумму инвестирования на 0,525218 руб

 

ПроцентОбщейДоходности  = 100 * (816,6168 руб / ( 662,8 руб + 0,525218  ) )

ПроцентОбщейДоходности = 100 * (816,6168 руб / 663,325218 руб) = 123,10956

ПроцентГодовойДоходности = 123,10956 % / 8,29589041 лет = 14,8398, округляем до 14,84 %

Проверяем в мобильном приложении, всё верно, доходность к погашению = 14,84 % годовых

Получается, НКД на больших сроках лишь незначительно влияет на доходность и наоборот, чем выше купонная доходность и меньше срок – тем существеннее НКД влияет на доходность.

5) Расчет «эффективной доходности» (с реинвестированием купонов)

Расчет выполняется по тем же самым формулам, что и в примере 1), но с существенной разницей в расчете показателя «КупонныйДоход», который увеличивается с каждым реинвестированием, по выбранной цене реинвестирования:

Подробный расчет показателя «КупонныйДоход» есть в мобильном приложении на вкладке «Эффективная доходность». В каждом периоде реинвестирования мы докупаем те же самые облигацию на  сумму купонного дохода, т.е. «реинвестируем». Результат реинвестирования сильно зависит от цены, по которой мы докупаем облигации, в мобильном приложении есть 3 варианта цены реинвестирования: прогнозная (средняя), текущая, номинальная.

Колонка «Сумма на конец» на фото = это показатель «КупонныйДоход» от изначально инвестированных средств («сумма инвестиций», указанная для облигации, по умолчанию = 1 млн. рублей).

Расчет по прогнозной цене (равно пропорциональная цена от текущей цены до цены погашения – номинала):

Расчет по текущей цене:

Расчет по номиналу:

Удержания НДФЛ с разницы цены (номинального дохода) при расчете эффективной доходности выполняется аналогично примеру 1, она выводится в последнем периоде реинвестирования в колонке «НДФЛ с разницы цены» и уменьшает купонный доход «сумма на конец»:

Удержание НДФЛ с купонного дохода выполняется при каждом реинвестировании и уменьшает количество купонного дохода и соответственно количество облигаций, которое мы «докупаем»:

Учет НКД происходит в первом периоде, облигации изначально покупаются по ЦЕНА+НКД, а сумма НКД  высвобождается в показателе «Возврат НКД», в конце первого периода облигации покупаются на сумму купонного дохода + сумма НКД, которые «возвратились».

Для расчета эффективной доходности очень важным параметром является опция «На дистранции»:

При заполнении параметра «на дистанции» приложение рассчитывает доходность ровно на конец заданного срока (2 года), соответственно количество периодов уменьшается до «текущая дата» + 2 года.

Предполагается, что облигация будет продана по цене последнего периода, пересчитывается  пропорционально доход от купона в последнем периоде, а номинальный доход рассчитывается как разница «цена последнего периода» - текущая цена.

Эта опция будет полезна, если вы хотите сравнить эффективную доходность облигаций на определенной дистанции, например 5 лет: