Обновления базы данных

Я хотел вывести полный список чтобы найти требуемый фонд по ISIN.
Например меня интересует IL0011656530.
С израильскими тикерами невозможно работать.
Есть ли возможность поиска?

И это и есть полный список. ISIN не везде есть.
Поиск возможен только по полю тикера и названия. Здесь подробности:

Если нужен поиск именно по ISIN, то необходимо скачать полный DataFrame ценных бумаг и искать по столбцам таблицы встроенными методами Pandas.

Пример поиска базы TASE по ISIN:
xt = ok.symbols_in_namespace('XTAE')
image

Я имею ввиду что выводятся первые и последние 5 линий.
Все что между ними скрыто, а мне надо все 911 строк.

Кстати в базе отсутствует индексный фонд

>>> xt[xt['isin'].str.contains('IL0011656530', case=False)]
Empty DataFrame
Columns: [symbol, ticker, name, country, exchange, currency, type, isin]
Index: []
>>> 

Не факт, что он отсутствует. В базе не у всех ETF есть ISIN. Ищите по другим полям: name, symbol.

DataFrame - это формат данных Pandas. Он не предназначен для вывода на экран всей таблицы. Если нужно именно всю таблицу сразу посмотреть, выгрузите в csv: ok.symbols_in_namespace('XTAE').to_csv('tase_tickers.csv'). Потом можете уже смотреть, например, в EXCEL.

Но вообще, не понятно зачем смотреть всю таблицу. А если бы там было 16 000 строк, как на американских биржах? Лучше научиться работать с анализом DataFrame. Это куда полезнее: Pandas Getting Started.

  1. Насколько я знаю на Израильской бирже не может быть тикера без ИСИНа.
    Тикер как и на европейских биржах здесь вторичен.
    Например у вас существует тикер без ИСИНа INSL но на сайте биржи о нем нет никаких упоминаний.
  2. Я вывел все 911 позиций в Эксель и не нашел там требуемого фонда.

UPD:
INSL не торгуются сейчас на бирже.
Вот решение суда.
Наверное база не актуальная.
В Израиле по тикеру не релевантно искать - только по ИСИНу.
Это связано с тем, что все фонды пишутся на иврите и английском причем в разных вариантах.

На бирже конечно не может быть тикеров без ISIN, а в нашей базе может быть :slight_smile:
Пока у многих бумаг отсутствует информация по ISIN. Это поле в базе появилось только месяц назад. Так что поиск по ISIN пока не очень информативен. Со временем ситуация улучшится.

Напишите пожалуйста, каких еще тикеров не хватает кроме MTF.F65. Обновим информацию в базе.

Финансовая база данных переехала на новый более шустрый VDS и доступна по адресу api.okama.io:5000.
Старая база больше поддерживаться и обновляться не будет, но в течение апреля 2022 будет оставаться доступной.

В okama версии 1.1.5 и выше все запросы передаются через новый API.

В API реализован доступ к базе данных Центрального банка (SOAP API). Теперь можно будет получать больше открытых данных через программный интерфейс на cbr.ru.
В качестве первого шага увеличено количество валют, по которым передается история официального курса ЦБ (типа EURRUB.CBR). Всего в базе сейчас около 60 новых, в том числе экзотических валют:


Пример прямого запроса API для получения истории официального курса валюты:
api.okama.io:5000/api/ts/adjusted_close/JPYRUB.CBR?first_date=2021-01-01&last_date=2021-01-20&period=d
image

Продолжил работать с данными Центробанка. Через 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 месяцев.

Подробная справка и методика расчета индекса RUONIA доступны на сайте Центрального банка России.

В базу данных добавлена история Циклического P/E Шиллера (CAPE10) для 25 стран.
Данные доступны через новый класс Indicator. Для подобных CAPE10 мультипликаторов зарезервирован namespace .RATIO:

ok.symbols_in_namespace('RATIO')

Построение графика CAPE10 для нескольких стран

Получаем временные ряды CAPE10 для США, Китая и России:

usa = ok.Indicator('USA_CAPE10.RATIO').values_monthly
rus = ok.Indicator('RUS_CAPE10.RATIO').values_monthly
chn = ok.Indicator('CHN_CAPE10.RATIO').values_monthly

Строим график:

fig, ax = plt.subplots(figsize=[12, 6])
first_date_dt = pd.to_datetime('2006-01')  # дата начала графика
last_date_dt = pd.to_datetime('2022-06')  # дата конца

ax.plot(usa.index.to_timestamp(), usa, color ='green', linewidth = 2, label='США')
ax.plot(rus.index.to_timestamp(), rus, color ='red', linewidth = 2, label='Россия')
ax.plot(chn.index.to_timestamp(), chn, color ='blue', linewidth = 2, label='Китай')

ax.set_xlim(first_date_dt, last_date_dt + pd.DateOffset(months=1))   # прибавляем 1 месяц, чтобы в конце графика было пустое пространство
ax.legend(loc='upper right')
ax.set_title('Циклический P/E Шиллера (CAPE10)')


C CAPE10 для России есть проблема … после февраля значение индикатора равно нулю. Дело в том, что в марте перестали публиковать финансовые отчеты публичных компаний. Поэтому E (Earnings) для индекса получить нельзя … Пока будет продолжаться подобная ситуация CAPE10 будет иметь нулевые значения…

Данные по инфляции в Китае

в базе данных доступна информация по инфляции в КНР (с 1987 года).

image

Данные получаются через API Бюро статистики Китая (National Bureau of Statistics of China - NBSC). Я на этот раз не поленился и сделал код доступа к NBSC открытым и опубликовал в виде отдельной библиотеки:

12-месячная инфляция


Интересно, что Китай переживал времена высокой инфляции 20+ процентов, но это было давно в 1980х и 1990х годах. С тех пор инфляция удерживается в пределах 0-5%. Это как раз монетарная часть “Китайского экономического чуда”. Для экономики низкие ставки и контролируемая инфляция очень полезны…

Ежемесячная инфляция

Данные месячной инфляции резко контрастируют с цифрами из Европы и США … речь идет о совсем небольшом повышении цен:


В марте рост цен был вообще равен нулю (в марте в России было +7%).

Данные по инфляции, как обычно, доступны не только через библиотеку но и напрямую через API okama.
Пример запроса API для инфляции Китая:
http://api.okama.io:5000/api/ts/macro/CNY.INFL?first_date=2019-01-01&last_date=2020-01-01

День из жизни охотника за финансовыми данными. “Приключения” по борьбе с китайским Бюро статистики были увлекательными … я изложил эту историю на блоге Роста сбережений:

Сергей, здравствуйте!
Пробежался по индексу широкого рынка MOEX - в базе не обнаружились тикеры ALRS, KAZT, LENT, RASP. Обращался через adj_close.
Это как-то связано с неразберихой с дивидендами?

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

Пробежался по индексу широкого рынка MOEX - в базе не обнаружились тикеры ALRS, KAZT, LENT, RASP.

Некоторые из этих тикеров добавлены. Остальные постараемся загрузить на следующей неделе.
На сегодняшний день пока в базе отсутствуют:
Акции: 'GEMC', 'HIMCP', 'KMTZ', 'LENT', 'RASP', 'VEON-RX', 'ZVEZ'
ETF: 'AMRB', 'AMRE'

База MOEX обновлена. На сегодняшний день в ней есть все торгуемые ETF и акции …

Сергей, здравствуйте!
Опять выдают ошибку тикеры KZOSP, LSNGP, NKNCP, RASP, RTKMP, TATNP, UPRO.