Выявление и анализ корреляционных характеристик фьючерсных контрактов

Определение сущности фьючерсного контракта. Рассмотрение сравнительного анализа модели искусственной нейронной сети и регрессионных моделей. Ознакомление с процессом выбора программного обеспечения. Исследование временных рядов биржевых индексов.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 30.08.2016
Размер файла 453,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

corrData=h(:,1) .* h(:,2);

r = [instr, instr, obj1, obj2, 3, un(cont), 0, corrData'];

rez = [rez; r];

end

end

end

%5XCF контрактов раннего с поздним

for cont1 = 1 : size(un, 1) - 2

for cont2 = cont1 + 1 : size(un, 1) - 1

a = data(data(:, 3) == un(cont1), [4 obj2]);

b = data(data(:, 3) == un(cont2), [4 obj1]);

if size(a, 1) ~= size(b, 1)

a(a(:, 1) > min(size(a, 1), size(b, 1)), :) = [];

b(b(:, 1) > min(size(a, 1), size(b, 1)), :) = [];

end

s = size(a, 1);

if s > 21

h = crosscorr(a(:, 2), b(:, 2));

if max(abs(h))>0.65

h(1:20)=[];

h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);

corrData=h(:,1) .* h(:,2);

r = [instr, instr, obj1, obj2, 4, un(cont2), un(cont1), corrData'];

rez = [rez; r];

end

end

end

end

end

%6XCF разных инструментов

for instr2 = 43 : 8 : 219

if instr ~= instr2

data2 = dataAll(:,[2 instr : instr + 7 instr2 : instr2 + 7]);% день недели и инструмент весь

data2 = getRemoveNan(data2);

data2 = getDiff55(data2); %взяли разности

s = size(data2, 1);

if s > 21

h=crosscorr(data2(:, obj1 + 8), data2(:, obj1));

if max(abs(h))>0.65

h(1:20)=[];

h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);

corrData=h(:,1) .* h(:,2);

r = [instr, instr2, obj1, obj1, 0, 0, 0, corrData'];

rez = [rez; r];

end

end

for dow=2:6

s=size(data2(data2(:,1) == dow,1),1);

if s > 21

h=crosscorr(data2(data2(:,1)==dow, obj1 + 8), data2(data2(:,1)==dow, obj1));

if max(abs(h))>0.65

h(1:20)=[];

h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);

corrData=h(:,1) .* h(:,2);

r = [instr, instr2, obj1, obj1, 2, dow, 0, corrData'];

rez = [rez; r];

end

end

end

end

end

end

%7Index

for ind = 3:4:39

data3 = dataAll(:,[2 instr instr + 3 instr + 4 instr + 7 ind : ind + 3]);

data3 = getRemoveNan(data3);

data3(:,[3:5 7:9]) = [0 0 0 0 0 0;diff(data3(:,[3:5 7:9]))];

data3(:,[3 7]) = [0 0; diff(data3(:,[3 7]))];

data3(1:2,:) = [];

if size(data3,1)>21

h = crosscorr(data3(:, 7), data3(:, 3));

if max(abs(h))>0.65

h(1 : 20) = [];

h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);

corrData=h(:,1) .* h(:,2);

r = [instr, ind, 1, 1, 0, 0, 0, corrData'];

rez = [rez; r];

end

h = crosscorr(data3(:, 8), data3(:, 4));

if max(abs(h))>0.65

h(1 : 20) = [];

h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);

corrData=h(:,1) .* h(:,2);

r = [instr, ind, 2, 2, 0, 0, 0, corrData'];

rez = [rez; r];

end

h = crosscorr(data3(:, 9), data3(:, 5));

if max(abs(h))>0.65

h(1 : 20) = [];

h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);

corrData=h(:,1) .* h(:,2);

r = [instr, ind, 5, 5, 0, 0, 0, corrData'];

rez = [rez; r];

end

for dow=2:6

if size(data3(data3(:,1)==dow),1)>21

h = crosscorr(data3(data3(:,1)==dow, 7), data3(data3(:,1)==dow, 3));

if max(abs(h))>0.65

h(1 : 20) = [];

h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);

corrData=h(:,1) .* h(:,2);

r = [instr, ind, 1, 1, 2, dow, 0, corrData'];

rez = [rez; r];

end

h = crosscorr(data3(data3(:,1)==dow, 8), data3(data3(:,1)==dow, 4));

if max(abs(h))>0.65

h(1 : 20) = [];

h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);

corrData=h(:,1) .* h(:,2);

r = [instr, ind, 2, 2, 2, dow, 0, corrData'];

rez = [rez; r];

end

h = crosscorr(data3(data3(:,1)==dow, 9), data3(data3(:,1)==dow, 5));

if max(abs(h))>0.65

h(1 : 20) = [];

h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);

corrData=h(:,1) .* h(:,2);

