neophyte
neophyte личный блог
28 сентября 2015, 12:26

Оптимизация торговых стратегий

Баян, но...
1. Секционирование (сегментирование) данных.

Оптимизация проводится на исторических данных.
Данные необходимо подготовить для тестирования. Для этого необходимо весь интервал данных разбить на сегменты (секции), сделав первый сегмент более крупным, чем остальные (см.рис.1).

Оптимизация торговых стратегий

Рис.1. Секционирование данных

Секционирование данных необходимо, чтобы уменьшить случайные погрешности тестирования систем, обусловленные случайной или полученной в результате оптимизации подгонкой параметров системы под параметры рынка.
Ситуация с подгонкой чаще всего возникает в результате «переоптимизации» торговой системы, когда в результате большого количества оптимизационных переменных возникает точная настройка торговой системы на тестируемый участок рынка. В результате мы получаем торговую систему, которая будет обеспечивать на данном участке диапазона исторических данных превосходные параметры, но только на этом. Рынок все время разный, в дальнейшем параметры движения котировок не будут в деталях соответствовать прошлым, соответственно другими будут и результаты.
Проблема подстройки стратегии под параметры рынка является одной из основных проблем при разработке торговых стратегий. Один из путей ее решения – это сведение к разумному минимуму количества параметров оптимизации. Лучше всего, если таких параметров будет 1-2, максимум 3. При большем количестве параметров у торговой системы возникает множество степеней свободы и наблюдая за расположением торговых сигналов на графике цен мы увидим чисто случайный порядок их размещения, несмотря на отличные результаты теста.
Секционирование данных как раз и позволяет прояснить для нас истинное положение вещей, а именно: является ли полученный результат следствием переоптимизации торговой системы на случайных параметрах графика котировок, или система действительно выявляет и использует глубинные закономерности динамики рынка.
В случае переоптимизации изменения параметров «оптимальных» систем от сегмента к сегменту данных могут быть очень существенными, без наблюдаемых закономерностей и трендов, характеризующих изменение параметров рынка. При отсутствии эффекта переоптимизации при переходе к тестированию на новых сегментах данных параметры торговой стратегии будут неизменными или будут меняться незначительно.

2. Этапы тестирования торговых систем с оптимизацией.

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

Типовая процедура оптимизации, как уже отмечалось выше, включает несколько этапов.

Этап.1. Первоначальная оптимизация – определение параметров МТС.

Первоначальная оптимизация проводится на основном или стартовом сегменте данных и её целью является поиск параметров торговой модели, способных увеличить эффективность МТС.
Оптимальные параметры модели для первого сегмента подыскивается путем простого подбора значений параметров модели, при которых параметры МТС оказываются наилучшими.
Первоначальная оптимизация производится исключительно в пределах стартового сегмента данных, который называется выборкой (sample) и используемый для поиска наилучших значений изменяемых параметров торговой модели. Данные более позднего времени, не подвергавшиеся анализу на этапе первоначальной оптимизации, именуются данными вне выборки (out-of-sample) и будут использованы для продолжения оптимизации на следующих этапах.
На этапе 1 определяются оптимальные значения параметров, обеспечивающие наилучшие характеристики МТС с точки зрения выбранных критериев оптимизации, однако результаты тестирования на выборке не дают объективной информации об эффективности торговой стратегии. Достоверные данные о параметрах полученной в результате тестирования МТС, характеризующие эффективность системы, могут быть определены только после проведения анализа данных вне выборки.

Этап 2. Проверка результатов.

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

Этап 3. Добавление данных.

Сегмент данных, использованный на этапе 2, добавляется к стартовому сегменту этапа 1, увеличивая тем самым количество данных в выборке, и мы опять переходим к этапу 1, но на изменившемся диапазоне исторических данных.

Этап 4. Циклическая оптимизация.

Действия этапов 1-3 многократно повторяются до тех пор, пока не будут использованы все данные, находившиеся вне выборки. Т.е. процесс оптимизации, описанный в п.1, проводится с использованием данных, вошедших после этапа 2 в выборку. Далее проверяем полученный параметр на следующем сегменте данных вне выборки и т.д. до тех пор, пока количество данных вне выборки не будет исчерпано.

