VladMih
VladMih личный блог
28 сентября 2015, 09:53

Оптимизация/переоптимизация роботов: сколько должно быть параметров?

Робот без параметров

 Когда начал осваивать роботостроение в ТСЛаб и общаться с биржевиками ММВБ, наткнулся на откровение, что робот должен иметь как можно меньше оптимизируемых параметров: "желательно 1-2 параметра, а в идеале НИ ОДНОГО".

Блин, «ржунимагу». Ладно бы  это  сказал один человек, но ведь целый хор поёт эту «песнь о трейдинге»… Уже так надули в ухи, что я и сам начал сомневаться — может они правы, а я за 10 лет не смог ума набраться? Давайте попробуем разрулить этот вопрос — мне просто интересно, реально так думают все подряд или это мне так  везет на интересных людей?..

Для начала определимся с понятиями

  • Робот и ручная ТС (торговая система) — это синонимы (кроме «автоматизма»), и там, и там торговля «алгоритмическая», ибо система  это и есть алгоритм;
  • "Параметры" — переменные величины,  являющиеся частью ТС и влияющие на её результативность.

Ручной трейдинг

Открываю я график со своей ТС, что я вижу? Блин, да график я и вижу! Это потом уже начинаю разбираться что показывают мои индикаторы или где находятся различные элементы Price Action, а сначала вижу то, что называется «текущее состояние рынка». Вижу есть ли серьезные  движения, или может быть сильно зафлетило, или гепнуло пока спал… И всё это параметры, многие из которых мы отмечаем «на автомате», даже не задумываясь. Но они ЕСТЬ и их надо учитывать в трейдинге! Иначе наторгуешь… Т.е. по большому счету всё это (и это не один пункт) желательно добавить к понятияю «параметры». И они переменные, замечу скромно… Ну, вас же волнует при какй степени и продолжительности флета вы будете принимать сигналы? Значит только на этом уже 2 параметра  — текущая волатильность и количество баров!Кого-то возможно заинтересует еще и «профиль тренда» — опять же сколько баров и пунктов прошла цена от разворота. Ну и т.д. и т.п. 

ММВБ и Форекс

На форексе большинство считает, что хорошая ТС должна работать на любом инструменте, ибо все инструменты работают по одним РЫНОЧНЫМ законам, а не по законам одного инструмента. «Законы одного инструмента» — это нюансы использования на нём той же ТС, которая работает и на других инструментах. Разница лишь в том, например, что амплитуды движений разные и это не позволяет устанавливать везде одинаковые жесткие тейки и стопы. Но это жесткие, а если в процентах? Конечно, и на форексе мало кто обладает ТС, работающими везде и всегда. Но ТС, работающая на «группе инструментов» — это такая же привычная вещь, как поздороваться с соседом.

У биржевиков же столкнулся с тем, что в порядке вещей ТС под один инструмент! И один таймфрейм… Я сейчас не хочу спорить об этом, но замечу, уважаемые биржевики, что это также параметры! В количестве ДВУХ штук.

Считаю, что имеем уже не меньше двух параметров. Тогда что имеют ввиду те, кто делая робота под один инструмент/таймфрейм говорят о ТС без параметров? «Подогнали» под один инструмент и один таймфрейм, да еще и под один кусок рынка и… Они «не оптимизируют»… А исключение вечёрки? А отбрасывание первых баров для исключения гепов открытия? Это тоже не оптимизация?

Хорошо, а стоп и тейк «отрегулировать» надо? Это тоже два параметра, а то и четыре, ибо разные они могут быть для покупки и продажи. 

А если робот делает 2-3 типа входов (ордеров), то четыре надо умножить на количество типов входов… Это уже сколько параметров.

В общем, хоть я и мог бы еще продолжить, думаю, что вы уже поняли мою растерянность, ибо у меня и «без параметров» (я ж никакие индикаторы не вспоминал!) получается немало параметров. Поэтому прошу объяснить про что это — «система без параметров»? Желательно без понтов, по человечески. А еще лучше — приведите пример ТС с 1-2 параметрами (совсем без параметров просить не осмеливаюсь).

