Масштаб и значимость рынка процентных производных инструментов
Рынок процентных производных инструментов представляет собой крупнейший сегмент мирового финансового рынка. В основе корректной оценки практически любого финансового инструмента — от простых облигаций до сложных структурных продуктов — лежит дисконтная кривая. Она представляет собой фундаментальную рыночную конструкцию, определяющую временну́ю стоимость денег и позволяющую приводить будущие денежные потоки к текущей стоимости.
Цель и структура статьи
Настоящая статья посвящена детальному разбору алгоритма калибровки дисконтных кривых. В качестве наглядного примера рассмотрено построение дисконтной кривой на основе рыночных котировок процентных свопов, привязанных к индикатору RUONIA (Ruble OverNight Index Average) — ключевому безрисковому бенчмарку российского денежного рынка.
Ключевые составляющие
Детальная спецификация калибровочных инструментов. От составляющих спецификации — таких как частота платежей, календарные конвенции и базовый процентный индикатор — напрямую зависит структура и размер будущих денежных потоков. Это является абсолютной основой для корректной оценки стоимости каждой из ног свопа.
Четкое понимание алгоритма бутстрапа. Бутстрап — это итеративный алгоритм, позволяющий построить дисконтную кривую на основе рыночных котировок. Дисконт-фактор, найденный из предыдущего инструмента, используется в качестве входного параметра для калибровки следующего по сроку инструмента.
-
Оперирование ставками непрерывного начисления.
Математическое удобство. Формулы дисконтирования и наращения достигают максимальной элегантности:
.
Универсальность. После калибровки кривой непрерывных ставок ее можно легко и однозначно конвертировать в ставку с любой другой конвенцией начисления (годовой, полугодовой, квартальной).
Фундаментальная корректность*. Использование начисления отличного от непрерывного искажает истинную временную структуру. Ставка, являющаяся параметром иной конвенции начисления прячет истинную, нелинейную временную структуру за своим единым значением.
Практический пример: Построение кривой по свопам на RUONIA
Рассмотрим процесс калибровки кривой для сроков от 1 недели до 5 лет на основе рыночных котирок процентных свопов, где плавающая нога привязана к индикатору RUONIA.

Определим ключевые условия спецификации IRS (interest Rate Swap).
Все свопы предполагают ежегодные платежи по фиксированной ноге. То есть, для свопов со сроком менее года (от 1W до 1Y) происходит всего один фиксированный платеж в дату экспирации. Для свопов на срок более 1 года платежи происходят раз в год.
Плавающая нога свопа привязана к индикатору RUONIA, который может рассматриватсья в качестве аналога безрисковой ставки, несущей в себе минимум кредитного риска.
-
Своп заключается на Compound ON ставку. Это означает, что фиксированная ставка, которую мы видим в котировке, является прямой альтернативой той доходности, которую инвестор получил бы от ежедневной капитализации (компаудинга) по индикатору RUONIA в течение всего срока действия свопа.
Данная конвенция является обязательной для калибровки дисконтной кривой, поскольку определяет теоретический максимум наращения — потолок доходности для безрискового индикатора.
Этап 1: Калибровка короткого конца кривой (сроки ≤ 1 год)
Для инструментов с одним платежом расчёт дисконтного фактора (DF) прямолинеен. Ставка по свопу для этих сроков по сути является спотовой ставкой для соответствующей даты, так как поток единственный.
Пример для 3-месячного и 1-летнего свопа:
Чтобы найти дисконт-фактор:
Чтобы найти непрерывную ставку:
Этап 2: Калибровка длинного конца кривой (сроки > 1 года)
Для свопов с несколькими платежами мы используем метод бутстрапа — последовательно обрабатываем ставки от коротких сроков к длинным.
Шаг 1: Строим платежи по 2-летнему свопу
В конце года 1: платеж 0.1580 (проценты)
В конце года 2: платеж 1.1580 (проценты + номинал)
Шаг 2: Строим уравнение денежных потоков
Стоимость всех будущих фиксированных платежей должна равняться сегодняшней стоимости плавающей ноги, что эквивалентно номиналу (1), в соответствии с принципом безарбитражности.
Шаг 3: Находим неизвестный дисконт-фактор и зашитую в него ставку непрерывного начисления.
Проделав эту операцию для всех сроков, получаем уравнения с одной неизвестной, решая которые формируем временную структуру стоимости денежных средств.
Код на python
import pandas as pd
import numpy as np
from scipy.optimize import root_scalar
import time
def bootstrap_curve(market_data):
print("Калибровка началась...")
start_time = time.perf_counter()
# Подготовка данных
days = market_data.index.values
rates = market_data.values.flatten() / 100
years = days / 365.0
n = len(days)
# Инициализация результатов
df_values = np.zeros(n)
# Векторизованный расчет для коротких сроков (≤1 год)
short_mask = years <= 1
df_values[short_mask] = 1 / (1 + rates[short_mask] * years[short_mask])
# Бутстрап для длинных сроков
for i in np.where(~short_mask)[0]:
n_years = int(years[i])
payment_days = np.arange(1, n_years + 1) * 365
known_indices = np.searchsorted(days[:i+1], payment_days[:-1])
pv_known = np.sum(rates[i] * df_values[known_indices])
# Решаем уравнение для последнего DF
target_pv = 1.0 - pv_known
last_payment = rates[i] + 1.0
df_values[i] = target_pv / last_payment
# Непрерывные ставки
continuous_rates = -np.log(df_values) / years * 100
# Формирование результата
result = pd.DataFrame({
'Срок (дней)': days,
'Срок (лет)': years,
'Котировка (%)': rates * 100,
'Дисконт-фактор (DF)': df_values,
'Непрерывная ставка (%)': continuous_rates
})
elapsed_time = time.perf_counter() - start_time
print(f"Калибровка завершена за {elapsed_time*1000:.2f} мс")
return result
# Исходные данные
market_data = pd.DataFrame(
[15.00, 15.04, 15.10, 15.30, 15.60, 16.10, 16.70, 15.80, 15.40, 15.30, 15.10],
index=[7, 14, 31, 62, 93, 184, 365, 730, 1095, 1460, 1825]
)
# Калибровка
result = bootstrap_curve(market_data)
display(result)Рыночные котировки свопов несут в себе информацию о стоимости денег на разные периоды времени. Метод бутстрап позволяет последовательно расшифровать эту информацию, получая, независимые ставки для каждого срока.

Графическое представление

Желающим глубже ознакомиться с алгоритмами калибровки дисконтных кривых и методом бутстрапа, рекомендуется обратиться к классической работе:
John C. Hull. "Options, Futures and Other Derivatives"
Глава 4: "Interest Rates" — детально разбираются основы процентных ставок, различные конвенции начисления процентов и методы измерения доходностей, что является фундаментом для понимания временной структуры.
Глава 7: "Swaps" — подробно рассматривается устройство и оценка процентных свопов, которые являются ключевыми инструментами для калибровки длинного конца кривой.