Влияние индекса волатильности на динамику цен активов на примере российского фондового рынка
Нахождение основных внемодельных зависимостей между индексом волатильности российского фондового рынка в качестве прокси-переменной для краткосрочной ex-ante волатильности и динамикой комплексных цен на активы рынка ценных бумаг Российской Федерации.
Рубрика | Финансы, деньги и налоги |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 27.08.2020 |
Размер файла | 940,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
import pandas as pd
importnumpy as np
fromarch.univariate import ARX
fromarch.univariate import GARCH
import random
data = pd.read_excel('sample.xlsx')
data['lr_rtsi']=np.log(data['rtsi'])-np.log(data['rtsi'].shift(1))
data['lr_rvi']=np.log(data['rvi'])-np.log(data['rvi'].shift(1))
data = data.dropna(subset = ['lr_rtsi'])
ar = ARX(data['lr_rtsi'].values, lags=[1], constant = False)
ar.volatility = GARCH(p=1,q=0)
res = ar.fit(update_freq=0, disp='off')
print(res.summary())
st_res = res.resid/np.sqrt(res.conditional_volatility)
rtsi = [1395.91]
drtsi = [data['lr_rtsi'].values[2]]
h = [res.conditional_volatility[2]]
z = [np.sqrt(res.conditional_volatility[2])*st_res[1]]
st = [st_res[2]]
ids =[2]
choose = [i for i in range(1,len(st_res))]
result_ids = pd.DataFrame()
result_prices = pd.DataFrame()
for k in range(0, 1000):
rtsi = [1395.91]
drtsi = [data['lr_rtsi'].values[2]]
h = [res.conditional_volatility[2]]
z = [np.sqrt(res.conditional_volatility[2])*st_res[1]]
st = [st_res[2]]
ids =[2]
for j in range(0, 1254):
h.append(res.params[1]+(z[-1]**2)*res.params[2])
z.append(np.sqrt(h[-1])*st[-1])
ids.append(random.choice(choose))
st.append(st_res[ids[-1]])
rtsi.append(rtsi[-1]+rtsi[-1]*(drtsi[-1]*res.params[0]+z[-1]))
drtsi.append(np.log(rtsi[-1]/rtsi[-2]))
result_ids['id_'+str(k)]=ids
result_prices['price_'+str(k)]=rtsi
ar = ARX(data['lr_rvi'].values, lags=[1], constant = False)
ar.volatility = GARCH(p=1,q=1)
res = ar.fit(update_freq=0, disp='off')
print(res.summary())
st_res = res.resid/np.sqrt(res.conditional_volatility)
rvi = [20.56]
drvi = [data['lr_rvi'].values[2]]
h = [res.conditional_volatility[2]]
z = [np.sqrt(res.conditional_volatility[2])*st_res[1]]
st = [st_res[2]]
result_vol = pd.DataFrame()
for k in range(0, 1000):
rvi = [20.56]
drvi = [data['lr_rvi'].values[2]]
h = [res.conditional_volatility[2]]
z = [np.sqrt(res.conditional_volatility[2])*st_res[1]]
st = [st_res[2]]
ids = list(result_ids['id_'+str(k)])
for j in range(0, 1254):
h.append(res.params[1]+(z[-1]**2)*res.params[2])
z.append(np.sqrt(h[-1])*st[-1])
st.append(st_res[ids[j]])
rvi.append(rvi[-1]+rvi[-1]*(drvi[-1]*res.params[0]+z[-1]))
drvi.append(np.log(rvi[-1]/rvi[-2]))
result_vol['vol_'+str(k)]=rvi
start = [100, 200, 300]
period = [20,40,60]
fee = 0.0001
per = 5
comissions = []
totals = []
periods = []
starts = []
sample = []
trades = []
bench = []
for m in range(0,3):
for g in range(0,3):
for k in range(0, 1000):
prices = list(result_prices['price_'+str(k)])
var = list(result_vol['vol_'+str(k)])
i = start[g]
total = 0
comission = 0
trade=0
while (i<1255):
a = np.array(var[i-start[g]:i])
p = np.percentile(a, per)
ifvar[i]<p:
open_price = prices[i]
if (i+period[m])>len(prices)-1:
z = len(prices)-1
else:
z = i+period[m]
close_price = prices[z]
comission += open_price*fee+close_price*fee
total += (close_price-open_price)
i+=period[m]
trade+=1
i+=1
comissions.append(comission)
totals.append(total)
periods.append(period[m])
starts.append(start[g])
sample.append(k)
trades.append(trade)
bench.append(prices[-1]-prices[start[g]])
for m in range(0,3):
for g in range(0,3):
prices = list(data['rtsi'])
var = list(data['rvi'])
i = start[g]
total = 0
comission = 0
trade=0
while (i<1255):
a = np.array(var[i-start[g]:i])
p = np.percentile(a, per)
ifvar[i]<p:
open_price = prices[i]
if (i+period[m])>len(prices)-1:
z = len(prices)-1
else:
z = i+period[m]
close_price = prices[z]
comission += open_price*fee+close_price*fee
total += (close_price-open_price)
i+=period[m]
trade+=1
i+=1
comissions.append(comission)
totals.append(total)
periods.append(period[m])
starts.append(start[g])
sample.append('original')
trades.append(trade)
bench.append(prices[-1]-prices[start[g]])
df = pd.DataFrame({'total': totals,
'comission': comissions,
'period': periods,
'start': starts,
'sample': sample,
'trades': trades,
'bench': bench})
df['result'] = df['total']-df['comission']-df['bench']
FILE = 'results_1.xlsx'
writer = pd.ExcelWriter(FILE, engine = 'xlsxwriter')
for g in range(0,3):
for m in range(0,3):
temp=df.copy()
temp = temp[temp['start']==start[g]]
temp = temp[temp['period']==period[m]]
goal = temp[temp['sample']=='original']
temp = temp[temp['sample']!='original']
g_total = goal['total'].values[0]
g_result = goal['result'].values[0]
temp['p_value_total'] = (temp['total']>g_total)/1000
temp['p_value_result'] = (temp['result']>g_result)/1000
temp = temp.groupby(['start', 'period']).agg({'p_value_total':'sum',
'comission': 'max',
'sample': 'max',
'trades': 'max',
'bench': 'min',
'p_value_result': 'sum'})
temp = temp.reset_index()
temp = temp[['p_value_total', 'comission', 'period', 'start', 'sample', 'trades', 'bench', 'p_value_result']]
temp.columns = ['total', 'comission', 'period', 'start', 'sample', 'trades', 'bench', 'result']
temp = pd.concat([temp, goal], ignore_index=True, sort=False)
temp.to_excel(writer, sheet_name = (str(start[g])+' '+str(period[m])), index=False)
writer.save()
writer.close()
start = [100, 200, 300]
period = [20,40,60]
fee = 0.0001
per = 90
comissions = []
totals = []
periods = []
starts = []
sample = []
trades = []
bench = []
for m in range(0,3):
for g in range(0,3):
for k in range(0, 1000):
prices = list(result_prices['price_'+str(k)])
var = list(result_vol['vol_'+str(k)])
i = start[g]
total = 0
comission = 0
trade=0
while (i<1255):
a = np.array(var[i-start[g]:i])
p = np.percentile(a, per)
ifvar[i]>p:
open_price = prices[i]
if (i+period[m])>len(prices)-1:
z = len(prices)-1
else:
z = i+period[m]
close_price = prices[z]
comission += open_price*fee+close_price*fee
total += (close_price-open_price)
i+=period[m]
trade+=1
i+=1
comissions.append(comission)
totals.append(total)
periods.append(period[m])
starts.append(start[g])
sample.append(k)
trades.append(trade)
bench.append(prices[-1]-prices[start[g]])
for m in range(0,3):
for g in range(0,3):
prices = list(data['rtsi'])
var = list(data['rvi'])
i = start[g]
total = 0
comission = 0
trade=0
while (i<1255):
a = np.array(var[i-start[g]:i])
p = np.percentile(a, per)
ifvar[i]>p:
open_price = prices[i]
if (i+period[m])>len(prices)-1:
z = len(prices)-1
else:
z = i+period[m]
close_price = prices[z]
comission += open_price*fee+close_price*fee
total += (close_price-open_price)
i+=period[m]
trade+=1
i+=1
comissions.append(comission)
totals.append(total)
periods.append(period[m])
starts.append(start[g])
sample.append('original')
trades.append(trade)
bench.append(prices[-1]-prices[start[g]])
df = pd.DataFrame({'total': totals,
'comission': comissions,
'period': periods,
'start': starts,
'sample': sample,
'trades': trades,
'bench': bench})
df['result'] = df['total']-df['comission']-df['bench']
FILE = 'results_2.xlsx'
writer = pd.ExcelWriter(FILE, engine = 'xlsxwriter')
for g in range(0,3):
for m in range(0,3):
temp=df.copy()
temp = temp[temp['start']==start[g]]
temp = temp[temp['period']==period[m]]
goal = temp[temp['sample']=='original']
temp = temp[temp['sample']!='original']
g_total = goal['total'].values[0]
g_result = goal['result'].values[0]
temp['p_value_total'] = (temp['total']>g_total)/1000
temp['p_value_result'] = (temp['result']>g_result)/1000
temp = temp.groupby(['start', 'period']).agg({'p_value_total':'sum',
'comission': 'max',
'sample': 'max',
'trades': 'max',
'bench': 'min',
'p_value_result': 'sum'})
temp = temp.reset_index()
temp = temp[['p_value_total', 'comission', 'period', 'start', 'sample', 'trades', 'bench', 'p_value_result']]
temp.columns = ['total', 'comission', 'period', 'start', 'sample', 'trades', 'bench', 'result']
temp = pd.concat([temp, goal], ignore_index=True, sort=False)
temp.to_excel(writer, sheet_name = (str(start[g])+' '+str(period[m])), index=False)
writer.save()
writer.close()
Размещено на Allbest.ru
Подобные документы
Понятие о рынке ценных бумаг. Место рынка ценных бумаг. Функции ценных бумаг. Составные части рынка ценных бумаг и его участники. Эволюция российского рынка ценных бумаг. Тенденции развития рынка ценных бумаг. Основные проблемы.
курсовая работа [32,9 K], добавлен 05.06.2006Инфраструктура фондового рынка. Рынок ценных бумаг России в современных условиях. Перспективы развития рынка ценных бумаг Российской Федерации. Проблемы развития российского рынка ценных бумаг. Возможные пути выхода из кризиса рынка ценных бумаг РФ.
научная работа [170,1 K], добавлен 29.09.2009Анализ рынка ценных бумаг, фондового рынка России и влияния финансового кризиса на экономику страны. Ключевые российские фондовые индексы, акции нефтегазовых, металлургических и электроэнергетических компаний, банков. Прогноз рынка ценных бумаг России.
контрольная работа [479,4 K], добавлен 15.06.2010Рынок ценных бумаг как институт или механизм, сводящий вместе покупателей и продавцов фондовых ценностей, то есть ценных бумаг. Знакомство с особенностями проведения аналитических исследований современных тенденций развития российского рынка ценных бумаг.
курсовая работа [548,4 K], добавлен 13.06.2014Структура и функции рынка капиталов, особенности его механизма функционирования в Российской Федерации. Система организации российского фондового рынка. Анализ концепций капитала и его происхождение. Функции рынка ценных бумаг, его структура и виды.
курсовая работа [109,4 K], добавлен 10.10.2012Анализ механизма работы рынка ценных бумаг в странах с развитой рыночной экономикой. Сущность, классификация и функции рынка ценных бумаг. Особенности современного этапа развития рынка ценных бумаг. Американская и германская модели фондового рынка.
контрольная работа [51,7 K], добавлен 20.08.2010Исследование фондового рынка Украины, анализ динамики его развития, выявление перспектив. Характеристика фондового рынка как элемента финансового рынка, первичный и вторичный рынок ценных бумаг. Развитие законодательной базы, регулирующей фондовый рынок.
курсовая работа [383,3 K], добавлен 02.03.2010Возрождение рынка ценных бумаг в РФ. Теоретические основы рынка ценных бумаг. Особенности первичного и вторичного рынка ценных бумаг. Виды ценных бумаг. Современное состояние российского рынка ценных бумаг и перспективы его развития.
курсовая работа [40,2 K], добавлен 04.06.2006Сущность, виды корпоративных и государственных ценных бумаг. Нормативно-правовая база рынка ценных бумаг Республики Беларусь. Динамика объема эмиссии акций, емкость рынка корпоративных облигаций в 2006-2010 гг. Совершенствование рынка ценных бумаг страны.
курсовая работа [305,4 K], добавлен 12.10.2012Раскрытие экономической сущности и изучение организационной структуры рынка ценных бумаг России, его место в системе рынков. Направления государственного регулирования рынка ценных бумаг в РФ. Реформирование и перспективы развития фондового рынка РФ.
курсовая работа [44,8 K], добавлен 13.06.2014