64 Комментария
  • ICEDONE
    28 сентября 2015, 10:04
    рынок переменчив и робот соответственно тоже. Есть инструменты которые более менее ходят вместе и робот может быть один. Есть фишки которые стреляют в связи с малой ликвидностью, есть которые долго и нудно растут и еще во времени они могут поменяться местами — стоп лоссы и тейки тоже меняются.
      • neophyte
        28 сентября 2015, 10:31
        VladMih, стопы и тейки тоже влияют на подгонку.
  • bstone
    28 сентября 2015, 10:05
    Да держи, не жалко. Совсем без параметров: покупаешь дешево, продаешь дорого.
  • Yuri Chebotarev
    28 сентября 2015, 10:05
    Ни сколько.
      • Yuri Chebotarev
        28 сентября 2015, 12:12
        VladMih, бросаете монету и ставите стоп.
  • Translator
    28 сентября 2015, 10:23
    Все зависит от торговой системы и параметров входа.
    Но оставлять вводимые параметры даже для себя, даже в самописанных советниках (роботах) стараюсь как можно меньше.
    В МТ4 сталкивался с тем, что вводимые параметры менялись или исчезали в процессе работы советника, что приводило к неприятным моментам. Такие ордера имели меджики, которые советник не отслеживал и которые зависали, пока я их не обнаруживал.
      • Translator
        28 сентября 2015, 11:53
        VladMih, Константы компилируются вместе с кодом.
        Входные параметры доступны для изменения из панели запуска советника.
        Вполне вероятно, могут быть доступны с серверной части при установке там соответствующих плагинов.
          • Translator
            28 сентября 2015, 12:09
            VladMih, В обоих метатрейдерах оптимизируются только входные, изменяемые параметры.
              • Translator
                28 сентября 2015, 12:42
                VladMih, Извините, но ваш вопрос из области схоластики.
                Я же исхожу из конкретики и собственного опыта.
  • Машковский Евгений
    28 сентября 2015, 10:31
    Стопы и тейки -типичная переподгонка.
  • Евгений Черных
    28 сентября 2015, 10:41
    1-2 Вполне нормально. Еще важно, что бы при изменении величины параметра на 1 доходность резко не возрастала и не падала, что может свидетельствовать о переподгонке.
  • SECRET
    28 сентября 2015, 10:54
    Параметров должно быть ровно столько сколько необходимо для оптимизации системы. Т.е в этом вопросе нужно четко разделить системы на адекватные и неадекватные. Неадекватные системы при любом количестве параметров будут убыточными. Для адекватных же все с точностью до наоборот. Ну а понятие адекватности системы придет с опытом.
  • Jkrsss
    28 сентября 2015, 10:59
    А как вам лемма о 3 среднеквадратичных отклонений. Простая система. Оптимизировать ну если только вы лемму превратите в теорему. Это я не скажу, ноу-хау.
      • Jkrsss
        28 сентября 2015, 12:43
        VladMih, Лемма как раз и определяет действие, а не только создание канала. Проблема в математике знаете или нет. А оптимизировать системы это как раньше решали дифференциально интегральные уравнение только численно. Пока не нашли правила решений.
        П.С. В идеале вы должны математически доказать игру камень, ножницы, бумага. Кто решит найдет систему не требующую оптимизации.
  • SAI
    28 сентября 2015, 11:14
    Под термином Минимальное кол-во параметров имеется ввиду независимость системы от пере-оптимизации. То-есть ваша ТС должна автоматически рассчитывать максимальное кол-во переменных, при этом всегда правильно, и лишь те которые она рассчитать не может вы можете задавать вручную, при этом ТС должна быть гибкой к изменению данных параметров, ибо вы их не можете менять в режиме онлайн.
  • А. Г.
    28 сентября 2015, 11:16
    Надо отличать параметры вычисляемые и оптимизируемые. Вычисляемые можем вообще не считать, а с оптимизированными вопрос не в количестве, а в целевых функциях. В общем случае, если целевые функции две: доходность и максимальная просадка, то и с одним оптимизируемым параметром можно нарваться на переоптимизацию.
      • А. Г.
        28 сентября 2015, 11:31
        VladMih,

        Если между периодом МА и волатильностью одна фиксированная функция, то нет оптимизируемых параметров. Но эта функция тоже может иметь и оптимизируемые параметры и сама быть таковой, если смотрим системы с разными функциями и отбираем лучшие.
          • А. Г.
            28 сентября 2015, 19:56
            VladMih,

            Я как бы подразумевал, что функция вычисления(!) «волатильности» не является оптимизируемым параметром. А если Вы и эту функцию подбираете, то это уже оптимизируемый параметр.
      • Artyom_KO
        28 сентября 2015, 12:07
        VladMih, все правильно Владимир. Обойтись совсем без параметром практически невозможно. Пример могу привести входим в 17:00 если вчера с 14:00 до 18:00 был рост. Держим позицию два часа. Т.е. все жестко определено и не оптимизируется (условия взял рандомным образом). С рассчитываемыми параметрами тоже сложность, как правило делая расчетные параметры в формулу расчета так или иначе все равно зашиваются некоторые оптимизируемые параметры которые потом фиксируется и принимаются как констаны, получается, что то вроде скрытых оптимизируемых параметров.
          • Artyom_KO
            28 сентября 2015, 12:50
            VladMih, но это и не плохо, как я сказал позже. Главное что бы отношение кол-ва сделок к количеству оптимизируемых параметром было как можно лучше. Если оптимизируемых параметром всего 2-а а сделок 10 за год то это гораздо хуже чем 10 оптимизируемых на 300 сделок за тот же год. 1/5 и 1/30.
            Рад вас видеть в рядах смартлабовцев. Мы с вами как то в ВК спорили))) ДУмаю с вашим опытом вы и как роботостроитель-алготрейдер состоитесь.
  • Андрей Чарыков
    28 сентября 2015, 11:32
    Купить первый попавшийся инструмент и держать его пока не надоест))) Здесь только случайность и никаких параметров.
  • stitrace
    28 сентября 2015, 11:41
    Система без параметров. Например имеем два численных значения (назовём их индикаторами). Фаза Луны, которая при помощи хитрых математических вычислений даёт нам цифру от -1 до 1, назовём его i1. И, к примеру, индекс смарт-лаба. Который принимает значения от -2 до 2, назовём его i2. Без параметров сигнал на покупку или продажу будет A=i1+i2 с условием что покупаем при A>1 и продаём при A<-1 (без стопов и тейков). Вот система без параметров. Если хотим оптимизировать, то можем попробовать ввести весовой кофиэциент к одному из индикаторов и погонять на тестах. Так появляется один параметр и/или менять правило продажи и покупки (1,-1) менять на (0.5,-0.5) к примеру, так вводим второй параметр и т.д. В идеале мы должны найти и то и другое, которое будет давать максимальный профит при любых раскладах, тогда эти переменные превратятся в константы и перестануть быть параметрами оптимизации и мы получим опять систему без параметров.
      • stitrace
        28 сентября 2015, 12:06
        VladMih, так это уже вопрос терминологии. Вы же проводите какие то вычисления, когда проектируете стратегию? Что эт оптимизация или создание стратегии? Короче это всё риторика, для меня параметры это отдельная сущность. Чаще всего оптимизируемые параметры в стратегии это какие то величины зависимость которых от текущего состояния рынка не ясна. Именно в этом я вижу смысл утверждения, что таких параметров дожно быть как можно меньше. Если параметр понятен и ясно отчего зависит его величина, то он становится динамически вычисляемым или константой, тоесть прекращает быть оптимизируемым.
          • Artyom_KO
            28 сентября 2015, 13:03
            VladMih, до нуля можно))) это не абсурд. Если есть такая система то почему нет? Есть у меня и такие.(не скажу что они такие уж сверх стабильные) Другое дело что большинство систем по своему определению подразумевают оптимизируемые параметры (к примеру как только подразумеваем индикаторы)… И это нормально. У меня так-же есть определенные критерии к примру к фильтрам. Если фильтр (а это как минимум 1н оптимизированный параметр а то и два) дают улучение соотношения прибыль/риск на x% а кол-во сделок уменьшется не более чем на y% то фильтр имеет место быть, если улучшение незначительно, т.е. менее x% то фильтр в топку. НО система должна работать и без фильтра. Как же не использовать два доп оптимизированных параметра если фильтр даст качественное улучшение и по прибыли и по просадке и сделок не так много «съест»… ТАк что это тонкая грань! К стати да! Важный момент в примитиве система как правило и содержит не более 3-х параметров т.е. её основная суть… и если в таком примитиве она работает, то только тогда уже дорабатываем…
    • Artyom_KO
      28 сентября 2015, 12:12
      VladMih, все определяется количеством степеней свободы. Я немного примитивно это считаю как отношение: кол-во сделок/количество параметров. Важно что бы сделок было много я беру отношение не менее чем 30/1 на истории в 2-а года истории (т.е. 40/1 еще лучше). Понятно что чем больше история тем больше сделок… Данные отношения я взял просто из опыта… т.е нет какого-либо научного обоснования, что отношение должно быть именно таким.
        • Artyom_KO
          28 сентября 2015, 12:55
          VladMih, это в идеале)))) Но если в нашем распоряжении было бы бесконечное кол-во сделок то такой параметр как кол-во оптимизируемых параметров нас бы не интересовал. Можно было бы и 40 и 50 параметров если они дают устойчивый результат на интервале в бесконечно большом кол-ве сделок.
  • axweye
    28 сентября 2015, 14:15
    Можно ли считать переоптимизацией и подгонкой следующий подход?:
    — В системе 5 оптимизируемых параметров
    — Параметры подбираются в ходе портфельного бэктестирования для 250 инструментов одновременно на 10-летней истории.
    • ves2010
      28 сентября 2015, 14:58
      bealtrader,
      вижу так...
      1 если для каждого из 250ти параметры индивидуально то подгонка… если для всех одинаковые то тоже подгонка ибо это обычная торговля пакета где вместо одной бумаги несколько...
      2 надо максимум 2 параметрпа полюбому т.к тогда можно графически видеть результат
      3 единственный вариант это делать отдельно проверку на переоптимизацию… т.е брать параметры не с потолка а дополнительно исследовать их на стабильность в зоне +-20%
  • ves2010
    28 сентября 2015, 14:53
    жаль я в отпуске… а тоб скинул ссыль на шикарную стаью по теме… вкрате смысл в том что каждый параметр оптимизации требует увеличение интервала тестирования вдвое… т.е на 1ом парамете нам надо собрать статистик4у по 10000 сделкам… на 4ех параметрах это уже требует статистики из 160 000 сделок…
    • axweye
      28 сентября 2015, 15:07
      ves2010,
      параметры подбирались общие для всех 250 инструментов.

      Статью было бы интересно посмотреть, если не затруднит — скинь плиз, когда будет возможность.
      • ves2010
        28 сентября 2015, 15:33
        bealtrader, тогда делай так… у тя 5 параметров… берешь тестирповщик комиссы=0… и делаешь тест по каждому параметру на интервале +-20% от выбранного значения… затем смотришь изменение доходности… доходность должна быть 100% положительная и не падать более чем в 2 раза от максимума
        • axweye
          28 сентября 2015, 16:52
          ves2010,
          спасибо, интересный подход, попробую потестить. Только почему комиссы=0?
          • ves2010
            28 сентября 2015, 18:31
            bealtrader, комиссы =0 и проскальзывания =0… иначе искажается результат оптимизации сильно… часто сразу видно что убыточные варианты гораздо стабильнее и интереснее профитных… ну а если ставить комиссы и проскальзывания такого уже не увидишь
  • ves2010
    28 сентября 2015, 15:01
    вариант бота без параметров оптимизации ваще — это пробй хая-лоя предыдущего дня
      • ves2010
        28 сентября 2015, 15:36
        VladMih, дык для пробоя хая-лоя предыдущего дня вход=выход… берешь тестировщик и тестишь на си, сбере и газпроме… шикарно работает во втором-третьем эшелоне
        • Teoretik
          28 сентября 2015, 16:20
          ves2010, в такой системе период, за который считате пробой, и есть параметр. В Вашем примере это 1 день.
          • ves2010
            28 сентября 2015, 18:34
            Teoretik, день это всегда день… а 2 дня это уже не то…
  • bocha
    04 октября 2015, 12:41
    Какое хорошее обсуждение получилось ))

    По мотивам вопроса Автора поста: мне кажется, любое категоричное суждение к вопросам системостроительства неприменимо.
    То есть для определенного класса систем без множества параметров не обойтись и они не зло сами по себе. Для другого класса систем — другое отношение и к количеству и к смысловой нагрузке параметров.
    Кстати, выбор рабочего таймфрейма — тоже параметр. В этом смысле VES2010 прав: день — это всегда день. А вот все остальное — это уже подбор.

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

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