Время прочтения: 5 мин.
За последние 2 года количество участников фондового рынка в России по данным Московской биржи выросло в 5 раз (с 3 до 15 миллионов человек). При этом количество активных клиентов (совершающих как минимум одну сделку в месяц) возросло в 8 раз. Такие показатели говорят о том, что помимо возросшей активности клиентов на фондовом рынке, так же возрастает и количество задач которые нужно решать аудиторам.
В данной статье мы разберем проблему корректности начисления дивидендов инвестиционным клиентам финансовой организации. Определим отклонения, которые необходимо устранить для улучшения клиентского опыта и минимизации репутационных рисков.
Для решения подобной задач хорошо подойдет библиотека от компании yahoo.
Установка
Для начала работы нам необходимо импортировать библиотеку:
import yfinance as yf
Основной функцией данной библиотеки является «Ticker» — функция позволяет получить всю основную информацию по любому тикеру (краткое название в биржевой информации котируемых инструментов, является уникальным идентификатором в рамках одной биржи или информационной системы). Для получения корректной информации, нужно правильно понимать, как передаются входные параметры в данной библиотеке. Например, для получения информации по акциям российского рынка, необходимо к тикеру добавлять постфикс «.ME»
Базовые функции
Для примера загрузим основную информацию по компании Яндекс:
YNDX = yf.Ticker("YNDX.ME")
YNDX.info
Вывод:
{'zip': '1118 BG',
'sector': 'Communication Services',
'fullTimeEmployees': 17206,
'longBusinessSummary': --подробная информация о компании--',
'city': 'Schiphol',
'phone': '31 20 206 6970',
'country': 'Netherlands',
'companyOfficers': [],
'website': 'http://ir.yandex.com',
'maxAge': 1,
'address1': 'Schiphol Boulevard 165',
'fax': '31 20 446 6372',
'industry': 'Internet Content & Information',
'ebitdaMargins': 0.1071,
'profitMargins': -0.02875,
'grossMargins': 0.5182300000000001,
'operatingCashflow': 12028000256,
'revenueGrowth': 0.5650000000000001,
'operatingMargins': -0.018860001,
'ebitda': 33997000704,
'targetLowPrice': None,
'recommendationKey': 'none',
'grossProfits': 132610000000,
'freeCashflow': 58725625856,
.
.
.
'fiveYearAvgDividendYield': None,
'fiftyTwoWeekLow': 4510,
'bid': 5889.6,
'tradeable': False,
'dividendYield': None,
'bidSize': 1600,
'dayHigh': 5920,
'regularMarketPrice': 5890,
'logo_url': 'https://logo.clearbit.com/ir.yandex.com'}
Как мы видим базовая функция выдает широкий спектр информации о компании, которой уже может хватать для решения определенных задач, построения инфографики или проведения анализа компании (описание компании, дивиденды, цены, юр. адрес компании, … заканчивая даже логотипом)
YNDX.history(period="max")
Позволяет вывести все исторические значения стоимости, как за весь период, так и за отдельно взятый срок если настроить это в параметрах функции.
Out[5]:
Эти данные можно очень легко визуализировать для наглядности
import matplotlib.pyplot as plt
data = yf.download("YNDX.ME",'2014-06-04','2021-11-02')
data['Adj Close'].plot()
plt.figure(figsize=(10, 10))
plt.show()
Дивиденды
Важно учитывать правильно те значения, которые выводят функции, к примеру дивиденды тут отображаются не в процентах, а в сумме на одну акцию в валюте акции
yf.Ticker('YNDX.ME').dividends.loc['01.01.2020':'01.01.2021']
Out[32]:
Series([], Name: Dividends, dtype: int64)
Но при выводе мы, почему-то не получаем информации. Все дело в том, что яндекс относится к тем компаниям, которые не выплачивают дивидендов. Меняем тикер и видим, что функция прекрасно работает:
yf.Ticker('GAZP.ME').dividends.loc['01.01.2020':'01.01.2021']
Out[39]:
Date
2020-07-15 15.24
Name: Dividends, dtype: float64
Отчетность
YNDX.financials, YNDX.quarterly_financials
Годовые или квартальные финансовые отчеты. С помощью параметров можно выбрать конкретный год и параметр.
YNDX.major_holders,YNDX.institutional_holders
Информация о владельцах в процентном соотношении
YNDX.recommendations
Рекомендации от крупных игроков рынка по данному тикеру.
Решение поставленной задачи
У нас имеется файл с информацией по начислению дивидендов по брокерским счетам за год в разрезе определенного перечня компаний. Нам необходимо проверить корректность зачисления дивидендов по каждому счету.
Загружаем имеющиеся данные
div = pd.read_csv('./div.csv',sep=';',engine='python')
Структура входного файла:
С помощью библиотеки выгружаем данные по дивидендам компаний из списка за период 2021 год.
data = pd.DataFrame()
start = '2021-01-01'
end = '2021-12-31'
for u in range(len(div["tic"])):
series = yf.Ticker(div["tic"][u]).dividends.loc[start:end]
data = pd.concat([data, series], axis=1)
data.columns = div["tic"]
print(data)
Получаем полную выгрузку фактических зачислений и таблицу дивидендов по всем тикерам из нее за год.
tic SBER.me SNGS.me RTKM.me PIKK.me DSKY.me
2021-05-11 00:00:00 18.7 NaN NaN NaN NaN
2021-05-14 00:00:00 NaN NaN NaN 45.43 NaN
2021-07-08 00:00:00 NaN NaN NaN NaN 6.07
2021-07-09 00:00:00 NaN NaN 5.0 NaN NaN
2021-07-19 00:00:00 NaN 0.7 NaN NaN NaN
Важно понимать для анализа, что цифры, которые выдает скрипт по данному запросу – это суммарное количество денег (в валюте в которой торгуется акция) за день в который выплачиваются дивиденды.
Далее создаем цикл проверки корректности начисления дивидендов по конкретным счетам и выводим все случаи не корректного начисления
data = data.fillna(0)
for u in range(len(div["acc"])):
if data[div.iloc[u]['tic']][div.iloc[u]['date']] != div.iloc[u]['rate']:
print(div.iloc[u]['acc'] +' '+ div.iloc[u]['date'] + ' некорректное начисление ' )
out:
счет312 11.05.2021 некорректное начисление
счет143 14.05.2021 некорректное начисление
Итог
Библиотека очень быстро отрабатывает даже очень большие списки тикеров, что позволяет очень быстро и в режиме реального времени проводить анализ необходимой информации. Данная библиотека может быть полезна как опытным специалистам которые работают с финансовыми рынками так и простым пользователям которые хотят повысить свою финансовую грамотность, используя современные способы анализа информации. Данная библиотека может найти своё применение в широком спектре задач: анализе финансового состояния организации, в аудите фин.рынков, инфографике и тд.