Облигационный калькулятор

 

Облигационный калькуляторОбщее описаниеВывод результатовМаксимальный рейтинг (4060-у)Приоритет при выборе рейтингов:Алгоритм определения максимального рейтинга:Рейтинговая группаСоответствующий индекс рублевых облигацийМетодика выбора аналоговВыбор аналоговПриоритет цен облигаций при оценке доходности к погашению облигаций-аналоговРасчет по эмитентуРасчет безрисковой доходностиРасчет денежных потоков для облигаций с плавающей ставкой (floaters)Структура входных данных денежных потоков по облигациямМатематические операции и функцииПеременные из текущей строки денежного потокаПоказатели сценария, используемые в формулах денежных потоках (Ключевые показатели)Примеры формул для расчета потоков floater купонов

Общее описание

Задача облигационного калькулятора - рассчитать стандартные метрики по облигации с учетом ее цены, даты расчета, а также оценить (найти):

  1. Кредитный спред к безрисковой кривой облигаций
  2. Рейтинговую группу облигации, соответствующий облигационный индекс
  3. Кредитный спред соответствующего облигационного индекса и его отклонение за последние 20 дней
  4. Облигации-аналоги, с близкой датой погашения (оферты), той же рейтинговой группой и по которым были торги.
  5. Оценить "рыночность" сделок с облигациями по методологии Банка России в отношении фидуциарной ответственности НПФ.

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

#ПоказательРасшифровка
1Максимальный рейтинг (4060-у)Агрегированный рейтинг облигации в соответствии с указанием 4060-У
2Рейтинговая группаГруппа рейтингов на основе таблицы соответствия
3Соответствующий индекс облигацийСоответствующий рейтинговой группе, дюрации и классу индекс облигации
4Срок до погашения (оферты)Срок до погашения (оферты) в годах
5НКДНакопленный купонный доход
6Дюрация Маколея, летДюрация Маколея
7Модифицированная дюрацияМодифицированная дюрация
8YTM (эфф), %Доходность к погашению (оферте) облигации в % годовых
9YTM (эфф), % на GcurveДоходность к погашению в % годовых на безрисковой кривой доходности с соответствующим уровнем дюрации
10G-spread (к кривой Gcurve), б.п.Кредитный спред рассчитанной облигации в базисных пунктах
11Z-spread (к кривой Gcurve), б.п.Кредитный спред рассчитанной облигации в базисных пунктах с учетом дисконтирования денежных потоков по облигации под ставку соответствующую дюрации на бескупонной кривой доходности (Gcurve).
12G-Spread соответсвующего индекса, б.п.Кредитный спред соответствующего индекса
13СКО (20 дн) G-Spread соотв. индекса, б.п.Стандартное отклонение кредитного спреда соответствующего индекса за последние 20 дней
14Медианный G-Spread по аналогам, б.п.Медианный кредитный спред по облигациям-аналогам рассчитанный на выборке
15YTM (эфф), % соотв. индексаДоходность к погашению (оферте) соответствующего индекса в % годовых

Вывод результатов

Результаты расчетов представляются в трех форматах:

Максимальный рейтинг (4060-у)

