ПАО Московская Биржа НЕ БЕРЕТ НА СЕБЯ КАКИХ-ЛИБО ОБЯЗАТЕЛЬСТВ, НЕ ГАРАНТИРУЕТ И НЕ ПРЕДОСТАВЛЯЕТ КАКИХ-ЛИБО ЗАВЕРЕНИЙ (будь то явных или подразумеваемых) касательно их точности, полноты, качества, коммерческой ценности, безошибочности, соответствия любым методологиям и описаниям или пригодности использования для каких-либо целей, а также касательно их объема, состава и формы представления данных, сроков и своевременности их предоставления.
Материалы и информация (целиком или в какой-либо части) НЕ МОГУТ БЫТЬ ИСПОЛЬЗОВАНЫ В КАКИХ-ЛИБО ИНВЕСТИЦИОННЫХ ИЛИ КОММЕРЧЕСКИХ ЦЕЛЯХ, В ТОМ ЧИСЛЕ ДЛЯ СОЗДАНИЯ КАКИХ-ЛИБО ФИНАНСОВЫХ ИНСТРУМЕНТОВ, ПРОДУКТОВ ИЛИ ИНДЕКСОВ.</font>
В продукте содержится информация об агрегированном нетто-объеме (объем на покупку за вычетом объема на продажу) по следующим категориям клиентов:
Расчет нетто-объема происходит независимо по следующим инструментам:
#импорт библиотек и установка настроек графиков
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from scipy.stats import spearmanr
%matplotlib inline
sns.set_style("dark")
plt.rcParams['figure.figsize'] = (15, 7)
# Цветовая схема
graphcolors = {'red' :'#c8102e',
'grey' :'#51626f',
'blue' :'#0070c0',
'orange' :'#ffa100',
'green' :'#00b050',
'black' :'#000000',
'white' :'#ffffff'}
#загрузка данных
df = pd.read_csv('exampledata.csv', parse_dates = ['SESSIONID'], index_col = 'SESSIONID')
df.head()
df.tail()
Названия столбцов состоят из:
cl_groups = ['BASE_H', 'BASE_I', 'BASE_R']
sber_df = pd.DataFrame(index = df.index)
for gr in cl_groups:
sber_df[gr] = df['EQ_SBER_' + gr]
sber_df.head()
# Чтение файла с данными котировок (находятся в архиве)
sber_ohlc = pd.read_csv('Price_SBER.csv', index_col= 0, parse_dates = ['begin', 'end'])
sber_ohlc.head(2)
#определение цены аукциона закрытия
close_auction = sber_ohlc[(sber_ohlc['begin'].dt.hour == 18) & (sber_ohlc['begin'].dt.minute == 30)].copy()
close_auction.begin = close_auction.begin.map(lambda x: x + pd.Timedelta(hours = -x.hour, minutes = -x.minute, seconds = -x.second))
close_auction = close_auction.set_index('begin')[['close']]
close_auction.index.name = 'SESSIONID'
close_auction.head()
sber_df['close_auction_price'] = close_auction.close
sber_df.head()
sber_df[['BASE_H', 'BASE_I', 'BASE_R']].cumsum().plot()
sber_df.close_auction_price.plot(secondary_y= True, label = 'price', color = 'orange')
plt.legend(loc = (0.005, 0.81))
plt.show()
Из графиков видно, что наблюдается связь между BASE_H и ценой акций Сбербанка
sber_df['price_chng'] = sber_df.close_auction_price.pct_change()
sber_df.corr()
Рассмотрим корреляцию нетто-объемов с изменением цены на следующий день. Введем гипотезу H0 о том, что корреляция между изменением цены на следующий день и нетто-объемом выбранной группы равна 0. Альтернативная гипотеза H1 - корреляция не равна 0. Проверим данную гипотезу для нетто-объемов по всем группам. Выберем уровень значимости 5%
sber_df['next_price_chng'] = sber_df.price_chng.shift(-1)
sber_df = sber_df.dropna()
for g in ['BASE_H', 'BASE_I', 'BASE_R']:
scor = spearmanr(sber_df[g], sber_df['next_price_chng'])
if np.abs(scor[1]) < 0.05:
print('Гипотеза H0 отвергается, корреляция между {0} и изменением цены:'.format(g),
round(scor[0], 3),'p-значение:', round(scor[1], 3))
else:
print('Гипотеза H0 не отвергается, корреляция между {0} и изменением цены:'.format(g),
round(scor[0], 3),'p-значение:', round(scor[1], 3))
На 5% уровне значимости можно отвергнуть гипотезу о том, что корреляция между BASE_H, BASE_R и изменением цены SBER на следующий день равна нулю.
cols = [x for x in df.columns if x[:6] == 'FUT_SI' or x[:2] == 'FX']
usdrub_df = df[cols].copy()
usdrub_ohlc = pd.read_csv('Price_USDRUB.csv', index_col= 0, parse_dates = ['begin', 'end'])
close_auction = usdrub_ohlc[(usdrub_ohlc['begin'].dt.hour == 18) & (usdrub_ohlc['begin'].dt.minute == 30)].copy()
close_auction.begin = close_auction.begin.map(lambda x: x + pd.Timedelta(hours = -x.hour, minutes = -x.minute, seconds = -x.second))
close_auction = close_auction.set_index('begin')[['close']]
close_auction.index.name = 'SESSIONID'
usdrub_df['close_auction_price'] = close_auction.close
fx_cols = [x for x in df.columns if x[:2] == 'FX']
usdrub_df[fx_cols].cumsum().plot()
usdrub_df.close_auction_price.plot(secondary_y= True, label = 'price', color = 'orange')
plt.legend(loc = (0.005, 0.81))
plt.show()
fut_cols = [x for x in df.columns if x[:6] == 'FUT_SI']
usdrub_df[fut_cols].cumsum().plot()
usdrub_df.close_auction_price.plot(secondary_y= True, label = 'price', color = 'orange')
plt.legend(loc = (0.005, 0.81))
plt.show()
usdrub_df['price_chng'] = usdrub_df.close_auction_price.pct_change()
usdrub_df.corr()
С текущим изменением цены сильнее всего коррелируют FX_USDRUB_BASE_R, FUT_SI_BASE_H, FUT_SI_BASE_R
usdrub_df['next_price_chng'] = usdrub_df.price_chng.shift(-1)
usdrub_df = usdrub_df.dropna()
for g in cols:
scor = spearmanr(usdrub_df[g], usdrub_df['next_price_chng'])
if np.abs(scor[1]) < 0.05:
print('Гипотеза H0 отвергается, корреляция между {0} и изменением цены:'.format(g),
round(scor[0], 3),'p-значение:', round(scor[1], 3))
else:
print('Гипотеза H0 не отвергается, корреляция между {0} и изменением цены:'.format(g),
round(scor[0], 3),'p-значение:', round(scor[1], 3))
На 5% уровне значимости можно отвергнуть гипотезу о том, что корреляция между FX_USDRUB_BASE_H, FUT_SI_BASE_H, FUT_SI_BASE_I , FUT_SI_BASE_R и изменением USDRUB на следующий день равна нулю.
Ссылка на сайт - https://moex.com/ru/analyticalproducts?netflow1
Email - support.dataproducts@moex.com