Sergey Pavlov
Sergey Pavlov личный блог
23 ноября 2016, 08:03

То ли робот, то ли нет

Не то, чтобы дарю грааль.
На рынке всё хорошо.
Поэтому немного исследований почти сферического коня почти в вакууме.

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

Исходные данные — обычные часовые бары по акциям Сбербанка, для которых строится средняя цена.

Подход:
1. Рассматриваем группы часовых баров по 9 штук, отражающих скользящий день. 
2. Предполагаем, что группы баров, кончающихся в одни и те же часы, в среднем должны быть похожи.
3. Выбираем глубину предыстории (2-3-4 месяца), в которой будем находить похожие вектора.
4. Для данного текущего вектора находим в прошлом похожие вектора (скажем 10-15 штук), для которых мы знаем, каким был следующий часовой бар. По ним делаем оценку (можно среднее, можно авторегрессию, можно всё, что угодно) следующего бара для нашего текущего.
5. Принимаем решение о входе (не-входе) в ту или иную позицию на один час.

Получаются следующие торговые результаты за 7 лет:
То ли робот, то ли нет






























Абсцисса это доход в процентах. Ордината это порядковый номер часа. Эквити почасовые:
зеленая — лонги,
красная — шорты,
черная — лонги+шорты.

Расчеты сделаны исходя из идеальных условий:
1. Входим по open следующего бара без проскальзывания по рынку.
2. Выходим по close следующего бара без проскальзывания по рынку.

Общая средняя сделка равна 0.046%.
По лонгам средняя сделка равна 0.053%.
По шортам средняя сделка равна 0.039%.
Лонги заняли 46% баров.
Шорты заняли 51% баров.