Максимальный рейтинг облигации строится на основе рейтингов эмиссий и рейтингов эмитента присвоенных международными (S&P, Fitch, Moody's) и локальными (Эксперт РА и АКРА) рейтинговыми агентствами . Расчет максимального рейтинга облигации соответствует методологии из указания 4060-у.

Приоритет при выборе рейтингов:

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

ПриоритетЭмиссия/ЭмитентАгентство
1Рейтинг эмиссииЛокальные
2Рейтинг эмиссииМеждународные
3Рейтинг эмитентаЛокальные
4Рейтинг эмитентаМеждународные

Алгоритм определения максимального рейтинга:

Шаг 1. Смотрим рейтинги эмиссии от локальных рейтинговых агентств. (если нет, то спускаемся по приоритету)

Шаг 2. Определяем рейтинговую группу для каждого рейтинга облигации из группы приоритета

Moody's S&P Fitch Эксперт РА АКРА 
рейтинггр.рейтинггр.рейтинггр.рейтинггр.рейтинггр.
Aaa11AAA1AAA1ruAAA1AAA(RU)1
Aa11AA+1AA+1ruAA+2AA+(RU)2
Aa21AA1AA1ruAA2AA(RU)2
Aa31AA-1AA-1ruAA-3AA-(RU)3
A11A+1A+1ruA+3A+(RU)3
A21A1A1ruA4A(RU)4
A31A-1A-1ruA-4A-(RU)4
Baa11BBB+1BBB+1ruBBB+5BBB+(RU)5
Baa21BBB1BBB1ruBBB5BBB(RU)5
Baa31BBB-1BBB-1ruBBB-6BBB-(RU)6
Ba12BB+2BB+2ruBB+6BB+(RU)6
Ba23BB3BB3ruBB7BB(RU)7
Ba34BB-4BB-4ruBB-8BB-(RU)8
B15B+5B+5ruCCC+8CCC+(RU)8
B26B7B6ruCCC8CCC(RU)8
B37B-7B-6ruCCC-8CCC-(RU)8
Caa18CCC+8CCC+8ruCC+8CC+(RU)8
Caa28CCC8CCC8ruCC8CC(RU)8
Caa38CCC-8CCC-8ruCC-8CC-(RU)8
Ca18CC+8CC+8ruC+8C+(RU)8
Ca28CC8CC8ruC8C(RU)8
Ca38CC-8CC-8ruC-8C-(RU)8
C18C+8C+8Нет данных9Нет данных9
C28C8C8Отозван9Отозван9
C38C-8C-8ruD10D(RU)10
Нет данных9Нет данных9Нет данных9    
Отозван9Отозван9Отозван9    
D10D10D10    

Шаг 3. На основе рассчитанных групп рейтингов используем максимальную группу и соответствующее ей буквенное обозначение:

№ группыМаксимальный рейтинг (4060-у)
1BBB-
2BB+
3BB
4BB-
5B+
6B
7B-
8CCC
9NR
10D

 

Рейтинговая группа

Для целей определения кредитного спреда вводятся следующие рейтинговые группы:

Рейтинговая группа I – наивысший уровень кредитоспособности и степень надежности по сравнению с другими эмитентами, выпусками ценных бумаг или финансовыми обязательствами. В указанную рейтинговую группу включаются долговые инструменты с рейтингом от ВВВ- и выше (по шкале S&P).

Рейтинговая группа II – высокий уровень кредитоспособности, при этом присутствует некоторая чувствительность к воздействию неблагоприятных перемен в коммерческих, финансовых и экономических условиях. В указанную рейтинговую группу включаются долговые инструменты с рейтингом от ВB- до ВB+ (по шкале S&P).

Рейтинговая группа III – умеренный уровень кредитоспособности, при этом присутствует высокая чувствительность к воздействию неблагоприятных перемен в коммерческих, финансовых и экономических условиях. В указанную рейтинговую группу включаются долговые инструменты с рейтингом от B- до B+ (по шкале S&P).

Рейтинговая группа IV – высокорисковые облигации, либо облигации без рейтинга

№ группыМаксимальный рейтинг (4060-у)Рейтинговая группа
1BBB-I
2BB+II
3BBII
4BB-II
5B+III
6BIII
7B-III
8CCCIV
9NRIV
10DIV

 

Соответствующий индекс рублевых облигаций

Каждой рейтинговой группе и диапазону дюрации и классу активов соответствует индекс облигации:

#Рейтинговая группаДюрация от(лет)Дюрация до(лет)Индекс облигацийКлассы активов
1I03RUCBITRBBB3YОблигации корпоративные, Облигации с ипотечным покрытием
2I35RUCBITRBBB5YОблигации корпоративные, Облигации с ипотечным покрытием
3I5и болееRUCBITRBBB3+Облигации корпоративные, Облигации с ипотечным покрытием
4II03RUCBITRBB3YОблигации корпоративные, Облигации с ипотечным покрытием
5II35RUCBITRBB5YОблигации корпоративные, Облигации с ипотечным покрытием
6II5и болееRUCBITRBB3+Облигации корпоративные, Облигации с ипотечным покрытием
7III03RUCBITRB3YОблигации корпоративные, Облигации с ипотечным покрытием
8III35RUCBITRB3YОблигации корпоративные, Облигации с ипотечным покрытием
9III5и болееRUCBITRB3YОблигации корпоративные, Облигации с ипотечным покрытием
10IV050RUCBITRОблигации корпоративные, Облигации с ипотечным покрытием
11I01RUGBITR1YГЦБ РФ
12I13RUGBITR3YГЦБ РФ
13I35RUGBITR5YГЦБ РФ
14I5и болееRUGBITR5+ГЦБ РФ
15I03RUMBITRBBB3YОблигации субъектов РФ
16I35RUMBITRBBB3+Облигации субъектов РФ
17I5и болееRUMBITRBBB3+Облигации субъектов РФ
18II03RUMBITRBB3YОблигации субъектов РФ
19II350RUMBITRBBОблигации субъектов РФ
20III01RUMBITR1YОблигации субъектов РФ
21III13RUMBITR3YОблигации субъектов РФ
22III3и болееRUMBITR3+Облигации субъектов РФ
23IV01RUMBITR1YОблигации субъектов РФ
24IV13RUMBITR3YОблигации субъектов РФ
25IV3и болееRUMBITR3+Облигации субъектов РФ

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

Методика выбора аналогов

Облигации-аналоги - облигации со схожими инвестиционными характеристиками.

Выбор аналогов

При оценке аналогов учитываются облигации, по которым (по умолчанию):

  1. Та же валюта
  2. Тот же класс актива
  3. Та же рейтинговая группа
  4. Есть наблюдаемые котировки за последние 10 дней
  5. Объем торгов составил не менее 500 тыс. руб.
  6. Срок до погашения отклоняется от рассчитываемой облигации не более чем на 0,5 года
  7. Кредитный спред не более или менее 30 б.п. от кредитного спреда соответствующего индекса
  8. Купоны по облигациям - не являются плавающими

Данные параметры-фильтры можно настроить в режиме онлайн.

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

Приоритет цен облигаций при оценке доходности к погашению облигаций-аналогов

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

УровеньФильтр 
1WAPRICEСредневзвешенная цена, % от номинала
2CLOSEЦена последней сделки, %
3BIDЦена спроса (котировка на покупку) на момент окончания торговой сессии, % от номинала
4MARKETPRICE2Рыночная цена (2), % от номинала
5ADMITTEDQUOTEПризнаваемая котировка, % от номинала

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

Один из видов расчета - расчет средних метрик по облигациям эмитента (G и Z-spread, справедливая цена по среднему Z-spread). Параметры-фильтры подбора (период анализа, мин. объем торгов, диапазон дюрации, валюта, вариант расчета: среднее арифметическое/средневзвешенное) можно настроить в режиме онлайн.

Оцениваемая облигация выделяется цветом.

Расчет безрисковой доходности

При расчете безрисковой доходности в рублях используются значения кривой бескупонной доходности государственных облигаций (% годовых). ( https://cbr.ru/hd_base/zcyc_params/)

При расчете безрисковой доходности для заданной дюрации используется параметрическая модель Нельсона-Сигеля.

Расчет денежных потоков для облигаций с плавающей ставкой (floaters)

При расчете метрик по облигациям с плавающей ставкой купона или номинала используются сценарии и формулы зависимостей потоков от показателей сценария.

Под сценарием понимается группа прогнозных значений ключевых показателей (таких как инфляция, ВВП, ставки ОФЗ и др) на n периодов (месяцев или кварталов) вперед.

Пример сценария

2019-11-27_14-19-41При выборе сценария при проведении расчетов в калькуляторе, система подставит показатели сценария в формулы потоков, пересчитает потоки по облигации и проведет расчет остальных метрик на основе пересчитанных денежных потоков.

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

Структура входных данных денежных потоков по облигациям

Данные с денежными потоками по облигациям имеют следующую структуру (на примере одного потока):

СтолбецОписаниеПример
ISINКод ISIN облигацииRU000A0ZYR91
ISSUERЭмитентГТЛК
COUPON_DATEДата купона/потока05.05.2020
COUPON_RATEСтавка купона0.0715
CF_COUPONРазмер купона в деньгах17.83
CF_NOMINALПогашения части номинала 
OS_NOMINALНепогашенный номинал1000
COUPON_RATE_FORMULAФормула ставки купонаVAR_RU_RATE[get_i_date(VAR_COUPON_DATE)]+(0.0065)
CF_NOMINAL_FORMULAФормула расчета суммы погашения номинала 
OS_NOMINAL_FORMULAФормула расчета суммы непогашенного номиналаVAR_OS_NOMINAL_ARRAY[I-1]-VAR_CF_NOMINAL_ARRAY[I-1]
COMMENTКомментарийКлючевая ставка + 0,65%

В данном примере указана формула зависимости купона от ключевой ставки Банка России. Система при обработке формулы возьмет наиболее приближенное и известное к дате купона (05.05.2020) значение ключевой ставки из сценария (в примере это 6.5%) и прибавит к нему 0.65%. А далее рассчитает размер купона на основе этой расчетной ставки купона, суммы непогашенного номинала и периода накопления купона в днях.

Математические операции и функции

Операция/ФункцияПримерРезультат
+2+35
-5-23
/5/2.52
*5*525
max(a,b)max(5,10)10
min(a,b)min(5,10)5
date(YYYY,MM,DD)date(2019,05,30)30.05.2019
get_i_date(date()) - получить номер периода i из сценария по датеget_i_date(VAR_COUPON_DATE)2
diff_date() - разница между датами в дняхdiff_date(date(2019,05,30), date(2019,04,28))30
Условие (если, то)(7 > 10 ? 1 : 2) + 0.1Вернет 2.1
Условие (если, то)(7 < 10 == true ? 1 : 2) + 0.1Вернет 1.1

Переменные из текущей строки денежного потока

Программа для расчета денежных потоков считывает каждую строку в массиве данных о денежных потоках. Для каждой строки можно использовать переменные, которые будут выводить информацию из считываемой строки. Эти переменные нужны для написания формул расчета CF_COUPON, CF_NOMINAL и OS_NOMINAL

Переменная из строкиОписание
VAR_COUPON_DATEДата денежного потока
VAR_COUPON_RATEСтавка купона (уже рассчитанная)
VAR_CF_COUPONРазмер купона в деньгах (посчитанный по ставке)
VAR_CF_NOMINALРазмер погашения номинала в деньгах
VAR_OS_NOMINALРазмер суммы непогашенного номинала
VAR_CURRENT_PERIODТекущий номер периода сценария исходя из даты денежного потока
VAR_LAST_PERIODНомер периода сценария исходя из даты предыдущего денежного потока
VAR_NEXT_PERIODНомер периода сценария исходя из даты следующего денежного потока
VAR_ITEM_PERIOD[номер периода]Дата по номеру периода из сценария
VAR_OS_NOMINAL_ARRAY[I-1]Значение непогашенного номинала на предыдущую дату денежного потока. I - порядковый номер денежного потока в данной бумаге. (I-1) - с большой буквы
VAR_CF_NOMINAL_ARRAY[I-1]Значение купона на предыдущую дату денежного потока.

Показатели сценария, используемые в формулах денежных потоках (Ключевые показатели)

В показателях сценария используются ключи. Их можно называть как угодно. Основное правило - они должны быть написаны с заглавных букв и пробелы должны соединяться символом "_". Далее данные ключи возможно использовать в формулах денежных потоков используя приставку VAR__

Например я могу в сценарий добавить переменную "Показатель" с ключом INDICATOR. Далее в формулах купонов я могу использовать этот массив как VAR_INDICATOR[номер периода в сценарии]

Стандартные индикаторы

Используются коды показателей сценария с приставкой VAR_

Переменная []ОписаниеИсточник значений
VAR_10Y_EURДоходность German Bonds 10 лет, % годhttp://sdw.ecb.europa.eu/browseTable.do?node=SEARCHRESULTS&q=YC.B.U2.EUR.4F.G_N_A.SV_C_YM.IF_10Y
VAR_10Y_OFZДоходность ОФЗ 10 лет, % годhttps://www.cbr.ru/hd_base/zcyc_params/
VAR_10Y_USDДоходность US Treasuries 10 лет, % годhttps://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yield
VAR_2Y_EURДоходность German Bonds 2 года, % годhttp://sdw.ecb.europa.eu/browseTable.do?node=SEARCHRESULTS&q=YC.B.U2.EUR.4F.G_N_A.SV_C_YM.IF_2Y
VAR_2Y_OFZДоходность ОФЗ 2 годаhttps://www.cbr.ru/hd_base/zcyc_params/
VAR_2Y_USDДоходность US Treasuries 2 года, % годhttps://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yield
VAR_5Y_EURДоходность German Bonds 5 лет, % годhttp://sdw.ecb.europa.eu/browseTable.do?node=SEARCHRESULTS&q=YC.B.U2.EUR.4F.G_N_A.SV_C_YM.IF_5Y
VAR_5Y_OFZДоходность ОФЗ 5 летhttps://www.cbr.ru/hd_base/zcyc_params/
VAR_5Y_USDДоходность US Treasuries 5 лет, % годhttps://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yield
VAR_6M_EURIBORСтавка EURIBOR на 6 месяцевhttps://www.global-rates.com/interest-rates/libor/european-euro/eur-libor-interest-rate-6-months.aspx
VAR_EURRUBКурс евро к рублюhttp://www.cbr.ru/scripts/XML_daily.asp?date_req=16/08/2019
VAR_MIACRСтавка MIACRhttps://www.cbr.ru/hd_base/mkr/mkr_base/
VAR_MOS_PRIME_6MСтавка MOS_PRIME_6Mhttp://www.cbr.ru/hd_base/mosprime/
VAR_ROS_FIXСтавка ROS_FIXhttp://www.cbr.ru/dailyinfowebserv/dailyinfo.asmx?op=ROISfix
VAR_RUOINIAСтавка RUONIAhttp://www.cbr.ru/dailyinfowebserv/dailyinfo.asmx?op=Ruonia
VAR_RU_CPIИнфляция РФ (%, г/г)https://www.gks.ru/price
VAR_RU_GDPВВП РФ (%, г/г)https://www.gks.ru/accounts
VAR_RU_RATEКлючевая ставка ЦБ РФhttp://www.cbr.ru/dailyinfowebserv/dailyinfo.asmx?op=MainInfoXML
VAR_RU_REPO_RATEСтавка РЕПО с центральным банкомhttp://www.cbr.ru/hd_base/repo_session/
VAR_USDRUBКурс доллара США к рублюhttp://www.cbr.ru/scripts/XML_daily.asp?date_req=16/08/2019
VAR_USD_LIBOR_6MСтавка LIBOR USD на 6 месhttps://www.global-rates.com/interest-rates/libor/american-dollar/usd-libor-interest-rate-6-months.aspx
VAR_US_CPIИнфляция в США (%, г/г)https://tradingeconomics.com/united-states/inflation-cpi
VAR_3M_ROBORСтавка ROBOR 3 месhttps://www.bnr.ro/ROBID-ROBOR-5672.aspx
VAR_6M_PRIBORСтавка PRIBOR 6 месhttps://www.cnb.cz/en/financial_markets/money_market/pribor/daily.jsp

Примеры формул для расчета потоков floater купонов

FLOATER_COUPONCF_FORMULA
MosPrime 6M + 2%VAR_MOS_PRIME_6M[get_i_date(VAR_COUPON_DATE)]+0.02
Или VAR_MOS_PRIME_6M[VAR_CURRENT_PERIOD]+0.02
12-59 купоны max(1%;(ИПЦ-100%)+3%)max(0.01,VAR_RU_CPI[get_i_date(VAR_COUPON_DATE)]+0.03)
12-59 купоны - ИПЦ +2.5% годовыхVAR_RU_CPI[get_i_date(VAR_COUPON_DATE)]+0.025
Ключевая ставка +0,1%VAR_RU_RATE[get_i_date(VAR_COUPON_DATE)]+0.001
MAX(ИПЦ+4%;Ключевая ставка ЦБ РФ+2%)max(VAR_RU_RATE[get_i_date(VAR_COUPON_DATE)]+0.02,VAR_RU_CPI[get_i_date(VAR_COUPON_DATE)]+0.04)
2-40 купоны ОФЗ 1 год + 1%VAR_2Y_OFZ[get_i_date(VAR_COUPON_DATE)] + (VAR_NEXT_PERIOD==VAR_CURRENT_PERIOD ? 0:
(VAR_2Y_OFZ [get_i_date(VAR_COUPON_DATE)+1]- VAR_2Y_OFZ
[get_i_date(VAR_COUPON_DATE)])*diff_date(VAR_COUPON_DATE,
VAR_ITEM_PERIOD[VAR_CURRENT_PERIOD])/diff_date(VAR_ITEM_PERIOD[VAR_NEXT_PERIOD],
VAR_ITEM_PERIOD[VAR_CURRENT_PERIOD]))+0.01
Max(6M EURIBOR;0) +2,2%max(VAR_6M_Euribor[get_i_date(VAR_COUPON_DATE)],0)+0.022
2-30 купоны - Yj(7)+ 0.75%, где
Yj(7) - значение 7-летней точки на GCurve на конец 5-го рабочего дня,
предшествующего дате начала j-го купонного периода, премия определяется по
результатам букбилдинга
3/5(VAR_5Y_OFZ
[get_i_date(VAR_COUPON_DATE)] + (VAR_NEXT_PERIOD==VAR_CURRENT_PERIOD ? 0:
(VAR_5Y_OFZ [get_i_date(VAR_COUPON_DATE)+1]- VAR_5Y_OFZ
[get_i_date(VAR_COUPON_DATE)])
diff_date(VAR_COUPON_DATE,
VAR_ITEM_PERIOD[VAR_CURRENT_PERIOD])/diff_date(VAR_ITEM_PERIOD[VAR_NEXT_PERIOD],
VAR_ITEM_PERIOD[VAR_CURRENT_PERIOD])))+2/5(VAR_10Y_OFZ
[get_i_date(VAR_COUPON_DATE)] + (VAR_NEXT_PERIOD==VAR_CURRENT_PERIOD ? 0:
(VAR_10Y_OFZ [get_i_date(VAR_COUPON_DATE)+1]- VAR_10Y_OFZ
[get_i_date(VAR_COUPON_DATE)])
diff_date(VAR_COUPON_DATE,
VAR_ITEM_PERIOD[VAR_CURRENT_PERIOD])/diff_date(VAR_ITEM_PERIOD[VAR_NEXT_PERIOD],
VAR_ITEM_PERIOD[VAR_CURRENT_PERIOD])))+0.0075
(10%+КС+2,5%)/2(VAR_RU_RATE[get_i_date(VAR_COUPON_DATE)]+0.125)/2