r = [instr, ind, 5, 5, 2, dow, 0, corrData'];

rez = [rez; r];

end

end

end

end

end

disp([num2str(instr) ' done!']);

end

clear a b cont cont1 cont2 corrData data data2 data3 dbe dow h ind instr instr2 obj1 obj2 r un s

function output = getRemoveNan(input)

%GETREMOVENAN Summary of this function goes here

% Detailed explanation goes here

output = input(~any(isnan(input),2),:);

end

%Функция

function [qticker, output] = getTicker(ticker)

data = [];

files = dir(strcat(ticker,'/*.txt'));

for file = files'

d = load(strcat(ticker,'/',file.name));

d = [str2double(strcat('20',file.name(end-10:end-9),file.name(end-13:end-12),'01')) * ones(size(d,1),1) d];

data = [data; d];

end

data(data(:, 1) > 20160331, :) = [];

data = sortrows(data,[1 2]);

clear d file files

data = sortrows(data, [-1 -2]);

data = [ones(size(data, 1), 3) data];

data(:, 2) = weekday(datetime(data(:, 5),'ConvertFrom','yyyymmdd'));

for i = 2 : size(data, 1)

if data(i, 4) == data(i - 1, 4)

data(i, 1) = data(i - 1, 1) + 1;

end

end

data = sortrows(data, [4 2 1]);

for i = 2 : size(data, 1)

if (data(i, 4) == data(i - 1, 4)) && (data(i, 2) == data(i - 1, 2))

data(i, 3) = data(i - 1, 3) + 1;

end

end

data(data(:, 4) > 20160331, :) = [];

data = sortrows(data, 5);

for i = 2 : size(data, 1)

if data(i, 5) == data(i - 1, 5)

data(i, 2) = 10;

end

end

data(data(:, 2) == 10, :) = [];

data = sortrows(data, [4 5]);

data = [data data(:, 7) - data(:, 8) data(:, 9) ./ data(:, 6)];

data = [data tsmovavg(data(:, 10), 'e', 5, 1) tsmovavg(data(:, 11), 'e', 5, 1) data(:, 12)];

X = [data(2 : end, 9) ./ data(1 : end - 1, 9) data(2 : end, 13) ./ data(1 : end - 1, 13) data(2 : end, 14) ./ data(1 : end - 1, 14) data(2 : end, 15)];

data(1, :) = [];

data = [data X];

data(data(:, 4) == min(data(:, 4)), :) = [];

data(:, 20) = datenum(datetime(data(:, 5),'ConvertFrom','yyyymmdd')) - datenum(2009,1,1) + 1;

clear i X

output = [data(: ,20) data(: ,5) data(: ,4) data(: ,1) data(:, 9) data(: ,16) data(: ,17) data(: ,18) data(: ,19)];

%output = [data(: ,20) data(: ,5) data(: ,4) data(: ,1) data(: ,16) data(: ,17) data(: ,18) data(: ,19)];

%save(ticker);

qticker = strcat('q', ticker);

end

ggetD;

d1=getfield(dataA, 'q6A');

d2=getfield(dataA, 'q6B');

d3=getfield(dataA, 'q6C');

d4=getfield(dataA, 'q6E');

d5=getfield(dataA, 'q6J');

d6=getfield(dataA, 'q6L');

d7=getfield(dataA, 'q6M');

d8=getfield(dataA, 'q6S');

d9=getfield(dataA, 'qCL');

d10=getfield(dataA, 'qDX');

d11=getfield(dataA, 'qE7');

d12=getfield(dataA, 'qES');

d13=getfield(dataA, 'qGC');

d14=getfield(dataA, 'qHG');

d15=getfield(dataA, 'qNG');

d16=getfield(dataA, 'qNQ');

d17=getfield(dataA, 'qPA');

d18=getfield(dataA, 'qPL');

d19=getfield(dataA, 'qRB');

d20=getfield(dataA, 'qSI');

d21=getfield(dataA, 'qYM');

d22=getfield(dataA, 'qZC');

d23=getfield(dataA, 'qZF');

d24=getfield(dataA, 'qZL');

d25=getfield(dataA, 'qZM');

d26=getfield(dataA, 'qZN');

d27=getfield(dataA, 'qZS');

d28=getfield(dataA, 'qZT');

d29=getfield(dataA, 'qZW');

function output = ggetNew( input )

%GGETNEW Summary of this function goes here

% Detailed explanation goes here

x=zeros(size(input,1),1);

for i=26:size(input,1)

x(i)=input(i,10)/mean(input(i-25:i-1,10));

end

input(:,11)=x;

input(:,12)=input(:,9)./input(:,6)-1;

input(:,13)=input(:,7)./input(:,8)-1;

input(:,14)=[0; input(2:end,9)./input(1:end-1,9)] - 1;

input(1:25,:)=[];

output=input;

end

%Функция

function [qticker, output] = ggetTick(ticker)

data = [];

files = dir(strcat(ticker,'/*.txt'));

for file = files'

d = load(strcat(ticker,'/',file.name));

d = [str2double(strcat('20',file.name(end-10:end-9),file.name(end-13:end-12),'01')) * ones(size(d,1),1) d];

data = [data; d];

end

data(data(:, 1) > 20160331, :) = [];

data = sortrows(data,[1 2]);

clear d file files

data = sortrows(data, [-1 -2]);

data = [ones(size(data, 1), 3) data];

data(:, 2) = weekday(datetime(data(:, 5),'ConvertFrom','yyyymmdd'));

for i = 2 : size(data, 1)

if data(i, 4) == data(i - 1, 4)

data(i, 1) = data(i - 1, 1) + 1;

end

end

data = sortrows(data, [4 2 1]);

for i = 2 : size(data, 1)

if (data(i, 4) == data(i - 1, 4)) && (data(i, 2) == data(i - 1, 2))

data(i, 3) = data(i - 1, 3) + 1;

end

end

data(data(:, 4) > 20160331, :) = [];

data = sortrows(data, 5);

for i = 2 : size(data, 1)

if data(i, 5) == data(i - 1, 5)

data(i, 2) = 10;

end

end

data(data(:, 2) == 10, :) = [];

data = sortrows(data, [4 5]);

qticker = strcat('q', ticker);

output = data;

end

...

Подобные документы

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