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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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()

Источник: https://otherreferats.allbest.ru/download/1225864/