Этап 5. Оценка результатов.

Результаты оцениваются по поведению стратегии на данных «вне выборки», т.е. на не на тех интервалах, где система оптимизировалась
Если анализируемые данные не случайны, а количество сегментов достаточно велико, то в ходе тестирования можно получить достойную доверия информацию о поведении и эффективности торговой системы в течение ряда лет. Полученные результаты покажут, насколько прибыльной и стабильной оказалась торговая система или системы, и дадут возможность из нескольких прошедших тестирование систем выбрать одну для наиболее успешной работы в реальном времени. Ваша торговая модель, таким образом, прошла объективную проверку, по результатам которой она может быть принята или отвергнута.
16 Комментариев
  • Translator
    28 сентября 2015, 12:49
    Это все теоретизирование и схоластика.
    На практике достаточно прогона на двухгодичной истории.
    Но любой советник обязательно должен остановиться при определенной просадке, и любая алгоритмическая стратегия должна допускать и даже предполагать «разруливание» ордеров в случае такой ситуации.
      • Translator
        28 сентября 2015, 13:08
        Николай Скриган, Это вы сами написали?
        Обязательно почитаю, когда время будет.
        Я пользуюсь этим сервисом возврата части спреда, загоняю «капающие» центы и доллары на центовые счета в «кухнях» и разгоняю их советниками с мартингейлом.
        Само собой, стараюсь, чтобы там все работало на автомате, хотя хотя бы раз в день поглядываю.
        Для себя допускаю, что возможен какой-либо природный или политический катаклизм, форс-мажор, который способен обнулить счет или загнать его в глубокую просадку.
        Отсюда и те требования к советникам, которые я изложил выше.
        Между прочим, «разруливание» тоже выполняется советником и тоже вполне себе доходно.
          • VladMih
            28 сентября 2015, 13:30
            Николай Скриган, без обид… Надеюсь, что это не вы сами придумали, а скопипастили, ибо ИМХО это ЗАУМЬ.
            Кому нужен надуманный «основной/стартовый» сегмент? Чем хуже тупо (без лишней наукообразности) подобрать основные параметры на ВСЕЙ доступной длинне данных?

            Ну, если уж цель сделать робота, работающего везде и всегда без поднастройки…
              • VladMih
                28 сентября 2015, 13:59
                Николай Скриган, я написал только о надуманности стартового фрагмента, ибо уверен, что ВСЯ доступная история для первичного набора параметров как минимум не хуже ЛЮБОГО ЕЁ КУСКА.
                Больше я ни о чём не писал.
                  • VladMih
                    28 сентября 2015, 20:59
                    Николай Скриган, вы упрямо не хотите меня услышать.
  • ves2010
    28 сентября 2015, 15:21
    тема гуд… но надо делать все наоборот… палю граль… оптимизируем на последних данных т.к они максимально актуальны и важны… затем проверяем на ранних данных… например оптимизирую на интервале 2010-15гг а проверяю на интервале 2000-2010 — смотрию просадку боковики +кризис 2008г
    • VladMih
      28 сентября 2015, 16:30
      ves2010, вот, кстати, здравая мысль! Последние данные более актуальны.
      Но если после этого возвращаться на 100 лет назад, то сила этой мысли сильно теряется.
  • Дмитрий Д.
    28 сентября 2015, 15:52
    Хорош докапываться. подобный способ экономит машинное время и дает достаточно надежный результат. Если брать весь временной период сразу, то может не хватить мощности машины или тесты займут очень долгое время.
    • VladMih
      28 сентября 2015, 16:33
      Дмитрий Д., для «хорош докапываться» писать не надо было!

      Внимательней читайте что вам пишут. Я, например, четко сказал о том, что о долгом периоде речь идет только для подбора базовых параметров. Например, подбор рабочего мувинга, который на всей истории лучше других очерчивает важные для вас тренды и его перегибы. Любой смартфон сделает это на раз.
      Уже после этого начинаем добавлять уточняющие параметры и оптимизировать его как вам угодно — хоть задом наперед! Но базовые при этом уже не трогаем! Это параметр уже становится НЕОПТИМИЗИРУЕМЫМ.
      Мувинг — чисто для примера и для простоты.

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

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