В приведенных результатах показан оптимальный случай исходя из перебора глубины, в которой ищем похожие вектора (от 1 до 6 месяцев), а также количество ближайших векторов к текущему (от 1 до 50). В худших случаях результаты примерно в два раза хуже приведенных.
55 Комментариев
  • Александр Муравьев
    23 ноября 2016, 08:05
    Средняя сделка не маловата ли?
  • baron_samedi
    23 ноября 2016, 08:17
    тоже тут копал…
  • Дар Ветер
    23 ноября 2016, 08:20
    интересная идея, хотя как любой датамайнинг предсказательной силы не имеет. а как формализуется «похожесть» векторов? последовательность вверх-вниз-… и тд? 
    • Антон Ш
      23 ноября 2016, 09:35
      Дар Ветер, 
      любой датамайнинг предсказательной силы не имеет

      А что имеет?
    • Vitty
      23 ноября 2016, 10:12
      Дар Ветер, ну это смотря какой датамайнинг
  • бар о метр
    23 ноября 2016, 08:37
    ух ты, лет 6 назад на альпари было то же самое почти, автор пару недель выеживался, потом на майбаксе счет зарегил, аж 3 штуки зелени пиханул, счет целых полтора месяца жил потом и автор и счет покинули и майбекс и альпари
  • ves2010
    23 ноября 2016, 09:09
    очень мелкая средняя… комссы вход-выход =0.03%
    не ипи мозги… делай так… свеча растущая покупаешь… свеча падающая продаешь… средняя будет в районе 0.1%-0.18% эквити суперская в сбере… и это… в первые 5 минут дня не торгуешь… потом на си протесть… потом выбери яхту или остров… а потом протесть на луке
    • Антон Ш
      23 ноября 2016, 09:36
      ves2010, а есть, что нибудь, со средней сделкой 0,3? :)
      • ves2010
        23 ноября 2016, 09:44
        Антон Ш, есть и тоже очень просто… 0.1% для фьюча достаточно
    • Vitty
      23 ноября 2016, 10:13
      ves2010, свеча на каком таймфрейме? выход по какому критерию? вот так в лоб посчитал на пятиминутках, не выходит плюса.
        • Vitty
          23 ноября 2016, 10:18
          Sergey Pavlov, ну то что он трендовый — это понятно.
        • SergeyJu
          23 ноября 2016, 11:50
          Sergey Pavlov, ясно, что перебор по окну на истории — голимая подгонка. А если взять издалеча, годика с 2007 и пустить лукфорвард, что получится?
            • SergeyJu
              23 ноября 2016, 12:52
              Sergey Pavlov, если прогноз в любой точке делать по всей ранее накопленной выборке, что получается?
               
                • SergeyJu
                  23 ноября 2016, 13:07
                  Sergey Pavlov, трудно судить по графику, но как будто лучше?
                  Вся проблема, если я правильно понимаю, в правильной кластеризации накопленных 9-часовок?
      • ves2010
        23 ноября 2016, 11:34
        Vitty, я все написал верно… бот реверсивный… зеленая свеча покупаешь красная продаешь… вечорку не торгуешь
        таймфрейм  оптимизируешь
    • Антон Ш
      23 ноября 2016, 12:16
      ves2010, Это же старая система Мартынова! Верно?
      • ves2010
        23 ноября 2016, 12:30
        Антон Ш, незнаю… но боян это древний
  • ЛеПа
    23 ноября 2016, 13:02
    так где ссылка на скачивание грааля? Вы ж дарите? забираю)))

  • ch5oh
    23 ноября 2016, 13:10

    > "в правильной кластеризации накопленных 9-часовок?"

    Кстати это самый интересный вопрос как определена функция похожести...
    Мы ведь не найдем в истории полностью идентичные паттерны с одинаковыми ценами или размерами свечек...

      • SergeyJu
        23 ноября 2016, 13:29
        Sergey Pavlov, предположим, есть некая мера расстояния между 9-элементными векторами. 
        Возможны 2 подхода.
        1. Как Вы описали, рассматривать окрестность нового вектора. 
        2. Разделить предыдущие вектора на кластеры и определять, в какой кластер попадает новый вектор. Мне второй вариант представляется более устойчивым. 
          • SergeyJu
            23 ноября 2016, 14:12
            Sergey Pavlov, фильтр добавить?
          • ch5oh
            23 ноября 2016, 16:01
            Sergey Pavlov, Эту задачку (пока) мне решить не удалось:)

            А если перейти на нижний таймфрейм?
            Будет по идее больше статистика и следовательно более достоверные входы.

        • Marco
          23 ноября 2016, 13:36
          SergeyJu, IMHO ярко выраженных кластеров не будет. Проще для каждого нового вектора находить множество векторов на истории, попадающих в окрестность заданного радиуса, затем смотреть матожидание и стандартное отклонение приращений цен, в течение n периодов после этих векторов. Если будет значимый сдвиг матожидания в какую-либо сторону — входить в позицию.
            • Marco
              23 ноября 2016, 13:58
              Sergey Pavlov, занятно, что есть сгустки. Спасибо. :)
            • SergeyJu
              23 ноября 2016, 14:41
              Sergey Pavlov, при расчете расстояния Вы предварительно 9-мерные вектора приводили к 0 среднему и 1 дисперсии?
                • SergeyJu
                  23 ноября 2016, 16:18
                  Sergey Pavlov, могу представить себе, что Вы брали не значения цены, а % приращения цены за час. Но тогда или временной интервал 10 часов, или вектор восьмимерный.  
                    • SergeyJu
                      23 ноября 2016, 17:52
                      Sergey Pavlov, один из баров всегда — перенос через ночь?

                        • SergeyJu
                          23 ноября 2016, 18:47
                          Sergey Pavlov, значит, один компонент систематически имеет бОльшую дисперсию, чем другие. И его вклад в расстояние между векторами будет часто превалирующим.
                            • SergeyJu
                              24 ноября 2016, 10:13
                              Sergey Pavlov, а если загрубить, проквантовать гэп и даже в предельном варианте оставить от гэпа только знак, и получить два множества 8-мерных векторов?
                                • SergeyJu
                                  24 ноября 2016, 10:24
                                  Sergey Pavlov, а я как раз практикую квантование, чаще всего — бинарное. Например, цена выше/ниже скользяшки — 1/0. Ну и так далее.
                                    • SergeyJu
                                      24 ноября 2016, 10:44
                                      Sergey Pavlov, проклятие размерности.
                                      Предположим, я хочу пространство параметров разделить на два кластера — лонг, шорт. То есть решающее правило у меня бинарное, а вот само разбиение может иметь сколь угодно большую сложность. Если поверить тому, что более-менее «хороший» разделитель в N мерном пространстве сколь угодно точно аппроксимируется линейным в 2*N мерном пространстве, то  для 9-мерных векторов, как в Вашем примере, потребуется 2*9+1=19 параметров для классификатора.
                                      Убиться и не жить! 
                                        • SergeyJu
                                          24 ноября 2016, 11:18
                                          Sergey Pavlov, есть очень простой подход. Предположим, у меня есть расстояние. Возьмем любую «шапочку», которая равна 1 при нулевом  расстоянии, имеет 0 производную в нуле и быстро монотонно падает при росте расстояния. 
                                          Для каждого вектора можно рассчитать взвешенную «по шапочке» сумму финансовых результатов остальных векторов. 
                                          Таким образом получается набор предикторов, который можно сопоставить с финансовым результатом для каждого вектора.
                                          Я полагаю, что с вычислительной точки зрения подход весьма эффективный и к тому же легко иттеририруется. А сопоставление вектора результатов с вектором предикторов (например, чтобы построить пороговые решающие правила для лонга и для шорта), становятся тривиальной задачей.
                                          • SergeyJu
                                            24 ноября 2016, 11:24
                                            SergeyJu, вычислительная сложность схемы пропорциональна квадрату числа векторов. Всего-то.
          • SergeyJu
            23 ноября 2016, 13:52
            Marco, я догадывался, что нарисовать окружность проще, чем провести кластеризацию   :)

      • ch5oh
        23 ноября 2016, 13:45
        Sergey Pavlov, =) вот Вы какую метрику использовали при построении этой эквити в топике?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн