Влияние индекса волатильности на динамику цен активов на примере российского фондового рынка

Нахождение основных внемодельных зависимостей между индексом волатильности российского фондового рынка в качестве прокси-переменной для краткосрочной 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.