Продолжил работать с данными Центробанка. Через API теперь доступна информация по ставкам RUONIA и Индекс RUONIA.
RUONIA (Ruble OverNight Index Average) — усреднённое значение процентных ставок, по которым крупнейшие банки России кредитуют друг друга без обеспечения на период «овернайт» (то есть на короткий срок, фактически на день). Ставка RUONIA жёстко привязана к Ключевой ставке (КС) ЦБ. Корреляция между этими двумя составляет почти 100%. Тем не менее на фоне благоприятной ситуации с рублёвой ликвидностью у крупнейших банков уровень RUONIA находится несколько ниже текущей КС. Есть периоды, когда ставка RUONIA обгоняет КС. Обычно это происходит, когда у банков наблюдаются проблемы с ликвидностью. Так что этот параметр можно использовать как один из индикаторов проблем с ликвидностью.
На Мосбирже есть ОФЗ с плавающей ставкой купона, привязанной к RUONIA.
ЦБ предоставляет информацию не только по ставкам RUONIA. В API включены:
- ставки RUONIA на 1, 3 и 6 месяцев (срочная версия RUNIA)
- Индекс RUONIA (величина, равная стоимости одного рубля, ежедневно капитализированного по ставкам RUONIA)
Индекс RUONIA в базе данных Okama
Индекс RUONIA имеет тикер RUONA.INDX
.
Любопытно, что индекс RUONIA выигрывает у индекса депозитов в крупных банках (OKID10.INDX). Оба они пока опережают инфляцию.
fig, ax = plt.subplots(figsize=[12, 6])
# fig.subplots_adjust(bottom=0.2, top=1.5)
date1 = '2014-01'
date2 = '2022-05'
first_date_dt = pd.to_datetime(date1)
last_date_dt = pd.to_datetime(date2)
ax.plot(df.index.to_timestamp(), df['OKID10.INDX'], color = 'blue', linewidth = 2, label='Индекс депозитов TOP-10 (OKID10)')
ax.plot(df.index.to_timestamp(), df['RUONIA.INDX'], color = 'green', linewidth = 2, label='Индекс RUONIA')
ax.fill_between(df.index.to_timestamp(), 0, df['RUB.INFL'], facecolor='grey', alpha=0.2, label='Инфляция RUB')
ax.set_xlim(first_date_dt, last_date_dt)
ax.set_ylim(980,)
ax.set_title('Индекс депозитов TOP10 и Индекс RUONIA')
leg = ax.legend()
Ставки RUONIA в Okama
Достаточно просто убедиться, как ставки RUONIA реагируют на изменения КС.
r_on = ruonia.values_ts # ставки overnight
r1 = ok.Rate('RUONIA_AVG_1M.RATE').values_ts # ставки на 1 месяц
r3 = ok.Rate('RUONIA_AVG_3M.RATE').values_ts # ставки на 3 месяца
r6 = ok.Rate('RUONIA_AVG_6M.RATE').values_ts # ставки на 6 месяцев
df = pd.concat([r_on, r1, r3, r6], axis=1, join="inner", copy="false")
df.dropna(inplace=True)
fig, ax = plt.subplots(figsize=[12, 6])
date1 = '2013-01'
date2 = '2022-06'
index = df.index.to_timestamp()
ax.plot(index, df['RUONIA.RATE'], color ='red', linewidth = 1, label='RUONIA Overnight')
ax.plot(index, df['RUONIA_AVG_1M.RATE'], color ='green', linewidth = 1, label='RUONIA 1 month')
ax.plot(index, df['RUONIA_AVG_3M.RATE'], color ='blue', linewidth = 1, label='RUONIA 3 months')
ax.plot(index, df['RUONIA_AVG_6M.RATE'], color ='black', linewidth = 1, label='RUONIA 6 months')
first_date_dt = pd.to_datetime('2013-01')
last_date_dt = pd.to_datetime('2022-06')
ax.set_xlim(first_date_dt, last_date_dt + pd.DateOffset(months=1))
ax.set_ylim(2.5,)
ax.set_title('Ставки RUONIA: overnight, 1 месяц, 3 месяца и 6 месяцев')
leg = ax.legend()
Ставки overnight и на 1 месяц реагируют на изменение КС очень быстро и уже начали снижаться в апреле и мае. А ставки на 3 и 6 месяцев повышаются с запозданием. Судя по событиям 2014-15 годов, можно ждать еще несколько месяцев высоких ставок 3 и 6 месяцев.