Блог им. Ride_The_Market_Wave

Математика Облигаций. Доходность к погашению.

Друзья, всем привет!
Сегодня будет первая статья в этом блоге.

Финансовая математика начинается с понятия временной стоимости денег.
Эта теория постулирует, что денежные потоки имеют разную стоимость в зависимости от момента времени, в который они будут получены.
Что вполне логично, ведь 100 рублей сегодня и 100 рублей через год — это разные деньги.
Поэтому денежные потоки надо дисконтировать под определённую ставку. Так возникает понятие приведённой стоимости денег (PV или Present Value).

 


Автодор БО-3 выпуск 2 RU000A104XR2
(https://www.moex.com/ru/issue.aspx?board=EQNE&code=RU000A104XR2)
 
В качестве примера рассмотри конкретную бумагу, которая обращается на рынке.
Многие из часто оплачивают проезд по дорогам компании Автодор, давайте и разберём их облигацию.
Для простоты возьмём бумагу с фиксированным купоном и без аморатизации, с выплатами 2 раза в год.
Сразу сделаю замечание, что для наглядности и простоты расчета не будем учитывать реинвестирование купонов.

# Задаём график выплат
start_date = '2025-08-01'
end_date = '2027-08-01'
freq = '6MS'

date_range = pd. <a name="cut"></a> date_range(
    start = start_date, end = end_date, freq = freq
)
cash_flows = [0, 53.1, 53.1, 53.1, 1000 + 44.35]
for i in range(0,len(date_range)):
    print(f"Выплата номер {i} в дату {date_range[i].strftime('%d.%m.%Y')} составит {cash_flows[i]}")


Или графически можно изобразить так:
Математика Облигаций. Доходность к погашению.

Вычислим доходность к погашению (YTM).
Нам даны стоимость облигации на рынке, номинал, график выплаты (cash flow) купонов и номинала.
Чтобы найти доходность надо решить степенное уравнение отностительно параметра r.
Проще всего получить приближенное решение численным методом, возьмём реализацию из библиотеки scipy.

Математика Облигаций. Доходность к погашению.


Код языке python:
# Начальное приближение
initial_guess = 0.1

# Задаём уравнение f(x) = 0
def equation(x):
    N = 1000
    P = 932
    n = 2
    T = 2
    cash_flows = [0, 53.1, 53.1, 53.1, 1000 + 44.35]
    
    return P - np.sum([ cash_flows[i]/((1+(x/n))**(i)) for i in range(1, n*T+1) ])
    
# Решение с помощью fsolve
solution_fsolve = fsolve(equation, initial_guess)[0]

print(f"Оценка доходности к погашению {100*solution_fsolve:.2f} %, в процентах годовых")
Оценка доходности к погашению 14.25 %, в процентах годовых

По итогу получили доходность 14.25%. А на сайте мосбиржи указана доходность 15.25%.
Причина расходнения как раз в реинвестировании купонов, в том что мы её не учли.
Грубо говоря 100 рублей купонов за год нам бы дали примерно 10 рублей, вот как раз и тот самый один процент.

Спасибо за внимание!
I hope you found this helpful!

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

423
12 комментариев
dsfdfss, ИИ выдал Вам сомнительный ответ, НКД в текущей точке 0. НКД отсчитывается от последней купонной выплаты. Код очень простой и легко работает — 0 в массив специально добавил, чтобы показать, что в дату расчета выплаты нет. А выбор метода оптимизации в данном случае это просто вкусовщина.
avatar
Ride_The_Market_Wave, я с тобой спорить не буду, просто скажу так, в вопросах кто касается расчетов, программирования, бухгалтерии, математики  и тд он умнее всех вас вместе взятых, ты с ним поговри а не со мной он тебе все по полочкам разложит
avatar
У этого выпуска погашение в другую дату.

avatar
dmytriy klimov, для простоты расчета сместил даты на месяц. Тут скорее попытался сделать приближённую оценку доходности и показать как применяются формулы. Точный расчёт будет значительно сложнее — надо учитывать абсолютное количество дней от выплаты до выплаты и реинвестирование купонов. Вам спасибо за комментарий — тут надо было подробнее описать исходные допущения))
avatar
Ride_The_Market_Wave, Так в этом же причина расхождения! И никакое реинвестирование здесь ни причём)))



avatar
dmytriy klimov, сокращение срока действительно приводит к тому, что последняя выплата с учётом дисконтирования станет немного больше. Но даже с этой поправкой я получил значение 14,8%. Допускаю, что могут быть ещё неучтённые эффекты. Но в любом сразу видно, и это радует, что пишет Естественный Интеллект, а не ИИ)))

avatar
Ride_The_Market_Wave, Надо дни считать правильно. Там последний купонный период 152 дня, те n не равно 2 и Т, соответственно, тоже.
avatar
dmytriy klimov, тут полностью согласен))
avatar
Ride_The_Market_Wave, и зачем этот код если ЧИСТВНДОХ экселя сделает это проще, точнее и, главное, вы получите такой же результат, что и биржа?
avatar
dmytriy klimov, вычисления делать интересно. Мне лично это нравится. Теперь понятно — ЧИСТВНДОХ как раз и учитывает реинвестирование! Безусловно, можно пользоваться и готовыми калькуляторами, да и вообще готовыми решениями. Но я и не призываю Вас пользоваться моим кодом, и не претендую на последнюю правду. Тут каждый решает для себя)
avatar
Ride_The_Market_Wave, так и ваша формула учитывает))). У вас погрешность из-за неверных начальных условий появляется. ЧИСТВНДОХ такую же формулу использует как и вы. Про реинвестирование, которое вы не видите рекомендую почитать  smart-lab.ru/blog/1054369.php . Если коротко — YTM можно не только дисконтированием считать.
avatar

Читайте на SMART-LAB:
💰 СД Займера рекомендовал направить на дивиденды 100% чистой прибыли IV квартала 2025
Совет директоров Займера на заседании 12 мая рекомендовал направить на выплату дивидендов за IV квартал 2025 года 1,11 млрд рублей. Это...
Рефинансирование как главный риск 2026 года для держателей облигаций
Если в 2024–2025 годах ключевой темой для российского долгового рынка была сама стоимость денег, то в 2026 году фокус смещается. Теперь для...
Фото
📍 Почему офлайн-сеть остаётся важной частью экосистемы «МГКЛ»
Несмотря на активное развитие онлайн-сервисов и цифровых направлений, офлайн-сеть остаётся одной из ключевых частей экосистемы Группы «МГКЛ»....
Фото
Исповедь по Магниту: пришло время каяться за свои грехи. Самый подробный разбор отчета за 2025 год 
Магнит — это как сыр с плесенью. Удовольствие для гурманов 😁 Примитивная оценка акций Магнита делается через мультипликатор EV/EBITDA...

теги блога Ride_The_Market_Wave

....все тэги



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