dr-mart

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

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

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

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

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

Сам проходил через это.
avatar
sivanov, а к чему сейчас пришли?
avatar
Тунеядец, стат. арбитраж, конечно же. Откуда иначе брать профит, кроме как не на арбитраже? :)
avatar
sivanov, д я без понятия, вот и спрашиваю…
avatar
Тунеядец, робот-то вроде вылез из просадки?
avatar
backUp, да, обратно его на рельсы поставил
avatar
Тунеядец, на рынке можно зарабатывать выше ставки рефинансирования лишь в случае неэффективностей.
avatar
sivanov, не всегда овефиттинг очевиден. И я не знаю никаких реальных критериев для определения меры оверфиттинга в оптимизированном алгоритме. А практически  любой алгоритм, явно или неявно, содержит элемент оптимизации.  Может же быть не так печально, по бэктестингу должно быть 100% годовых, по факту — 30%. Куда снести недостачу?
avatar
SergeyJu, критерий — стабильность результатов оптимизации на других промежутках тестирования.
avatar
sivanov, это нормальный, типичный, правильный совет. Но не критерий.
avatar
sivanov, неправильный критерий
единственный критерий постоянство величины ошибки на тестовой и обучающей выборках
 
avatar
nbvehrfr, я сказал то же самое.
avatar
sivanov, sorry my bad
avatar
SergeyJu, разделите выборку на обучение и тестирование. на разнице в ошибке по двум поймете есть оверфит или нет.
я бы еще разделил выборку на несколько групп (обучение + тестирование) для разных фаз рынка. 
avatar
nbvehrfr, почему Вы думаете, что я не разделял?
И разделял, и тестирование вперед и множество всяческих ухищрений применял.  
Рынок нестационарен, собака. Поэтому то, что кажется кому-то критерием, на деле оказывается полезным приемом. Помогает отсечь явную чепуху, и даже неявную чепуху, но не гарантирует 100% качественный результат.
avatar
Рынок меняется, любому прибыльному алгоритму рано или поздно приходит конец. Халява не вечна
avatar
Квадрат Черный начал лить?
avatar
Загадка?

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

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

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

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

avatar
Lazz, влияние комиссий и проскальзывания зависит от времени удержания сделки
avatar
nbvehrfr, А чем дольше удерживается сделка тем больше на нее влияют параметры которые робот не анализирует, типа стат данных и других новостей.*

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

многие не четко понимают что существующий софт полное Г который совсем не подходит под задачу а изначально заточен под оверфиттинг 
avatar
Забыли учесть, что Московская биржа частенько лажает (поставляет неверные данные), а сделки почему-то не отменяет
avatar
Длинный ответ придется книгу писать, короткий попробую сформулировать.

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

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

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

чёткая тема

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

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

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

Здравствуй Коля, «как сказал Тимофей Мартынов» А я ещё чувствую: что-то не то… А потом понял, в чём подвох:)
avatar
Здравствуй Коля, это откуда?

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

 

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

 

 

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

нашел

jc-trader.livejournal.com/1350643.html

 

 

пс

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

для людей с мат подготовкой слабовато но для гуманитариев сойдет
avatar
Братишь забыли учесть что торгуют на Московской бирже, а тут бах и стакан кривой)))
avatar
мне другое интересно почему вопрос запостили как топик ?
в прошлый раз меня за подобную хрень забанили  
avatar
дродаун — переживет ли депозит)
30 убыточных сделок подряд)
Если не было идеи системы, а была просто запрограммирована с помощью индикаторов, то прошлое на рынке не повторяется )))
ЫЫ, точно. Пароль " Я от Балды" не проходит.
мнение знатоков выслушали, а теперь правильный ответ…
avatar
Неопределённого и непредсказуемого будущего.
Нужно смотреть на конкретные причины.
1. Может вола уменьшилась и бот не дотягивает до профита(если профит по количеству пунктов)
2. При тестировании 90% сделок в плюс не означают, что не будет 100 подряд убыточных, затем будет 900 прибыльных, но депозит уже умрет. как вариант уменьшить позу и ждать те 900.
и т.д. и т.п. 
avatar
БОЛЬШИЕ убытки кроются как правило не в самой системе, а в обвязке. проскальзывания, заполнение, потеря ордеров в инфраструктуре осуществляющей транзакции, поганом канале связи или внезапно выключенном сервере наконец.

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

Фактически реальная ёмкость торговой системы не может быть просчитана на истории никаким методом. Даже если вы учли, что в стакане был нужный вам объём, по нужным вам ценам. Это ничего не значит.
Объём объёму рознь.
Как вообще можно оценить на исторических данных, что было бы если бы вы тут или там на хулиард купили/продали?

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

теги блога Тимофей Мартынов

....все тэги



UPDONW
Новый дизайн