Тимофей Мартынов
Тимофей Мартынов личный блог
13 ноября 2015, 15:54

разговоры о трейдинге №20. Неучтенные риски алготрейдинга

Вопрос алготрейдерам.

1. запрогали систему
2. протестировали — гуд
3. запустили

спустя какое-то время бабах — и убытки (или большие убытки)

Что вы забыли учесть на тестах?
66 Комментариев
  • SergeyJu
    13 ноября 2015, 15:59
    Есть простые ошибки и сложные.
    Простые: не учли проскальзывание и комиссии, ошиблись в программе, бэктестили слишком маленький участов.
    Сложные.
    Оверфиттинг.
    Есть вообще не ошибки в прямом смысле слова.
    Изменился рынок. И так тоже бывает. 
    • Vona
      13 ноября 2015, 16:01
      SergeyJu, с чего вдруг оверфиттинг — это сложная ошибка?
      Любой человек, который только пришёл на рынок, подгоняет робота под стохастик, видит 100% в месяц на истории и запускает на реальные торги.

      Сам проходил через это.
      • Sergey F
        13 ноября 2015, 16:03
        sivanov, а к чему сейчас пришли?
        • Vona
          13 ноября 2015, 16:52
          Тунеядец, стат. арбитраж, конечно же. Откуда иначе брать профит, кроме как не на арбитраже? :)
          • Sergey F
            13 ноября 2015, 17:52
            sivanov, д я без понятия, вот и спрашиваю…
            • backUp
              13 ноября 2015, 18:41
              Тунеядец, робот-то вроде вылез из просадки?
              • Sergey F
                13 ноября 2015, 23:35
                backUp, да, обратно его на рельсы поставил
            • Vona
              15 ноября 2015, 23:51
              Тунеядец, на рынке можно зарабатывать выше ставки рефинансирования лишь в случае неэффективностей.
      • SergeyJu
        13 ноября 2015, 16:14
        sivanov, не всегда овефиттинг очевиден. И я не знаю никаких реальных критериев для определения меры оверфиттинга в оптимизированном алгоритме. А практически  любой алгоритм, явно или неявно, содержит элемент оптимизации.  Может же быть не так печально, по бэктестингу должно быть 100% годовых, по факту — 30%. Куда снести недостачу?
        • Vona
          13 ноября 2015, 16:54
          SergeyJu, критерий — стабильность результатов оптимизации на других промежутках тестирования.
          • SergeyJu
            13 ноября 2015, 16:59
            sivanov, это нормальный, типичный, правильный совет. Но не критерий.
          • nbvehrfr
            13 ноября 2015, 17:11
            sivanov, неправильный критерий
            единственный критерий постоянство величины ошибки на тестовой и обучающей выборках
             
            • Vona
              13 ноября 2015, 17:24
              nbvehrfr, я сказал то же самое.
              • nbvehrfr
                13 ноября 2015, 17:26
                sivanov, sorry my bad
        • nbvehrfr
          13 ноября 2015, 17:10
          SergeyJu, разделите выборку на обучение и тестирование. на разнице в ошибке по двум поймете есть оверфит или нет.
          я бы еще разделил выборку на несколько групп (обучение + тестирование) для разных фаз рынка. 
          • SergeyJu
            13 ноября 2015, 17:25
            nbvehrfr, почему Вы думаете, что я не разделял?
            И разделял, и тестирование вперед и множество всяческих ухищрений применял.  
            Рынок нестационарен, собака. Поэтому то, что кажется кому-то критерием, на деле оказывается полезным приемом. Помогает отсечь явную чепуху, и даже неявную чепуху, но не гарантирует 100% качественный результат.
  • Hyp
    13 ноября 2015, 16:01
    Рынок меняется, любому прибыльному алгоритму рано или поздно приходит конец. Халява не вечна
  • vladdidaddi
    13 ноября 2015, 16:02
    Квадрат Черный начал лить?
  • Lazz
    13 ноября 2015, 16:06
    Загадка?

    Первое и самое просто. Изменилось состояние рынка. Система тупо перестала работать.

    Второе — гэпы и проскальзывания. Мы считали что всегда зайдем по OPEN а выйдем по CLOSE.

    Третье — Комиссии.

    Четвертое вытекает из первого, но чуть по другому. Когда попадаешь чувствуешь себя намного глупее чем в случае (1), хотя сама проблема сложнее.
    Проблема заключается в том что при оценки системы мы не делали корректировку оценки относительно BUY&HOLD.
    Т.е. на самом деле не было никакой системы.
    Было нечто что иногда давало сигнал на покупку. Но фишка в том что инструмент и так все время рос.

    • nbvehrfr
      13 ноября 2015, 17:12
      Lazz, влияние комиссий и проскальзывания зависит от времени удержания сделки
      • Ladimir Semenov
        14 ноября 2015, 18:21
        nbvehrfr, А чем дольше удерживается сделка тем больше на нее влияют параметры которые робот не анализирует, типа стат данных и других новостей.*

        *- Можно конечно сказать что стат данные уже ожидаются рынком, и отражены в торгах которые прошли, или даже что по графикам цены робот может делать какое-то подобие будущих стат данных, но утверждать что не бывает сюрпризов невозможно. 
  • Lika
    13 ноября 2015, 16:06
    Тестировать нужно на полном ордерлоге!, чтобы получить правдоподобные результаты и знать потолок ликвидности системы.  А все эти побаровые тесты совсем не точны.
     
    • Lika, Вы тут мне давеча писали в личку с вопросом по USD/RUB. Так это Вы со мной флиртовали? :-)
      • Lika
        13 ноября 2015, 16:15
        Вестников, тссссс!!! это я видео с Муханчиковым вчера смотрела старое — он говорил что нужно тестить на   ордерлоге в стоксшарпе— т.е истории стаканов и стелок.  Вот и решила понтануться знаниями))))))))  
        • Lika, ладушки. Удаляю свой вопрос. :-)
        • SergeyJu
          13 ноября 2015, 16:18
          Lika, ну, если в стокшарпе, то конечно. А если в С++ или Омеге, то уже не катит :)
          • Lika
            13 ноября 2015, 16:36
            SergeyJu,  СтокШарп  - это платформа, а не язык программирования.))
            • SergeyJu
              13 ноября 2015, 16:55
              Lika, а Омега — это платформа или полустанок? :)
  • nbvehrfr
    13 ноября 2015, 16:10
    кроссвалидация, разбивка выборка на периоды с целью проверки как система работает в разных фазах, форвард тестирование
    • SergeyJu
      13 ноября 2015, 16:16
      nbvehrfr, все это, конечно, верно, но, как ни предохраняйся, вероятность подцепить заразу все равно присутствует.
  • Viking
    13 ноября 2015, 16:14
    хреново протестировали
  • Tуземец
    13 ноября 2015, 16:19
    отключили интернет
  • П М
    13 ноября 2015, 16:22
    мой самый первый робот (не считая черновых поделок) вообще не знал что такое шаг цены, цена шага, проскальзывание, комиссия, закрытие сессии, планки, истечение фьючерсов и многое другое.
    по секрету скажу, он даже котировки брал с интернета по http, а не с реального квика. (но заявки были настоящими)
    но всё равно неплохо зарабатывал с января до конца марта 2014. а в 2015 пришлось много чему робота научить. как например можно было учесть, что в результате глюка на бирже перевернётся стакан? да никак пожалуй. вот я и потерял там 4%. правда удалось отбиться в тот же день. и каждую неделю в голову приходит что-то новое, что надо учесть. но это в основном когда у робота что-то неладится. когда всё хорошо, редко лезешь к нему. разве что из жадности и скуки. т.е. всего не учтёшь, а само «учитывание» — это постоянный итеративный процесс. опыт.  как говориться дело не в том, чтобы уметь или не уметь, а в том, чтобы наматывать портянки ©
  • Кан Делябр
    13 ноября 2015, 16:30
    ТестирУй, не тестирУй  - все равно получишь… сами знаете что.
    Многие алготрейдеры не четко понимают, что ядро торговой системы — это физматмодель рынка. Если идет слив — значит 
    модель  используется    некорректная, примитивная и неадекватная, с малым числом степеней свободы. Но самое важное —   в структуру правильных (адекватных)  моделей финрынка должны быть  включены (встроены!)  мощные адаптационные механизмы. 
    • SergeyJu
      13 ноября 2015, 16:57
      Кан Делябр, большое число степеней свободы — главный фактор риска по переподгонке. 
      А могучие адаптационные механизмы — способ сделать переподгонку вечно длящейся :) 
    • nbvehrfr
      13 ноября 2015, 17:17
      Кан Делябр, можно и без этих сложностей с адаптивной характеристикой
      никто не отменял ручную ПРАВИЛЬНУЮ подстройку модели под рынок

      многие не четко понимают что существующий софт полное Г который совсем не подходит под задачу а изначально заточен под оверфиттинг 
  • Том Сойер
    13 ноября 2015, 16:38
    Забыли учесть, что Московская биржа частенько лажает (поставляет неверные данные), а сделки почему-то не отменяет
  • Deleted
    13 ноября 2015, 16:44
    Длинный ответ придется книгу писать, короткий попробую сформулировать.

    Зависит от системы. Но для более-менее простых систем (не HFT, не паттерны в стакане) ответ может быть таким.

    1. Корректное тестирование системы не было проведено (разные периоды рынка, кроссвалидация, shuffling).
    2. Была неправильная оценка результатов оптимизации. Если например вы видите, что локальный максимум имеет «нехорошую» форму на графике зависимости распределения дохода от значений параметров, то это очень сильный сигнал к оверфиттингу. Что такое «нехорошая» форма? Это когда почти везде прибыль так себе или даже минус, а на каком-то узком диапазоне значений параметров прибыль очень высокая (в разы или порядки). У хорошей устойчивой системе доходности должны плавно расти и плавно падать в зависимости от параметров.
  • day0markets.ru
    13 ноября 2015, 17:00
    Много параметров — основная причина. Параметрами вы зажимаете модель рынка, которую система обратывает. Как только рынок начинает выходить за рамки модели, ограниченной параметрами — начинается слив. Система даже с 2мя параметрами скорее всего будет неустойчива (конечно, все зависит от конкертных параметров). Бектест не покажет реальной возможной просадки, потому что это история. Для адекватной оценки нужно собирать большое количество сделок (5000-20000 идеально), считать средние показатели средней прибыльной и убыточной и рассчитывать вероятность достижения определенной серии убыточных сделок. Да, это тоже неточно, но лучше чем голый бектест.  

    + возможны ошибки в самом бектесте:
    1. Неподготовленные данные. Тики или свечи с внебиржевыми сделками.
    2. Некорректный просчет исполнения ордеров. Пакетные решения этим часто грешат. Не учитываются особенности бирж и тд.
    3. Слипедж, непофиленный лимитник из-за очереди и тд.
    4. Медленная работа алгоритма или датафида.
    5. Косяк в реализации алгоритма.  
  • Здравствуй Коля
    13 ноября 2015, 17:00

    чёткая тема

    как сказал Тимофей Мартынов

    я лучше сказать не смогу, просто скопирую

    На самом деле система не портится. Просто пропадает неэффективность рынка на котором основана система. То есть, надо понимать при каких условиях система зарабатывает, а при каких образуется временная системная просадка. И если условия рынка были благоприятные, а система не заработала, значит что-то стало не так. А количество лосей подряд это вообще не важно. Оно просто обязано когда-то превысить то что было на истории, так как выборка критических периодов один-два и обчелся. Поэтому третий критический момент с большой вероятностью может быть страшнее чем первый и второй. Но это не значит что система испортилась — просто просадка оказалась чуть больше чем было на истории, но и прибыль, следующая за просадкой может быть рекордной. А вот когда система не зарабатывает при рыночных условиях когда должна была заработать — это ее крах, и надо задуматься о ее дисквалификации. Но для того чтобы снять систему, она не обязательно должна сливать, а вполне может быть приносящей прибыль, но вдруг появилась новая система, эксплуатирующая похожую неэффективность, но зарабатывающая больше и надежнее. Тогда просто можно произвести замену, а старую периодически проверять на истории — держать в запасе. Вообще, хорошие системы, эксплуатирующие глобальные (не временные) неэффективности рынков крайне редко выходят из строя — например, подавляющее большинство тех систем, от которых я отказывался, до сих пор зарабатывают на истории. Просто появлялись новые, более надежные.

    • Ну как бы
      13 ноября 2015, 17:37
      Здравствуй Коля, «как сказал Тимофей Мартынов» А я ещё чувствую: что-то не то… А потом понял, в чём подвох:)
      • Здравствуй Коля
        13 ноября 2015, 20:45

        Тимофей Мартынов, 

         

        у меня в блокноте записано

         

         

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

        нашел

        jc-trader.livejournal.com/1350643.html

         

         

        пс

        В трейдинге нет профессионалов как таковых или каких то там гуру. Трейдеров можно делить только на зарабатывающих и не зарабатывающих. За все эти годы, я убедился, что сильно подавляющее большинство не просто не зарабатывающие, а стабильно сливающие.Естественно, речь идет  не о  краткосрочном успехе, который делает из нас «одураченных случайностью», а  о продолжительном и стабильном положительном результате. 
  • Boo
    13 ноября 2015, 17:16
    Если предположить, что алготрейдер попался грамотный и всё реализовал правильно, то большие убытки можно получить лишь в двух ситуациях:
    1) Перенос позиции через сессию/клиринг на сильном движении. Единственный радикальный способ борьбы — закладывать в систему, что цена после открытия может упасть до нуля или улететь в бесконечность, и просчитывать риски таким образом, чтобы данная ситуация систему не убила.
    2) Форс-мажор, из-за которого алготрейдер потерял возможность управлять позициями. Сюда входят стоп-торги, потеря связи с торговыми серверами, различные глюки на бирже и т.п. Единственный радикальный способ борьбы — держать открытую позицию не более того объёма, полное обнуление которого не убивает систему.
    • nbvehrfr
      14 ноября 2015, 19:50
      Boo, овернайт риск ничем кроме ухода на интрадей не перекрыть. Технологический решается переходом на нормальные биржи а не торги в россйиской песочнице. Ваш совет снизит доходность и убьёт все желание использовать систему.
  • nbvehrfr
    13 ноября 2015, 17:20
     посоветую книжку для начала 
    Разработка, тестирование и оптимизация торговых систем

    для людей с мат подготовкой слабовато но для гуманитариев сойдет
  • rockybeat
    13 ноября 2015, 17:23
    Братишь забыли учесть что торгуют на Московской бирже, а тут бах и стакан кривой)))
  • nbvehrfr
    13 ноября 2015, 17:24
    мне другое интересно почему вопрос запостили как топик ?
    в прошлый раз меня за подобную хрень забанили  
  • Константин Нечаев
    13 ноября 2015, 17:28
    дродаун — переживет ли депозит)
    30 убыточных сделок подряд)
  • Если не было идеи системы, а была просто запрограммирована с помощью индикаторов, то прошлое на рынке не повторяется )))
    • neophyte
      13 ноября 2015, 17:49
      ЫЫ, точно. Пароль " Я от Балды" не проходит.
  • Ruslan_Loginov
    13 ноября 2015, 17:32
    мнение знатоков выслушали, а теперь правильный ответ…
  • Сергей Лубяга
    13 ноября 2015, 17:48
    Неопределённого и непредсказуемого будущего.
  • Vladimir
    13 ноября 2015, 18:16
    Нужно смотреть на конкретные причины.
    1. Может вола уменьшилась и бот не дотягивает до профита(если профит по количеству пунктов)
    2. При тестировании 90% сделок в плюс не означают, что не будет 100 подряд убыточных, затем будет 900 прибыльных, но депозит уже умрет. как вариант уменьшить позу и ждать те 900.
    и т.д. и т.п. 
  • silentbob
    13 ноября 2015, 19:00
    БОЛЬШИЕ убытки кроются как правило не в самой системе, а в обвязке. проскальзывания, заполнение, потеря ордеров в инфраструктуре осуществляющей транзакции, поганом канале связи или внезапно выключенном сервере наконец.

    Просто незапланированные убытки означают что в настоящий момент закономерность не работает. Такое ВСЕГДА случается у тех кто использует различные индикаторы, использует только одну систему или (как правило) не понимает что вообще найдено-закодено 
  • iMAG
    13 ноября 2015, 20:20
    Глава про алго пополнится разными понравившимися Тимофею чужими мыслями. Останется их пронумеровать:)
  • Антон Денисков (Fry)
    13 ноября 2015, 20:21
    Кроме всего прочего
    Обратную реакцию кукла! На истории есть куча явлений, которые повторяются и кажется, что это неэффективности, особенно на мелких ТФ. Такие «закономерности» являются приманками. Часто эти приманки рассчитаны на горе-трейдеров, которые тестировали на истории и верят в свой грааль «до последнего цента». Как только кто-то реально начинает входить в рынок на ту или иную «закономерность» — она испаряется. Прямо с первого входа! Прям сразу, как только ваш алгоритм набрал позицию против кукла, начинается «непруха». Закономерность исчезает. И появляется обратно как только вы прекратите совершать входы.
    «Закономерность» будет ждать следующую рыбку.
    Особенно это актуально для HFT и коротких трейдов с малыми стопами и тейками. Либо для больших трейдов с большим объёмом позиции.
    Алгоритм, который «не щупал» реальный рынок на реальный объём позиции — это всё равно что донжуан-девственник.

    Фактически реальная ёмкость торговой системы не может быть просчитана на истории никаким методом. Даже если вы учли, что в стакане был нужный вам объём, по нужным вам ценам. Это ничего не значит.
    Объём объёму рознь.
  • Антон Денисков (Fry)
    13 ноября 2015, 20:48
    Как вообще можно оценить на исторических данных, что было бы если бы вы тут или там на хулиард купили/продали?

    Например, что было бы, если бы кто-то взял дофигища путов на РТС перед «Крымнаш!»...
    Хотя постойте-ка… Именно так и было. =)
    Те сгоревшие 135-е путы все помнят?
    Покупатель наверняка знал про «Крым наш». Был точный инсайд. Взял на всю котлету на точный срок...
    Инсайд был верный, но деньги улетели куклу. Он любит жадных!
  • Антон Денисков (Fry)
    13 ноября 2015, 20:58
    Продолжая тему:
    smart-lab.ru/blog/269074.php
    Андрею Верникову отдельное спасибо за видео.

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

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