Есть простые ошибки и сложные.
Простые: не учли проскальзывание и комиссии, ошиблись в программе, бэктестили слишком маленький участов.
Сложные.
Оверфиттинг.
Есть вообще не ошибки в прямом смысле слова.
Изменился рынок. И так тоже бывает.
SergeyJu, с чего вдруг оверфиттинг — это сложная ошибка?
Любой человек, который только пришёл на рынок, подгоняет робота под стохастик, видит 100% в месяц на истории и запускает на реальные торги.
sivanov, не всегда овефиттинг очевиден. И я не знаю никаких реальных критериев для определения меры оверфиттинга в оптимизированном алгоритме. А практически любой алгоритм, явно или неявно, содержит элемент оптимизации. Может же быть не так печально, по бэктестингу должно быть 100% годовых, по факту — 30%. Куда снести недостачу?
SergeyJu, разделите выборку на обучение и тестирование. на разнице в ошибке по двум поймете есть оверфит или нет.
я бы еще разделил выборку на несколько групп (обучение + тестирование) для разных фаз рынка.
nbvehrfr, почему Вы думаете, что я не разделял?
И разделял, и тестирование вперед и множество всяческих ухищрений применял.
Рынок нестационарен, собака. Поэтому то, что кажется кому-то критерием, на деле оказывается полезным приемом. Помогает отсечь явную чепуху, и даже неявную чепуху, но не гарантирует 100% качественный результат.
Первое и самое просто. Изменилось состояние рынка. Система тупо перестала работать.
Второе — гэпы и проскальзывания. Мы считали что всегда зайдем по OPEN а выйдем по CLOSE.
Третье — Комиссии.
Четвертое вытекает из первого, но чуть по другому. Когда попадаешь чувствуешь себя намного глупее чем в случае (1), хотя сама проблема сложнее.
Проблема заключается в том что при оценки системы мы не делали корректировку оценки относительно BUY&HOLD.
Т.е. на самом деле не было никакой системы.
Было нечто что иногда давало сигнал на покупку. Но фишка в том что инструмент и так все время рос.
nbvehrfr, А чем дольше удерживается сделка тем больше на нее влияют параметры которые робот не анализирует, типа стат данных и других новостей.*
*- Можно конечно сказать что стат данные уже ожидаются рынком, и отражены в торгах которые прошли, или даже что по графикам цены робот может делать какое-то подобие будущих стат данных, но утверждать что не бывает сюрпризов невозможно.
Тестировать нужно на полном ордерлоге!, чтобы получить правдоподобные результаты и знать потолок ликвидности системы. А все эти побаровые тесты совсем не точны.
Вестников, тссссс!!! это я видео с Муханчиковым вчера смотрела старое — он говорил что нужно тестить на ордерлоге в стоксшарпе— т.е истории стаканов и стелок. Вот и решила понтануться знаниями))))))))
ТестирУй, не тестирУй - все равно получишь… сами знаете что.
Многие алготрейдеры не четко понимают, что ядро торговой системы — это физматмодель рынка. Если идет слив — значит
модель используется некорректная, примитивная и неадекватная, с малым числом степеней свободы. Но самое важное — в структуру правильных (адекватных) моделей финрынка должны быть включены (встроены!) мощные адаптационные механизмы.
Кан Делябр, большое число степеней свободы — главный фактор риска по переподгонке.
А могучие адаптационные механизмы — способ сделать переподгонку вечно длящейся :)
Длинный ответ придется книгу писать, короткий попробую сформулировать.
Зависит от системы. Но для более-менее простых систем (не HFT, не паттерны в стакане) ответ может быть таким.
1. Корректное тестирование системы не было проведено (разные периоды рынка, кроссвалидация, shuffling).
2. Была неправильная оценка результатов оптимизации. Если например вы видите, что локальный максимум имеет «нехорошую» форму на графике зависимости распределения дохода от значений параметров, то это очень сильный сигнал к оверфиттингу. Что такое «нехорошая» форма? Это когда почти везде прибыль так себе или даже минус, а на каком-то узком диапазоне значений параметров прибыль очень высокая (в разы или порядки). У хорошей устойчивой системе доходности должны плавно расти и плавно падать в зависимости от параметров.
Много параметров — основная причина. Параметрами вы зажимаете модель рынка, которую система обратывает. Как только рынок начинает выходить за рамки модели, ограниченной параметрами — начинается слив. Система даже с 2мя параметрами скорее всего будет неустойчива (конечно, все зависит от конкертных параметров). Бектест не покажет реальной возможной просадки, потому что это история. Для адекватной оценки нужно собирать большое количество сделок (5000-20000 идеально), считать средние показатели средней прибыльной и убыточной и рассчитывать вероятность достижения определенной серии убыточных сделок. Да, это тоже неточно, но лучше чем голый бектест.
+ возможны ошибки в самом бектесте:
1. Неподготовленные данные. Тики или свечи с внебиржевыми сделками.
2. Некорректный просчет исполнения ордеров. Пакетные решения этим часто грешат. Не учитываются особенности бирж и тд.
3. Слипедж, непофиленный лимитник из-за очереди и тд.
4. Медленная работа алгоритма или датафида.
5. Косяк в реализации алгоритма.
На самом деле система не портится. Просто пропадает неэффективность рынка на котором основана система. То есть, надо понимать при каких условиях система зарабатывает, а при каких образуется временная системная просадка. И если условия рынка были благоприятные, а система не заработала, значит что-то стало не так. А количество лосей подряд это вообще не важно. Оно просто обязано когда-то превысить то что было на истории, так как выборка критических периодов один-два и обчелся. Поэтому третий критический момент с большой вероятностью может быть страшнее чем первый и второй. Но это не значит что система испортилась — просто просадка оказалась чуть больше чем было на истории, но и прибыль, следующая за просадкой может быть рекордной. А вот когда система не зарабатывает при рыночных условиях когда должна была заработать — это ее крах, и надо задуматься о ее дисквалификации. Но для того чтобы снять систему, она не обязательно должна сливать, а вполне может быть приносящей прибыль, но вдруг появилась новая система, эксплуатирующая похожую неэффективность, но зарабатывающая больше и надежнее. Тогда просто можно произвести замену, а старую периодически проверять на истории — держать в запасе. Вообще, хорошие системы, эксплуатирующие глобальные (не временные) неэффективности рынков крайне редко выходят из строя — например, подавляющее большинство тех систем, от которых я отказывался, до сих пор зарабатывают на истории. Просто появлялись новые, более надежные.
В трейдинге нет профессионалов как таковых или каких то там гуру. Трейдеров можно делить только на зарабатывающих и не зарабатывающих. За все эти годы, я убедился, что сильно подавляющее большинство не просто не зарабатывающие, а стабильно сливающие.Естественно, речь идет не о краткосрочном успехе, который делает из нас «одураченных случайностью», а о продолжительном и стабильном положительном результате.
Если предположить, что алготрейдер попался грамотный и всё реализовал правильно, то большие убытки можно получить лишь в двух ситуациях:
1) Перенос позиции через сессию/клиринг на сильном движении. Единственный радикальный способ борьбы — закладывать в систему, что цена после открытия может упасть до нуля или улететь в бесконечность, и просчитывать риски таким образом, чтобы данная ситуация систему не убила.
2) Форс-мажор, из-за которого алготрейдер потерял возможность управлять позициями. Сюда входят стоп-торги, потеря связи с торговыми серверами, различные глюки на бирже и т.п. Единственный радикальный способ борьбы — держать открытую позицию не более того объёма, полное обнуление которого не убивает систему.
Boo, овернайт риск ничем кроме ухода на интрадей не перекрыть. Технологический решается переходом на нормальные биржи а не торги в россйиской песочнице. Ваш совет снизит доходность и убьёт все желание использовать систему.
Нужно смотреть на конкретные причины.
1. Может вола уменьшилась и бот не дотягивает до профита(если профит по количеству пунктов)
2. При тестировании 90% сделок в плюс не означают, что не будет 100 подряд убыточных, затем будет 900 прибыльных, но депозит уже умрет. как вариант уменьшить позу и ждать те 900.
и т.д. и т.п.
БОЛЬШИЕ убытки кроются как правило не в самой системе, а в обвязке. проскальзывания, заполнение, потеря ордеров в инфраструктуре осуществляющей транзакции, поганом канале связи или внезапно выключенном сервере наконец.
Просто незапланированные убытки означают что в настоящий момент закономерность не работает. Такое ВСЕГДА случается у тех кто использует различные индикаторы, использует только одну систему или (как правило) не понимает что вообще найдено-закодено
Кроме всего прочего
Обратную реакцию кукла! На истории есть куча явлений, которые повторяются и кажется, что это неэффективности, особенно на мелких ТФ. Такие «закономерности» являются приманками. Часто эти приманки рассчитаны на горе-трейдеров, которые тестировали на истории и верят в свой грааль «до последнего цента». Как только кто-то реально начинает входить в рынок на ту или иную «закономерность» — она испаряется. Прямо с первого входа! Прям сразу, как только ваш алгоритм набрал позицию против кукла, начинается «непруха». Закономерность исчезает. И появляется обратно как только вы прекратите совершать входы.
«Закономерность» будет ждать следующую рыбку.
Особенно это актуально для HFT и коротких трейдов с малыми стопами и тейками. Либо для больших трейдов с большим объёмом позиции.
Алгоритм, который «не щупал» реальный рынок на реальный объём позиции — это всё равно что донжуан-девственник.
Фактически реальная ёмкость торговой системы не может быть просчитана на истории никаким методом. Даже если вы учли, что в стакане был нужный вам объём, по нужным вам ценам. Это ничего не значит.
Объём объёму рознь.
Как вообще можно оценить на исторических данных, что было бы если бы вы тут или там на хулиард купили/продали?
Например, что было бы, если бы кто-то взял дофигища путов на РТС перед «Крымнаш!»...
Хотя постойте-ка… Именно так и было. =)
Те сгоревшие 135-е путы все помнят?
Покупатель наверняка знал про «Крым наш». Был точный инсайд. Взял на всю котлету на точный срок...
Инсайд был верный, но деньги улетели куклу. Он любит жадных!
Очередная смешная чушь от Протопопова с кивятиной про 11 875 млн. и 2 969 млн. до 31 мая 2025 г., когда в ЦБ зарезервировано за 30 ярдов и под 70 ярдов продаваемого имущества, не считая акций в валюте...
Kk_Vd, все, понятно, вы в лонге) Потому что ОВК смог и Сегежа тоже сможет! Не важно как и почему, царь даже поручился ведь.
Сегеже с самого начала должны были субсидировать перевозки в Китай, это ло...
Иван Петров, можно больше удобрений производить, можно перевести электростанции на дальнем востоке с мазута на газ и много других возможностей с пользой для страны использовать излишки. а если уж к...
Тут явно у кого-то есть интерес не просто продать, а именно продать пониже, унести цену максимально низко. Иначе какой смысл в пятницу после 22:00 приходить и спецом цену вдавливать? И такие трюки уже...
Хаи от 8 апреля 2024 года пока что не были преодолены толком. Лишь слегка пока что. С поправкой на дивы, может, и ничего. А с поправкой на инфляцию — так себе. Каждый сам решает.
Простые: не учли проскальзывание и комиссии, ошиблись в программе, бэктестили слишком маленький участов.
Сложные.
Оверфиттинг.
Есть вообще не ошибки в прямом смысле слова.
Изменился рынок. И так тоже бывает.
Любой человек, который только пришёл на рынок, подгоняет робота под стохастик, видит 100% в месяц на истории и запускает на реальные торги.
Сам проходил через это.
единственный критерий постоянство величины ошибки на тестовой и обучающей выборках
я бы еще разделил выборку на несколько групп (обучение + тестирование) для разных фаз рынка.
И разделял, и тестирование вперед и множество всяческих ухищрений применял.
Рынок нестационарен, собака. Поэтому то, что кажется кому-то критерием, на деле оказывается полезным приемом. Помогает отсечь явную чепуху, и даже неявную чепуху, но не гарантирует 100% качественный результат.
Первое и самое просто. Изменилось состояние рынка. Система тупо перестала работать.
Второе — гэпы и проскальзывания. Мы считали что всегда зайдем по OPEN а выйдем по CLOSE.
Третье — Комиссии.
Четвертое вытекает из первого, но чуть по другому. Когда попадаешь чувствуешь себя намного глупее чем в случае (1), хотя сама проблема сложнее.
Проблема заключается в том что при оценки системы мы не делали корректировку оценки относительно BUY&HOLD.
Т.е. на самом деле не было никакой системы.
Было нечто что иногда давало сигнал на покупку. Но фишка в том что инструмент и так все время рос.
*- Можно конечно сказать что стат данные уже ожидаются рынком, и отражены в торгах которые прошли, или даже что по графикам цены робот может делать какое-то подобие будущих стат данных, но утверждать что не бывает сюрпризов невозможно.
по секрету скажу, он даже котировки брал с интернета по http, а не с реального квика. (но заявки были настоящими)
но всё равно неплохо зарабатывал с января до конца марта 2014. а в 2015 пришлось много чему робота научить. как например можно было учесть, что в результате глюка на бирже перевернётся стакан? да никак пожалуй. вот я и потерял там 4%. правда удалось отбиться в тот же день. и каждую неделю в голову приходит что-то новое, что надо учесть. но это в основном когда у робота что-то неладится. когда всё хорошо, редко лезешь к нему. разве что из жадности и скуки. т.е. всего не учтёшь, а само «учитывание» — это постоянный итеративный процесс. опыт. как говориться дело не в том, чтобы уметь или не уметь, а в том, чтобы наматывать портянки ©
Многие алготрейдеры не четко понимают, что ядро торговой системы — это физматмодель рынка. Если идет слив — значит
модель используется некорректная, примитивная и неадекватная, с малым числом степеней свободы. Но самое важное — в структуру правильных (адекватных) моделей финрынка должны быть включены (встроены!) мощные адаптационные механизмы.
А могучие адаптационные механизмы — способ сделать переподгонку вечно длящейся :)
никто не отменял ручную ПРАВИЛЬНУЮ подстройку модели под рынок
многие не четко понимают что существующий софт полное Г который совсем не подходит под задачу а изначально заточен под оверфиттинг
Зависит от системы. Но для более-менее простых систем (не HFT, не паттерны в стакане) ответ может быть таким.
1. Корректное тестирование системы не было проведено (разные периоды рынка, кроссвалидация, shuffling).
2. Была неправильная оценка результатов оптимизации. Если например вы видите, что локальный максимум имеет «нехорошую» форму на графике зависимости распределения дохода от значений параметров, то это очень сильный сигнал к оверфиттингу. Что такое «нехорошая» форма? Это когда почти везде прибыль так себе или даже минус, а на каком-то узком диапазоне значений параметров прибыль очень высокая (в разы или порядки). У хорошей устойчивой системе доходности должны плавно расти и плавно падать в зависимости от параметров.
+ возможны ошибки в самом бектесте:
1. Неподготовленные данные. Тики или свечи с внебиржевыми сделками.
2. Некорректный просчет исполнения ордеров. Пакетные решения этим часто грешат. Не учитываются особенности бирж и тд.
3. Слипедж, непофиленный лимитник из-за очереди и тд.
4. Медленная работа алгоритма или датафида.
5. Косяк в реализации алгоритма.
чёткая тема
как сказал Тимофей Мартынов
я лучше сказать не смогу, просто скопирую
Тимофей Мартынов,
у меня в блокноте записано
я яндексом пользоваться не умею, но я попробую
нашел
jc-trader.livejournal.com/1350643.html
пс
1) Перенос позиции через сессию/клиринг на сильном движении. Единственный радикальный способ борьбы — закладывать в систему, что цена после открытия может упасть до нуля или улететь в бесконечность, и просчитывать риски таким образом, чтобы данная ситуация систему не убила.
2) Форс-мажор, из-за которого алготрейдер потерял возможность управлять позициями. Сюда входят стоп-торги, потеря связи с торговыми серверами, различные глюки на бирже и т.п. Единственный радикальный способ борьбы — держать открытую позицию не более того объёма, полное обнуление которого не убивает систему.
я вот такие вещи тут хотел увидеть
Разработка, тестирование и оптимизация торговых систем
для людей с мат подготовкой слабовато но для гуманитариев сойдет
в прошлый раз меня за подобную хрень забанили
30 убыточных сделок подряд)
1. Может вола уменьшилась и бот не дотягивает до профита(если профит по количеству пунктов)
2. При тестировании 90% сделок в плюс не означают, что не будет 100 подряд убыточных, затем будет 900 прибыльных, но депозит уже умрет. как вариант уменьшить позу и ждать те 900.
и т.д. и т.п.
Просто незапланированные убытки означают что в настоящий момент закономерность не работает. Такое ВСЕГДА случается у тех кто использует различные индикаторы, использует только одну систему или (как правило) не понимает что вообще найдено-закодено
Обратную реакцию кукла! На истории есть куча явлений, которые повторяются и кажется, что это неэффективности, особенно на мелких ТФ. Такие «закономерности» являются приманками. Часто эти приманки рассчитаны на горе-трейдеров, которые тестировали на истории и верят в свой грааль «до последнего цента». Как только кто-то реально начинает входить в рынок на ту или иную «закономерность» — она испаряется. Прямо с первого входа! Прям сразу, как только ваш алгоритм набрал позицию против кукла, начинается «непруха». Закономерность исчезает. И появляется обратно как только вы прекратите совершать входы.
«Закономерность» будет ждать следующую рыбку.
Особенно это актуально для HFT и коротких трейдов с малыми стопами и тейками. Либо для больших трейдов с большим объёмом позиции.
Алгоритм, который «не щупал» реальный рынок на реальный объём позиции — это всё равно что донжуан-девственник.
Фактически реальная ёмкость торговой системы не может быть просчитана на истории никаким методом. Даже если вы учли, что в стакане был нужный вам объём, по нужным вам ценам. Это ничего не значит.
Объём объёму рознь.
Например, что было бы, если бы кто-то взял дофигища путов на РТС перед «Крымнаш!»...
Хотя постойте-ка… Именно так и было. =)
Те сгоревшие 135-е путы все помнят?
Покупатель наверняка знал про «Крым наш». Был точный инсайд. Взял на всю котлету на точный срок...
Инсайд был верный, но деньги улетели куклу. Он любит жадных!
smart-lab.ru/blog/269074.php
Андрею Верникову отдельное спасибо за видео.