Блог им. KiboR

Сишный АнтиБаффет, с днем рождения! АКФ тебе в качестве подарка.

Всем привет!

Ну что же, вчера был день рождения у бота, за которым я уже год как пристально слежу...

Интересно наблюдать как он растет, набирается сил, падает, а затем снова растет...

3 года это уже не хухры-мухры!

Вот здесь мы с ребятами обсуждали тему АКФ и поняли, что пока на практике ее «не пощупаем», то и не поймем для чего она нужна и нужна ли вообще?

Итак, что же дано?

Дано:
        1. Теоретические азы мы черпаем здесь
        2. Ну и в качестве испытуемого берем Сишного АнтиБаффета

Поехали!

Эквити за 3 года:

Сишный АнтиБаффет, с днем рождения! АКФ тебе в качестве подарка.

В качестве случайного процесса у нас будут выступать дневные приращения Эквити в % (без реинвестирования):

Сишный АнтиБаффет, с днем рождения! АКФ тебе в качестве подарка.

Далее мы считаем автокорреляционную функцию временного ряда, для этого мы выстраиваем вот такую вот матрицу дневных приращений:


Сишный АнтиБаффет, с днем рождения! АКФ тебе в качестве подарка.

Коэффициенты автокорреляции первого, второго уровня и т.д. считаются очень просто в экселе, достаточно выделить два ряда и воспользоваться встроенный функцией "=коррел(...)".

Вот так это выглядит для вычисления коэффициента корреляции 5-го порядка:

Сишный АнтиБаффет, с днем рождения! АКФ тебе в качестве подарка.

Последовательность коэффициентов автокорреляции уровней первого, второго и т. д. порядков называют автокорреляционной функцией временного ряда. График зависимости ее значений от величины лага называется коррелограммой.

Вот наша коррелограмма вплоть до 30-го лага:

Сишный АнтиБаффет, с днем рождения! АКФ тебе в качестве подарка.


Теперь снова возвращаемся к теории и вспоминаем следующее:

При помощи анализа автокорреляционной функции и коррелограммы можно выявить структуру ряда.

Анализ структуры ряда можно проводить следующим образом:

  • если наиболее высоким оказался коэффициент автокорреляции первого порядка, исследуемый ряд содержит только тенденцию;
  • если наиболее высоким оказался коэффициент автокорреляции порядка "τ", ряд содержит циклические колебания с периодичностью в "τ" моментов времени;
  • если ни один из коэффициентов автокорреляции не является значимым, можно сделать одно из предположений относительно структуры ряда:
  1. ряд не содержит тенденции и циклических колебаний, а включает только случайную компоненту,
  2. ряд содержит сильную нелинейную тенденцию.


Выводы:

Мы видим, что наиболее значимыми коэффициентами автокорреляции являются коэффициент 13-го (0,158) и 18-го порядка (-0,157), т.е. делаем вывод, что наш ряд содержит циклические колебания с периодичностью в 13-ть и 18-ть периодов времени.

Эту же цикличность также можно наблюдать графически, особенно если посмотреть на просадки (это интереснее всего):

Сишный АнтиБаффет, с днем рождения! АКФ тебе в качестве подарка.


Главный вывод: АКФ полезна для определения периодичности циклических колебаний. Фондовый рынок — это временная структура, все здесь повторяется и любая стратегия будет обладать некой цикличностью временной структуры!

    ★8
    74 комментария

    Oleg Only Algo , дружище, спешл фо ю!

    avatar

    А. Г. , как вы считаете, если коэффициент автокорреляции не важно какого порядка меньше 0,5, стоит ли вообще на это обращать внимание?

    avatar
    KiboR, а почему комменты А. Г. и криптомана удалены?
    avatar
    Antonov, не я)
    avatar
    Antonov, я тоже не вижу
    avatar
    tranquility, я перепутал. Это просто кнопка вызова оппонентов была.
    avatar
    Antonov,  я ещё ничего в этот топик не писал. 
    avatar
    KiboR,  АКФ лучше считать специальными методами (есть в Excel и специализированных программах типа SPSS), у простого подсчёта корреляции большая ошибка. А ещё лучше сразу считать ЧАКФ. Но на значения меньше 0,1 при правильном расчёте я бы вообще внимания не обращал.
    avatar
    А. Г., На значения меньше 0,5 имелось ввиду?
    avatar
    KiboR,  нет меньше 0,1 по модулю. 0,3  по модулю — это уже «хорошая» линейная связь, если она получена для приращений.
    avatar
    А. Г., Т.е. 0,15 в моем случае тоже пойдет для анализа? Что-то мое внутреннее чутье горе-исследователя говорит, что даже 0,4 для приращений будет мало. А какая разница приращения или просто монетку подкидываем? Ведь и там и там каждый новый день — это новое случайное событие.
    avatar
    KiboR,  у независимого брасания монетки АКФ — нулевая, как и у приращений случайного блуждания, а вот у самого случайного блуждания корреляция соседних значений больше 0,9, но толку от этого нуль. 
    avatar
    А. Г., а если добавить к бросанию:  Если монетка упала на решку, считаем все равно Орёл. Чему АКФ равно? 
    avatar
    Oleg Only Algo, т.к. у ряда состоящего только лишь из одних Орлов нет никаких отклонений от средней, то в дроби ноль и будет division by zero.
    avatar
    KiboR, а сверху постоянно увеличившееся 1*1+2*2+3*3...?
    avatar
    Oleg Only Algo, 0 на 0 равно 1. Между величинами одна из которых, является линейной функцией другой,  корреляция по модулю равна 1.
    avatar
    Oleg Only Algo, кстати, А.Г. снова прав, когда мы делим на ноль будет бесконечность, но корреляция у нас находится в диапазоне (-1;1), т.е. берём верхний предел и получим 1. АКФ функции самой с собой равна 1, это я уже затупил вчера.
    avatar
    KiboR, ну значит в числителе =1, а в знаменателе 0. Если линия вверх под 45 градусов, то стремится к бесконечности?
    avatar
    Oleg Only Algo, коэффициент корреляции между x и y это ковариация(х, у)/(сигма(х)*сигма(у))

    Когда мы ищем корреляцию ряда самим с собой (автокорреляцию), то ковариация (х, х) =0 и сигмы равны нулю в случае прямой эквити.

    Итого будет 0/0. Математически я не помню как доказать, что автокорреляция ряда с самим собой равна 1, но по смыслу это так, т.к. ряды полностью идентичны.
    avatar
    KiboR, ну по смыслу то понятно, что одна линия с точно такой же корреляция 1. То есть в числителе=0?
    avatar
    Oleg Only Algo, в числителе и знаменателе дисперсии сокращаются, и там и там по единице.
    avatar
    Oleg Only Algo, нашел доказательство, ковариация (х, х)= Д(х), где Д(х)=0, так вот если в формулу с корреляцией подставить Д(х), то они там сокращаются и получится 1/1=1
    avatar
    А. Г., С этим согласен, но там же речь шла о приращениях случайного блуждания и имхо АКФ 0,1 это очень слабая связь, как и 0,2 и 0,3 и 0,4
    avatar
    Хорошо! Только по выводу. +-0.15, кмк, очень мало. «Цикличность» та слабая, почти незаметная. Скормить бы интересно твоей табличке что то искусственное, с реальной цикличностью и посмотреть как оно выглядит. И, до кучи, что то монотонно растущее по экспоненте и тоже посмотреть
    Стас Бржозовский, и я того же мнения, что даже 0,45 коэффициент корреляции это вообще ни о чем, хотя по ссылке на примере с зерном авторы статьи считают по другому.
    avatar
    Стас Бржозовский, 






    avatar
    KiboR, странный фигвам. с периодической функцией. надо призадуматься в эту сторону
    Стас Бржозовский, 
    в моем случае будет правильный вывод:
    ряд не содержит тенденции и циклических колебаний, а включает только случайную компоненту.

    А для примера «фиг вам» похоже правильный вывод:
    если наиболее высоким оказался коэффициент автокорреляции первого порядка, исследуемый ряд содержит только тенденцию;

    Видимо, эта периодичность тоже тенденцией считается, только периодической.

    Было бы интересно подобрать пример, где коэффициент корреляции для первого лага был бы больше 0,5 и при этом все остальные коэффициенты для лагов были заметно ниже первого и посмотреть на эту тенденцию.

    Будет время, нужно как-нибудь поиграться. 
    avatar
    KiboR, что то не так. В случае периодической функции не там должен максимум жить. А поиграться я тоже попробую попозже)
    Стас Бржозовский, все там) это лаг первого порядка, он практически идентичен нашей исходной функции и один в один повторяет ее за исключением переломных точек (там будет отставание) ;)
    avatar
    Чем выше коэффициенты корреляции, тем хуже для стратегии.

    Еще одна стратегия, тот же Сишний АнтиБаффет, только от продажи:








    avatar
    KiboR, в 1 лаге сколько сделок?
    avatar
    Oleg Only Algo, Эквити состоит из 175 примерно точек. С каждым лагом количество точек для подсчета корреляции уменьшается на величину лага.
    avatar
    KiboR, трудоемко однако строить) то есть если 5 Тыщ значений эквити и сдвигать на одну, то долго выйдет) а 30 лаг-это что значит? почему 30, а не 174, если сдвигать на одно значение?
    avatar
    Oleg Only Algo, при лаге 30 и изначальном количестве точек эквити 175 у нас под анализ попадет 145 точек, при лаге 75 уже будут 100 точек анализироваться и т.д. Если у тебя их тыщи, тогда ты можешь очень длинную функцию автокорреляции построить.
    avatar
    KiboR, но что, какие выводы главное она полезные даст то? Как с помощью ее оценить надежность системы то? Ведь и на глазок можно Оценить эквити. По значению АТФ мы же не сможем понять, что там у нас внутри системы, есть ли переоптимищация?
    avatar
    Oleg Only Algo, мы с тобой нашли АКФ =0, мой случай, осталось другую крайность попробовать отыскать, когда АКФ для какого-то лага достигает очень высокого значения. Попробую завтра смоделировать Эллиота 1-2-3-4-5-а-б-с несколько раз с положительным мат.ожиданием, интересно, как будет АКФ выглядеть.
    avatar
     Сверху в формуле коэф линейной зависимости, в знаменателе -разброс от средней. Получается смысл этого АТФ то какой основной?
    avatar
    Oleg Only Algo, формула — это обычное вычисление корреляции между двумя рядами. Первый основной, а второй смещенный на величину лага.

    Смысл АКФ — понять есть ли некая тенденция в нашем ряде.

    В мое примере Сишного Антибаффета с коэффициентами максимальными [-0,15;0,15] никакой тенденции нет:

    ряд не содержит тенденции и циклических колебаний, а включает только случайную компоненту.

    Я ошибся первоначально с выводами.
    avatar
    KiboR, то есть стратегия не рабочая?))140 процентов то прилипло
    avatar
    Oleg Only Algo, про рабочесть мы никаких выводов сделать по АКФ не можем, для нас рабочая стратегия — ведь это когда счёт по окончанию больше нуля))
    avatar
    KiboR, тенденцию все же на глазок лучше?
    avatar
    Oleg Only Algo, я вообще уже не понимаю что такое тенденция в работе с АКФ.
    avatar
    KiboR, если на практике не Работал, сразу походу не въедешь) Пусть это корреляция. По моему про эту АТФ лучше забыть)
    avatar
    Oleg Only Algo, ну сейчас то мы с тобой разобрались)) ты можешь объяснить почему на примере вверху «фиг вам» есть лаг с коэффициентом -1, т.е. абсолютная антикорреляция? Если сможешь, значит ты правильно понял АКФ. Фиг вам очень зачётный пример, я проникся прямо)))
    avatar
    АКФ — неподходящий инструмент для анализа цикличности. Есть прямой метод — анализ Фурье или вейвлеты. Есть методы типа максимума энтропии или алгоритма Берга, которые дают сверхразрешение при высоком отношении сигнал/помеха.
    Скриган строит гребенку полосовых фильтров. Пока я пользы в таких методах не нашел. Потому что (а) процесс нестационарный (б) сигнал/помеха низкие.
    avatar
    SergeyJu, если как у Олега 5000 значений в эквити, мне кажется, АКФ за глаза хватит. Если АКФ не видит цикличности, имхо, Анализ Фурье их тоже не увидит.
    avatar
    KiboR, Вы не слышите. Ряд НЕСТАЦИОНАРНЫЙ. А это значит, что временное окно для оценок, неважно, АКФ или спектра по Фурье, бесмысленно делать слишком большим. 
    И хотя я уверен, что в рынке есть и недельная и месячная цикличность, то, что Вы её не обнаруживаете говорит о негодности инструмента.
    avatar
    SergeyJu, согласен, это видимо был ответ к моему сообщению про 5000 значений эквити. Наверное, лага 30 должно быть за глаза на практике. Либо есть некая цикличность, либо её не будет.
    avatar
    KiboR, хочешь, могу позже чуть сбросить по РТС эквити стратегии по ртсф за все время истории с 2005 года, там сделок достаточно много. Что там АКФ покажет интересно? Если занялся и формулы уже настроены?) а то мне не до этого сейчас немного
    avatar
    Oleg Only Algo, если скинешь ряд подневных изменений эквити, смогу подсчитать завтра.
    avatar
    KiboR, подневных нет, к сожалению. Только по закрытым сделкам, а это не совсем правильно получается выйдет
    avatar
    Oleg Only Algo, по закрытым это немного другое. А сколько длится в среднем дней одна сделка, есть какое-то тяжёлое мат.ожидание или там рандомайзом разброс от 1 до 30 дней?
    avatar
    KiboR, так чтобы усреднить, сложно сказать, бывает по несколько в день, а бывает и по несколько дней, когда в тренд попадает. 
    avatar
    Oleg Only Algo, но у меня тоже сделки не каждый день, но они если есть, то их длина — 1 день. Имхо, эквити есть эквити, АКФ судя по твоему описанию будет также около нуля болтаться, это сразу как говорится эмпирическая чуйка))
    avatar
    KiboR, ну это АКФ как я понял на практике  не применить, мне по крайней мере. Я не математик, к сожалению, хотя в институте по мат статистике 5 была, поэтому только по смыслу если понимаю четко, то использую. А тут ну как то для регулирования размера позы если,  да и то у меня свои представления. Максимум пользую реинвест ( расчёт от суммы на счете доли на алгоритм) на практике
    avatar
    Oleg Only Algo, для закрытых сделок тоже АКФ можно будет подсчитать, в принципе, ничем не будет отличаться от подневной эквити. Акф ищет повторения в эквити, некую периодичность, больше она не для чего не нужна. Высокий коэффициент акф для торговых систем мне кажется тяжело встретить, я себе даже не могу вообразить эту периодичность, это как если бы каждую пятницу рынок всегда закрывался бы в красной зоне из недели в неделю на протяжении года.
    avatar
    Oleg Only Algo, хотя нет, кидай сами значения эквити, а с меня 3 графика, как я сейчас вставлял.
    avatar
    KiboR, я как то начало упустил. Этот антибаффет это что то открытое, или наоборот? В чем суть его?
    Стас Бржозовский, закрытый. Препарирую его иногда, ах да, и продаю… За 50 мультов!)) В конце этого года.
    avatar
    KiboR, ага. А точки с абсциссами 41, 85 и 120 это какие даты примерно?
    Стас Бржозовский, 60 точек в год в среднем, т.е. примерно можно подсчитать отталкиваясь от этого.
    avatar
    Здесь уместно следующее рассуждение.

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

    2. Когда мы берем эквити от нестационарного процесса, которая сама с высокой вероятностью нестационарна, мы не знаем, какой она будет в будущем. Что важно в этом случае?
    2.1. Мы анализируем растущие эквити (в кумулятивном виде).
    2.2. Мы анализируем их как такие, которые буду расти дальше вправо и хорошо бы, чтобы они росли и в прошлом влево.
    2.3. Мы предполагаем, что характер роста будет примерно таким же. В противном случае наши попытки анализировать цикличности бессмысленны априори.

    3. А теперь представим, что у нас получается с учетом выполнения этих предположений 2.1.-2.3. Если и дальше эквити будет расти с периодическими просадками, т.е. у эквити процесса всё-таки есть удовлетворительное положительное матожидание, то уместно без анализа цикличности эквити (неважно, какими методами) после положительных серий сделок сокращать экспозицию, а после отрицательных — наращивать.

    4. Т.е. желание контртрендить растущую эквити вполне обосновано чисто общим рассуждением и принятием гипотез, которые мы и так принимаем, если вкладываемся в данную стратегию. БЕЗ РАСЧЕТОВ АКФ.

    5. Дальше дело техники. Любую ли эквити можно и стоит ли контртрендить и как это делать. Где-то овчинка стоит выделки, где-то — нет.

    6. Но самое важное. Для принятия решения об улучшении эквити нужно опираться на кое-что иное, нежели на анализ типа АКФ.
    avatar
    Sergey Pavlov, я пытался покупать при просадках этой эквити и увеличивал риски, результат оказался ещё хуже, чем если бы изначально ничего не менял.

    Вывод: у нестационарных процессов мы не знаем абсолютно ничего, даже построив какую-то гипотезу на будущее постоянно попадаем в просак. :)
    avatar
    KiboR, значит что-то где-то не так в наших рассуждениях или действиях. Надо понять, почему. Мне помогают в этом модельные эквити, растущие по разным случайным приращениям. Я обнаружил эмпирически примерно следующее. Если сделки редкие и в ср. положительная сделка ощутимо больше средней отрицательной, а с их частотой всё наоборот и отрицательная ограничена как в трендовых реверсных системах, то уместно то, о чем я сказал. В иных случаях наоборот. В любом случае обнаруживать цикличность по малому количеству сделок и искать конкретный лаг
    avatar
    Sergey Pavlov, с этим согласен, много сделок — много шума. У меня среднее количество положительных сделок примерно равно или даже чуть меньше количества отрицательных, но за счёт того, что риск на сделку 2%, а прибыль ограничивается лишь волатильностью в конкретный день, получается положительное мат.ожидание. имхо, какие-то модели строить бесполезно, растущий тренд в любой момент может уйти с равной вероятностью как в штопор вниз, так и в боковик, предсказать отобьется ли рынок от границы боковика или прорвет его — невозможно. В этом вся прелесть СП :) Если при каждом подходе к границе боковика мы будем ставить повышенный риск на то, что границу прорвут, то рыбки-пираньи могут быстро съесть весь наш депозит. КМК, риск у торговой системы не нужно менять, как первоначально она была подсчитана, лучше таких правил и придерживаться в дальнейшем. Наблюдая за этим антибаффетом я пришел к таким вот выводам.
    avatar
    кмк главные проблемы (задачи) это
    1. отличить закурфиченные системы от жизнеспособных, при одинаковом коде и разных, но предопределённых параметрах 
    2. найти факторы, которые позволяют давать перспективным сделкам больше денег

    а какая там периодичность, можно без всяких сложностей посчитать (макс число убытков/прибылей подряд, макс длина просадки)

    слышал мнение, что профиль сделок (% плюсов и минусов) у трейдеров может мало отличаться, при этом за счёт бюджета сделки (п 2.) опытные трейдеры получают от плюсовых сделок больше. В реальности, т.е. моих опытах,  ошибки, когда хорошему плюсу даётся ошибочно мало денег, сильно убивают эквити.


    avatar
    ПBМ, перед каждой сделкой мы ведь не знаем плюс она принесет или убыток ;) даже после серии убытка у нас может быть убыток потом ещё больше и глубже
    avatar
    KiboR, ну вот может мы всё-таки как-то знаем хотя бы вероятностно
    avatar
    ПBМ, по идее, с углублением просадки вероятность выигрышной сделки должна расти, но на практике получается, что она никому ничего не должна :)
    avatar
    KiboR, это факт, я больше про цену говорю, ну какие-то же есть факторы, которые говорят — что тут вероятнее получить прибыль, а тут — как повезёт
    avatar
    ПBМ, у меня, например, АКФ нулевая, т.е. каждая сделка — это случайная величина на моей эквити и невозможно склонить чашу весов вероятности ни в ту ни в другую сторону. Если бы была периодичность, тогда можно было бы подключить теорию вероятности и уже играться с увеличением/уменьшением позиции. 

    Вот для чего по сути нужен этот АКФ.
    avatar

    теги блога KarL$oH

    ....все тэги



    UPDONW
    Новый дизайн