Про устойчивые распределения ( — это просто его параметр, от которого зависит конечность моментов) можно прочитать, например, на Википедии (ссылка). Кратко говоря, это распределения, "инвариантные" к сложению случайных величин.
Насчет второго вопроса: говорится про распределение выборочных корреляций, а не про конкретные реализации:
Если есть стационарный набор с.в. и мы рассмотрим , то они сходятся к устойчивому распределению по распределению (тавтология, но, ладно), потому что есть какая-то теорема, в которой это доказывается (а именно, Davis and Mikosh теорема 3.5).
Чтобы более наглядно это представить, зафиксируйте, например, значение и , тогда получится такое . Все здесь случайные величины, а значит, — тоже случайная величина. По такому же принципу строятся случайные величины И вот оказывается, что эта последовательность случайных величин по распределению сходится к устойчивой случайной величине.
Об этом с практической точки зрения можно думать так: если Вы имеете "достаточно" большое (и тут на арену выходит скорость сходимости), и имеете выборку данных (цен закрытия) , например, то вы вычисляете (пусть опять же для ) величину по формуле выше. Вы хотите сделать вывод о том, насколько большое (или маленькое) ваше значение . Как вы это будете делать? Естественный ответ — посмотрите "где в распределении" лежит ваше , но для этого нужно знать, из какого распределение ваше значение получено. Вот для этого и исследуют сходимости, потому что наш ответ — что распределение из которого получены — просто некоторое устойчивое (и НЕ нормальное в общем случае).
Наконец, Вы говорите о том, что если есть неэффективность, то она может проявляться на некоторых выборочных значениях. Пока что я тут проблемы не вижу, и, более того, обычно так и есть, что неэффективность возникает, а потом исчезает через несколько секунд/минут/часов...
Спасибо за разделение интереса к тематике :) Под кластеризацией волатильности подразумевается следующее:
Различные "меры" волатильности демонстрируют положительную автокорреляцию в течение нескольких дней, что отражает тот факт, что события с высокой волатильностью имеют тенденцию группироваться во времени.
Чтобы объяснить фразу попонятнее, нужно, наверное, предложить конкретную стратегию, которая использует неэффективность рынка :) Насчет эффективности рынка, имелось в виду отсутствие автокорреляций . На самом деле тут Вы правы, обычно этот факт называют не самой гипотезой об эффективности рынка, а "support for the Efficient Market Hypothesis" (см., например, Cont 2000). Из данного "определения" вытекает стратегия, которая и использует эту корреляцию (она относится к классу стратегий статистического арбитража):
Предположим, Вы умеете каким-то образом робастно вычислять такую корреляцию для последних N свечей. Тогда, используя предположение о нулевой корреляции, стратегия будет пытаться снизить эту корреляцию для будущих изменений цены.
Для лучшего объяснения цитата Мандельброта: "arbitrage tends to whiten the spectrum of price changes".
Спасибо за вопрос! Я действительно не очень подробно описал, что за "классический" подход имеется в виду. Давайте разобьем его на две части:
Вычислить выборочную статистику: в нашем случае — выборочную автокорреляцию.
Используя "известное" распределение этой выборочной статистики построить, например, доверительный интервал (или протестировать гипотезу).
Так вот оказывается, что и в первом и втором пунктах есть трудности для распределений с тяжелыми хвостами. В первом пункте — просто вопрос существования, для тяжелохвостных распределений часто (в зависимости от ) не определены корреляция самих и уж тем более их квадратов. Во втором пункте же используется то самое "известное" распределение, которое часто полагается нормальным, и используются квантили этого распределения для построения того же доверительного интервала. Однако в этой статье (надеюсь) показано, что распределение уж очень вряд ли нормальное, и, более того, имеет бесконечную дисперсию, что сильно раздвигает границы доверительного интервала и вызывает трудности с проверкой гипотез и т.д.
Попробую поддержать и, возможно, развить ответ @Aquahawk. Устойчивая и эффективная оценка параметров крайне важна на практике. Например, предположим, Вы торгуете, используя некоторую стратегию, вычисляющую эффективность рынка на последних N временных промежутках. Тогда Вам будет важно дать "правильную" оценку эффективности (возможно, протестировать какую-то гипотезу, например, о равенстве корреляции 0) и, вычисляя просто соответсвующие корреляции, Вы можете получить некорректные результаты, что приведет к потерям. В данной части статьи, я постарался показать, что у классических подходов действительно есть проблемы при работе с тяжелохвостными данными, а в следующей части, следуя одной известной статье, я опишу альтернативный подход, который справляется с описанными трудностями.
Вряд ли "тупые школьники" делали бы допущения о которых пишут известные ученые в недавних исследованиях. Посмотрите, например, работу Р. Ибрагимова о новых подходах в оценке эффективности рынка и т.д. Статья опубликована в Journal of Financial Econometrics, который входит в первый квартиль журналов, индоссируемых Scopus. Введение статьи говорит ровно о том, что такие допущения делаются, и авторы даже предоставляют ссылки на сопутствующие работы. Поэтому вряд ли Ваше замечание о примитивности предположений уместно. Говоря об определении доходностей, которым я пользуюсь в статье, могу сослаться на определение Рама Конта из его знаменитой статьи о стилизованных фактах. Как Вы могли догадаться — определение такое же, так что его использование вполне уместно. Более подробные пояснения на этот счет Вы можете найти там же. Наконец, если Вы хотите выразить Ваше мнение, что всегда, безусловно, приветствуется, постарайтесь в будущем делать это в более корректной форме.
Если вкратце, то есть две версии стратегии: "trend following" и "reversed". Они абсолютно зеркальны. Если мы говорим о "trend following" стратегии, то обычно: 1) открываютшорт, когда короткая скользящая средняя пересекает длинную сверху вниз; 2) закрывают шорт и открывают лонг когда короткая скользящая средняя пересекает длинную снизу вверх; 3) закрывают лонг, соответсвенно, когда открывается шорт (когда короткая скользящая средняя пересекает длинную сверху вниз).
То есть момент закрытия одной позиции совпадает с открытием противоположной. (Reversed стратегия меняет местами шорт и лонг.)
Так я и не утверждал ничего с помощью репозитория. Единственный посыл был в том, что "вот можно пытаться предсказывать всплески волатильности с помощью каких-то признаков"
Вы во многом правы) Технический анализ -- это действительно "предсказание" будущего на основе некоторых статистик из прошлого (в нашем случае -- скользящего среднего и отклонения). Весь технический анализ держится примерно на том, что рынок ведет себя "согласно некоторому паттерну", который и может описываться правилами технического анализа. И иногда это правда, поскольку, если углубиться в теорию случайных процессов, первое что Вы увидите -- это (скорее всего), что цена актива (P_t) не стационарный процесс, а значит не имеет свойства "отката" (mean-reverting property). Однако локально (на этом и держится тех анализ), возможно, это и имеет место быть... Но, на моем опыте, техническому анализу очень мешают всплески волатильности (и резкие движения (скачки) цены), которые ведут к значительным потерям. По поводу предсказания всплесков волатильности можете посмотреть мой репозиторий с моделью) https://github.com/AlexanderShulzhenko/Short-term-Volatility-Prediction
Спасибо что упомянули talib, хотел написать об этой библиотеке в следующей части. Конечно, можно использовать talib для простоты, однако, я хотел показать именно техническую сторону вычисления индикаторов
Да, это правда, это можно сделать с помощью функции Klines, описанной в первой части статьи, однако Binance (по крайней мере по моему опыту) крайне редко ломает свечи
В тексте указано, что для простоты функции дублированы, поскольку открыть шорт и закрыть лонг для рынка фьючерсов -- это одно и то же (на этот счет даже написан комментарий, возможно, в первой части статьи). В то же время обработка всех исключений и ошибок сделает код более объемным и трудным для понимания. Задача сделать код оптимальным по количеству символов также не стояла :) Зато, надеюсь, некоторые дублирования помогут читателю лучше понять суть алгоритма
Про устойчивые распределения (
— это просто его параметр, от которого зависит конечность моментов) можно прочитать, например, на Википедии (ссылка). Кратко говоря, это распределения, "инвариантные" к сложению случайных величин.
Насчет второго вопроса: говорится про распределение выборочных корреляций, а не про конкретные реализации:
Если есть стационарный набор с.в.
и мы рассмотрим
, то они сходятся к устойчивому распределению по распределению (тавтология, но, ладно), потому что есть какая-то теорема, в которой это доказывается (а именно, Davis and Mikosh теорема 3.5).
Чтобы более наглядно это представить, зафиксируйте, например, значение
и
, тогда получится такое
. Все
здесь случайные величины, а значит,
— тоже случайная величина. По такому же принципу строятся случайные величины
И вот оказывается, что эта последовательность случайных величин по распределению сходится к устойчивой случайной величине.
Об этом с практической точки зрения можно думать так: если Вы имеете "достаточно" большое
(и тут на арену выходит скорость сходимости), и имеете выборку данных (цен закрытия)
, например, то вы вычисляете (пусть опять же для
) величину
по формуле выше. Вы хотите сделать вывод о том, насколько большое (или маленькое) ваше значение
. Как вы это будете делать? Естественный ответ — посмотрите "где в распределении" лежит ваше
, но для этого нужно знать, из какого распределение ваше значение получено. Вот для этого и исследуют сходимости, потому что наш ответ — что распределение из которого получены
— просто некоторое устойчивое (и НЕ нормальное в общем случае).
Наконец, Вы говорите о том, что если есть неэффективность, то она может проявляться на некоторых выборочных значениях. Пока что я тут проблемы не вижу, и, более того, обычно так и есть, что неэффективность возникает, а потом исчезает через несколько секунд/минут/часов...
Спасибо за разделение интереса к тематике :) Под кластеризацией волатильности подразумевается следующее:
Имеется в виду сходимость по распределению, то есть распределение выборочных корреляций при
сходится к некоторому
-устойчивому распределению.
Чтобы объяснить фразу попонятнее, нужно, наверное, предложить конкретную стратегию, которая использует неэффективность рынка :)
. На самом деле тут Вы правы, обычно этот факт называют не самой гипотезой об эффективности рынка, а "support for the Efficient Market Hypothesis" (см., например, Cont 2000). Из данного "определения" вытекает стратегия, которая и использует эту корреляцию (она относится к классу стратегий статистического арбитража):
Насчет эффективности рынка, имелось в виду отсутствие автокорреляций
Для лучшего объяснения цитата Мандельброта: "arbitrage tends to whiten the spectrum of price changes".
Спасибо за вопрос! Я действительно не очень подробно описал, что за "классический" подход имеется в виду. Давайте разобьем его на две части:
Вычислить выборочную статистику: в нашем случае — выборочную автокорреляцию.
Используя "известное" распределение этой выборочной статистики построить, например, доверительный интервал (или протестировать гипотезу).
Так вот оказывается, что и в первом и втором пунктах есть трудности для распределений с тяжелыми хвостами. В первом пункте — просто вопрос существования, для тяжелохвостных распределений часто (в зависимости от
) не определены корреляция самих
и уж тем более их квадратов. Во втором пункте же используется то самое "известное" распределение, которое часто полагается нормальным, и используются квантили этого распределения для построения того же доверительного интервала. Однако в этой статье (надеюсь) показано, что распределение
уж очень вряд ли нормальное, и, более того, имеет бесконечную дисперсию, что сильно раздвигает границы доверительного интервала и вызывает трудности с проверкой гипотез и т.д.
Попробую поддержать и, возможно, развить ответ @Aquahawk. Устойчивая и эффективная оценка параметров крайне важна на практике. Например, предположим, Вы торгуете, используя некоторую стратегию, вычисляющую эффективность рынка на последних N временных промежутках. Тогда Вам будет важно дать "правильную" оценку эффективности (возможно, протестировать какую-то гипотезу, например, о равенстве корреляции 0) и, вычисляя просто соответсвующие корреляции, Вы можете получить некорректные результаты, что приведет к потерям. В данной части статьи, я постарался показать, что у классических подходов действительно есть проблемы при работе с тяжелохвостными данными, а в следующей части, следуя одной известной статье, я опишу альтернативный подход, который справляется с описанными трудностями.
Вряд ли "тупые школьники" делали бы допущения о которых пишут известные ученые в недавних исследованиях. Посмотрите, например, работу Р. Ибрагимова о новых подходах в оценке эффективности рынка и т.д. Статья опубликована в Journal of Financial Econometrics, который входит в первый квартиль журналов, индоссируемых Scopus. Введение статьи говорит ровно о том, что такие допущения делаются, и авторы даже предоставляют ссылки на сопутствующие работы. Поэтому вряд ли Ваше замечание о примитивности предположений уместно.
Говоря об определении доходностей, которым я пользуюсь в статье, могу сослаться на определение Рама Конта из его знаменитой статьи о стилизованных фактах. Как Вы могли догадаться — определение такое же, так что его использование вполне уместно. Более подробные пояснения на этот счет Вы можете найти там же.
Наконец, если Вы хотите выразить Ваше мнение, что всегда, безусловно, приветствуется, постарайтесь в будущем делать это в более корректной форме.
Здравствуйте! Стратегия в классическом виде неплохо описана тут: https://www.researchgate.net/publication/370888513_Simple_Moving_Average_SMA_Crossover_Strategy_with_Buy_Sell_Indicator
Если вкратце, то есть две версии стратегии: "trend following" и "reversed". Они абсолютно зеркальны. Если мы говорим о "trend following" стратегии, то обычно:
1) открывают шорт, когда короткая скользящая средняя пересекает длинную сверху вниз;
2) закрывают шорт и открывают лонг когда короткая скользящая средняя пересекает длинную снизу вверх;
3) закрывают лонг, соответсвенно, когда открывается шорт (когда короткая скользящая средняя пересекает длинную сверху вниз).
То есть момент закрытия одной позиции совпадает с открытием противоположной.
(Reversed стратегия меняет местами шорт и лонг.)
Так я и не утверждал ничего с помощью репозитория. Единственный посыл был в том, что "вот можно пытаться предсказывать всплески волатильности с помощью каких-то признаков"
Вы во многом правы) Технический анализ -- это действительно "предсказание" будущего на основе некоторых статистик из прошлого (в нашем случае -- скользящего среднего и отклонения). Весь технический анализ держится примерно на том, что рынок ведет себя "согласно некоторому паттерну", который и может описываться правилами технического анализа. И иногда это правда, поскольку, если углубиться в теорию случайных процессов, первое что Вы увидите -- это (скорее всего), что цена актива (P_t) не стационарный процесс, а значит не имеет свойства "отката" (mean-reverting property). Однако локально (на этом и держится тех анализ), возможно, это и имеет место быть...
Но, на моем опыте, техническому анализу очень мешают всплески волатильности (и резкие движения (скачки) цены), которые ведут к значительным потерям. По поводу предсказания всплесков волатильности можете посмотреть мой репозиторий с моделью)
https://github.com/AlexanderShulzhenko/Short-term-Volatility-Prediction
Красота торговых роботов в том, что они предоставляют безграничный простор для творчества, поэтому успех алгоритма зависит от Вас :)
Спасибо что упомянули talib, хотел написать об этой библиотеке в следующей части. Конечно, можно использовать talib для простоты, однако, я хотел показать именно техническую сторону вычисления индикаторов
Смотря, в чем измерять)
В целом, биржи используют очень похожие API, поэтому перепрофилировать код для работы с другой биржей не должно быть очень сложно :)
Да, это правда, это можно сделать с помощью функции Klines, описанной в первой части статьи, однако Binance (по крайней мере по моему опыту) крайне редко ломает свечи
В тексте указано, что для простоты функции дублированы, поскольку открыть шорт и закрыть лонг для рынка фьючерсов -- это одно и то же (на этот счет даже написан комментарий, возможно, в первой части статьи). В то же время обработка всех исключений и ошибок сделает код более объемным и трудным для понимания. Задача сделать код оптимальным по количеству символов также не стояла :) Зато, надеюсь, некоторые дублирования помогут читателю лучше понять суть алгоритма
Код от начала и до конца (и даже все комментарии) написаны мной лично
Да, Вы абсолютно правы, сейчас исправлю. Пытался упростить код, но допустил глупую ошибку :)
UPD: исправлено, спасибо за Ваше замечание!