Добрый день!
Хочу поделиться своим мобильным приложением для расчета доходности облигаций, полностью сделанным на 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 лет:
