Теория случайных потоков и FOREX - страница 6

 

dreder, спасибо за совет, но я им вряд ли воспользуюсь: я наркоман, и мне хватило одной реальной дозы, чтобы подсесть. Да и ты наркоша, не так ли?

И вообще - почему бы не пообщаться в узком кругу наркоманов, некоторые из которых неплохо разбираются в математике (я не о себе)?

2 Candid: сейчас соберу и вышлю. Там Марпл, Сато, Вальд, Фарина, лекции по DSP и вычисление АКФ в маткаде. Надеюсь, что весь архив пройдет сразу (у мну все вместе вышло порядка 13.5 Мбайт, так что при пересылке будет меньше 20). Я послал тебе с другого ящика. Черкани сюда о результате - или в почту.

 
Prival:

Попробую пояснить АКФ на примере, ...

Ну определение АКФ я в принципе знал, просто часто бывает сколько людей, столько и формул :). Если не в лоб вычислять, разумеется.
А чем не подходит fastcorellation из библиотеки klot'а ?
 
Mathemat:

И вообще - почему бы не пообщаться в узком кругу ...

я только за, только вот в математике я не спец, в лучшем случае на троечку. Вод пару-тройку рюмочек пропустить в этом богатый опыт авиационного радио-инженера :-)

lna01 по поводу fastcorellation я и незнал что это оно, ты уж извини если начну снова с дурными вопросами приставать :-), как там все считается.

 
Prival:

lna01 по поводу fastcorellation я и незнал что это оно, ты уж извини если начну снова с дурными вопросами приставать :-), как там все считается.

Вот здесь подробнее - http://alglib.sources.ru/fft/fastcorrelation.php
Формат такой:
void fastcorellation(double& signal[], int signallen, double pattern[], int patternlen)
/*************************************************************************
Корелляция с использованием БПФ

На входе:
Signal - массив сигнал, с которым проводим корелляцию.
Нумерация элементов от 0 до SignalLen-1
SignalLen - длина сигнала.

Pattern - массив образец, корелляцию сигнала с которым мы ищем
Нумерация элементов от 0 до PatternLen-1
PatternLen - длина образца

На выходе:
Signal - значения корелляции в точках от 0 до
SignalLen-1.
*************************************************************************/
 
Ага, все понятно. Судя по описанию, массивы фактически периодические, а для таких данных АКФ будет по определению зависеть как раз от разности аргументов, т.е. автоматом процесс получится стационарным. Не подходит, блин... 
 
Mathemat:
Ага, все понятно. Судя по описанию, массивы фактически периодические, а для таких данных АКФ будет по определению зависеть как раз от разности аргументов, т.е. автоматом процесс получится стационарным. Не подходит, блин...

АКФ будет симметричным если использовать БПФ, т.е данные нужны до середины. Хотя я незнаю куда там ты его приложить хочеш

если АКФ завист от разности аргументов, то нестационарный

 
Mathemat:
Ага, все понятно. Судя по описанию, массивы фактически периодические, а для таких данных АКФ будет по определению зависеть как раз от разности аргументов, т.е. автоматом процесс получится стационарным. Не подходит, блин...
Они конечно периодические, но с периодом первой 2^n большей signallen+patternlen, именно до такой длины идёт дописывание нулей - это следует из исходника. То есть на самом деле непериодические :)
 
нужна процедура расчитывающая по МНК коэффициенты а и b  в уравнении y(x)=a*x+b. Тогда может и получится у меня слепить какой нить снова кривой алгоритм АКФ на MQL
 
Prival:
нужна процедура расчитывающая по МНК коэффициенты а и b в уравнении y(x)=a*x+b. Тогда может и получится у меня слепить какой нить снова кривой алгоритм АКФ на MQL
Наверное трудно найти человека, не ваявшего для себя такую функцию. Я тоже ваял :) 'Функции'
 
Prival:

Попробую пояснить АКФ на примере, допустим у нас есть два массива данных, первый 0 1 2 3 4 5 и второй 10 11 12 13 14 15, если мы вычислим коэффициент корреляции (КК) этих массивов то он = 1, т.е. зная 1 ряд мы можем точно вычислить второй, если бы второй ряд имел вид 15 14 13 12 11 10, то КК будет = -1, т.е. когда один ряд увеличивается, второй в той же пропорции уменьшается.

АКФ (автокорреляционная функция, это сравнение массива с самим собой только сдвинутого во времени. При сдвиге=0 АКФ =1 т.к. исходные данные точно соответствуют самим себе. При увеличении сдвига, АКФ начинает меняться, болтается между -1 и 1, ноль означает отсутствие корреляции.

Если бы АКФ потока котировок была все время =1 эх какой бы Грааль был :-).

У меня получились картинки, выкладывал их выше. Но это просто по 1 выборке, я думаю с течением времени АКФ должна меняться (точно меняется ибо грааль был бы давно найден), но если найдем функцию её апроксимирующую и останется найти параметры этой функции это будет уже значительный шаг вперед

Что дает нам анализ АКФ

1. построить более менее адекватную модель временного ряда.

2. определить время в течении, которого процесс коррелирован, т.е. время на которое можно предсказать поведение кривой

3. АКФ можно использовать по разному, вплодь до принятия торговых решений, главное с ней разобраться и понять как она себя ведет на различных временных участках


Попробовал накропать на MQL скрипт выводящий в отдельном окне коррелограмму (функцию автокорреляции) временного ряда. Код строит ряд первых разностей и находит усреднённый по выборке из Nbars значений, коэффициент корреляции текущей разности Open[i]-Open[i+1] с самим собой (столбик с нулевым индексом), с предыдущей разностью Open[i+1]-Open[i+2] (столбик с индексом номер 1),..., с k-ой разностью Open[i+k]-Open[i+k+1] (столбик с индексом номер k) и т.д., k пробегает значения от 0 до n.

//+------------------------------------------------------------------+
//| FAK. mq4 |
//| Copyright © 2007, Neutron |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_width1 4

extern int Nbars=10000, n=100;
int i,step,Start;
double s1,s2,fak[1000],Dif[10000];

int start()
{
Start=Nbars+n;
for (i=Start;i>=0;i--){Dif[i]=Open[i]-Open[i+1];}

for (step=0;step<=n;step++){s1=0;s2=0;
for (i=Nbars;i>=0;i--){s1=s1+Dif[i]*Dif[i+step];s2=s2+Dif[i]*Dif[i];}
fak[step]=s1/s2;}
}

int init()
{
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,fak);
return(0);
}

Обратите внимание, на минутках пара EUR/GBP показывает сильную отрицательную зависимость между соседними отсчётами (столбик с индексом 1 и значением -0,25). Чтобы не выводить малоинформативный нулевой столбец (всегда тождественно равный 1), необходимо строку:

for (step=0;step<=n;step++){s1=0;s2=0;

заменить на:

for (step=1;step<=n;step++){s1=0;s2=0;

Произведение коэффициента автокорреляции r1 на волатильность инструмента на выбраном ТФ, даст среднюю прибыльность ТС построенной на эксплуатации Марковского процесса. К сожалению, эта величина не превышает комиссии ДЦ.

Причина обращения: