Это в некотором роде отклик на статью Владимира, посвященную исследованию распределения дефолтов в портфеле облигаций методом Монте-Карло.
В ней он, в частности, утверждает, что
«Нельзя посчитать вероятности для 40 облигаций через построение пространства событий, потому что количество вариантов слишком большое»
Нужно понимать, что автор — не специалист в области финансов. Но Владимир движется в правильном направлении. Он старается копать все глубже, а в результате может получить неожиданный и полезный результат. Его глаз не замылен академическими формулировками. У него нет цели рекламировать и монетизировать свой тг-канал, как это делают уже примелькавшиеся на смартлабе финансовые блогеры. Он хочет честно во всем разобраться с точки зрения обычного инвестора, не желающего терять лишние деньги на рынке ВДО. Он чем-то напоминает Алексея Галицкого, который, имея бэкграунд школьного учителя ОБЖ, благодаря упорному труду создал свое «народное» рейтинговое агентство и стал заметной фигурой в области оценки кредитных рисков. Однако пока что к изысканиям Владимира стоит относиться с осторожностью: его анализ в текущем виде — это ещё не экспертное заключение. В общем, будем наблюдать.
# Получение данных о ценах облигаций
import requests
import csv
from datetime import datetime
import time
def get_bond_data(bond_identifier, start_date, end_date):
"""Получение данных по облигации (ISIN, тикер или название)"""
# Поиск облигации
url = "https://iss.moex.com/iss/securities.json"
params = {'q': bond_identifier}
response = requests.get(url, params=params)
data = response.json()
# Ищем облигацию
bond_info = None
for security in data['securities']['data']:
if (security[1] == bond_identifier or # ISIN
security[0] == bond_identifier or # тикер
security[2] == bond_identifier): # название
bond_info = {
'ticker': security[0],
'shortname': security[1],
'fullname': security[2],
'isin': security[1] if security[1].
На излёте первой декады сентября держатели облигаций ВТБ С1-519 столкнулись с неприятным сюрпризом: оказалось, что их бумаги не будут погашены по номиналу, как они ожидали. Выяснилось, что инвесторы получат выплату в размере всего лишь 316 рублей на облигацию и небольшую сумму в довесок, как слабое утешение:
Вчера мне прислали ссылку на статью из “Пульса” и поинтересовались, действительно ли амортизируемые облигации могут принести дополнительную реализованную доходность. В статье разбираются “две ситуации” — реальная и гипотетическая. В одной ситуации приобретается конкретная облигация с ежемесячной амортизацией, а в другой — искусственно предполагается, что происходило бы, если бы та же самая бумага платила обычные купоны, т.е. амортизация отсутствовала. Для убедительности в статье приведены расчеты в Excel и наглядно показано, что при определенных допущениях бумага с амортизацией выгоднее обычной.
Расчеты, конечно, можно не проверять, так как это не имеет смысла по простой причине: исходные предпосылки автора неверны. Но чисто арифметических ошибок там нет.
Главная finmath ошибка состоит в предположении, что цены обеих облигаций (в % от номинала) на момент их покупки можно считать равными.
Вымышленную облигацию достаточно легко оценить, так как она отличается от реальной только структурой денежных потоков. Возможны два подхода: 1) через эффективную доходность и 2) используя КБД с добавлением Z-спреда. Второй способ более правильный, но из за короткого срока бумаг отклонения будут минимальными.
Инвесторы на рынке облигаций могут преследовать разные цели:
⠀⠀⠀⠀⠀
Спекулятивным может считаться портфель, который инвестор собирается вскоре продать. Обычно с этой целью приобретаются длинные ОФЗ в расчете на рост их стоимости, если начнется снижение ставок. Инвестор ожидает, что реализованная доходность (HPR) его вложений за время смягчения ДКП превысит эффективную доходность к погашению (YTM).
Инвестор открыл в банке срочный вклад с капитализацией процентов. В качестве альтернативы он мог бы приобрести бескупонную облигацию и удерживать ее до погашения. Его не волнуют ни ценовой риск, ни риск реинвестирования. Он точно знает размер будущего дохода. Стоит ли ему переживать еще о чем-нибудь?
Вместо того чтобы сразу израсходовать деньги на текущее потребление, инвестор откладывает траты на определенный срок. Пусть X₀ и Xₜ обозначают стоимость типичного набора товаров на сегодняшний день и через t лет соответственно. Как правило, Xₜ > X₀ вследствие потребительской инфляции — устойчивого роста общего уровня цен на товары и услуги, приводящего к уменьшению покупательной способности денег.
Предположим, что стоимость Xₜ известна заранее. Мы можем найти численное значение инфляции в годовом выражении, равное π, из выражения Xₜ = X₀∙( 1+ π)ᵗ Согласятся ли участники рынка на номинальную ставку i = π по вкладу в банке или облигациям с нулевым купоном?
import requests import pandas as pd import numpy as np import matplotlib.pyplot as plt
# URL для API MOEX, данные по ZCYC (zero coupon yield curve) url = "https://iss.moex.com/iss/engines/stock/zcyc/securities.json" # Запрос на получение данных response = requests.get(url) data = response.json() # Извлекаем данные из секции 'params' columns = data['params']['columns'] values = data['params']['data'] # Преобразуем в DataFrame df = pd.DataFrame(values, columns=columns) # Выбираем нужные столбцы: B1, B2, B3, T1, G1, ..., G9 df_selected = df[['tradedate', 'tradetime', 'B1', 'B2', 'B3', 'T1', 'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9']] # Извлекаем параметры для функции GT из df_selected beta0 = df_selected['B1'].values[0] beta1 = df_selected['B2'].values[0] beta2 = df_selected['B3'].values[0] tau = df_selected['T1'].values[0] g_values = df_selected[['G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9']].values[0].tolist()
Вновь взяться за перо меня побудили пост Андрея Х. о доходности к погашению (YTM) и чудовищные проявления ригоризма в комментариях к нему.
Вот утверждения автора, которые подверглись жестокой обструкции:
YTM (Yield to Maturity) — общий доход, ожидаемый от облигации, если облигация удерживается до погашения.
Этот вид доходности предполагает реинвестирование купонов внутри года и позволяет наиболее корректно сравнивать бумаги с разными параметрами (срок, купон, изменение цены)
И в самом деле, YTM это не “общий доход”, а ставка дисконтирования. Мы ведь помним, чем качественно отличаются доход, прибыль и процентная ставка? А выражение “реинвестирование купонов внутри года” правильно будет заменить на “сложную ставку процента ”
Конечно, Андрей Х. создает такие миниатюрные посты не в просветительских целях, а чтобы в очередной раз прорекламировать свои соцсети и телеграм-канал. Завсегдатаи смартлаба это понимают, и не имеют привычки придираться к содержанию и осуждать автора за мелкие недочеты. Мало кто ожидал, что в комментариях возникнет агрессивный неофит, гневно размахивающий старой публикацией малоизвестных американских финансистов.