Случилась тут у меня на днях печалька, при настройке робота опечатался и в одном из параметров лишний нолик ввел. Как итог — после включения робот за несколько секунд слил 10 килобаксов, нарисовав шпильку на инструменте. А как вы защищаетесь от подобных ошибок?
Лимитами по открытой позиции можно защищаться. Я имею в виду встроенный риск-менеджмент.
Но всех возможных ошибок предвидеть нельзя, поэтому поневоле приходится подключать глаза и ручки.
перед запуском простите но лимит надо ставить в пару процентов от торгового лимита вообще который планировали.
я еще ставлю лимит на кол-во операций в секунду (если робот не хфт и то его можно снизить на время запуска) ну и просто лимит что лось в минуту такой то и стоп
soer, Тут не понятно… Даже, если речь об HFT.
В любом случае для конкретного алгоритма(или круга)
можно отдельно обсуждать онлайн контроллеров с учетом возможных косяков в настройках, если они почему-то не определились до старта.
да, похоже какой-то неликвид?
меня пока бог миловал.
хотя разок было, что-то там глюкануло, уже не помню
и робот кинулся покупать-продавать-покупать-продавать
ничего страшного, т.к. заявки ставились в спред.
вообще наверное спред надо анализировать.
был же случай, когда стаканы перевёрнутые биржей транслировались. вот тогда тоже угар был. мне естественно ничего не вернули тогда.
Igr, ну надо ж немного интриги оставить, пусть внимательные трейдеры сами найдут где была шпилька))
А толку тестировать? Робот уже много лет успешно торгует и протестирован вдоль и поперек. Проблема была в опечатке при вводе параметров, когда ставил на очередной новый инструмент торговать его.
По идее должен быть модуль с наибольшими правами в системе, который контролирует чтобы не было херни всякой, чреватой потерями — модуль управления рисками. И любая система, любые действия на рынке должны через него проходить и чтоб этот модуль мог вмешиваться в торговлю. И тогда если этот модуль работает как часы, тот теоретически можно подключать сколь угодно безбашенную или глючную стратегию, потому что риск-модуль ей не даст баловаться. Зашить в такой модуль можно много разного — в т.ч. запретить удары с дальней ценой с объемом большИм для текущего стакана, что может приводить к таким проносам.
Replikant_mih, вопрос лишь в параметрах для того модуля, как отличить нормальное поведение от ненормального? Пораметр «нельзя продавать по бидам» не годится, в этом нет ничег плохого и алгоритмы в штатном режиме постоянно так делаю. Я вот не смог придумать такие критерии для рискмодуля, чтоб они отключали взбесившихся роботов, но при этом не мешали работать им штатно, тобишь не было ложных срабатываний защиты.
soer, отклонение от средней чем плох? если тренд торгуется, т.е. вход в сторону движения, то лучше ближе к средней вставать как-то чем на самом краю. средняя естественно короткая совсем. 5-10 сэмплов.
кстати, ведь говорят вот «кукл стопы собирает»
в тот движение цены было целиком на роботе? или сработали какие-нибудь стопы чужие?
если второе, почему бы не сделать ещё одного робота — выжидает штиль, льёт вниз, а в самом низу выкупает в 10 раз большим объёмом и продаёт после отката.
ПBМ, отклонение от средней будет мешать торговать резкие движения на рынке, тобишь опять кучу лишних срабатываний. Шпилька полностью моя, ничьи чужие стопы не срабатывали.
soer, Ну, во-первых, можно разделить на уровни опасности. Например, самый высокий — сразу блокировать опасную активность, зачищать последствия, алертить создателю (не Богу, а содателю системы :) ), уровень поменьше, уменьшать сайзы или что-то подобное делать, и опять-таки алертить, уровень ещё меньше — ничего не делать — просто алертить ну и зеленый уровень — это когда всё гуд.
Далее как идёт разбиение по уровням. По хорошему модуль должен получать максимум инфы для анализа, даже если конкретная стратегия не юзает стакан, а смотрит на свечки только, то риск-модуль всё равно должен получать и данные по стакану. А так же данные по накопленным показателям — просадка за день, за период и прочее и прочее. Соответственно если стратегия затупила и херню хочет сделать или если стратегия просто не всей инфой располагает, например не смотрит на толщину стакана, а хочет туда большой сайз засадить — в любом из этих случаев риск модуль будет обладать полной инфой и разрулит если всё будет не очень хорошо.
Далее что есть не хорошо и как определить, ну тут самый простой подход — набор проверок на опасность конкретных рисковых кейсов, тут чисто из опыта смотришь или опыт коллег. Тут два момента: надо отдельно превентивно смотреть всякие вещи (типа вот ударить много в тонкий стакан) и отдельно последствия мониторить, т.е. даже если у тебя не было паттерна на какой-то кейс и ты его не словил на лету и не предотвратил — ты быстро словишь последствия и примешь меры (робот примет сам — ну или не сам — в зависимости от уровня опасности, о которых выше писал) ну и т.д.
Может быть не очень много конкретики — это потому что у меня этого ничего нет и я глубоко не продумывал, но в будущем хотел бы добавить такой модуль.
Кстати ещё один подход к предотвращению или быстрому реагированию (в противовес или в дополнение к системе паттернов) — мониторинг аномальной активности — ну там среднее кол-во сделок за период и т.д., допустим если робот делал 7 сделок в день в среднем, на 5-й сделке за минуту можно и глубоко задуматься, а не сломалось ли чего)) — задуматься, опять-таки имею в виду алгоритмически задуматься).
Replikant_mih, это все не сработает.
— Как уже писал выше, о просадке пожно узнать только после закрытия позы, а тут шел активный набор.
— По отдельности заявки были вполне нормальны и отсеивать подобные заявки нельзя — тогда нормальные алгоритмы не смогут торговать.
— Аномальная активность это тоже норма во время резких движений на рынке. Например, на открытии торгов в 10.00, в первую секунду у меня иногда по сотне сделок проходит.
soer, ну я не увидел нюансов этой траблы — набор был или ещё что, поэтому как отловить именно такой кейс — не смогу, естественно, подсказать.
По поводу первой секунды в 10-00, сто сделок на этой секунде и при резких движениях норма, значит, предположительно, это не норма при нерезких движениях, значит надо смотреть чтобы при нерезких не было много сделок.
В общем это просто задача классификации — отличить аномалию от нормы, сможете отличить — сможете настроиться на это. Сложность связана с тем, что для разных стратегий нормы и аномалии разные.
soer, В общем можно сказать, что я собаку съел на вычленении аномальной активности из общего объема активностей, но немного в другой области-отрасли). Сложности по-любому будут, но всё решаемо, уверен.
soer, А по моему ошибка за рамками алгоритма и с этим бороться надо совершенно другими методами. Если сам алгоритм нормальный проверенный, а виноват сам пользователь который включает его. (Значит перед включением надо танцевать, молиться бить в бубен и дрожайшим образом вводить значения) :_-)
Или в алгоритме заложена скрытая логическая ошибка которая будет проявлять себя так. и всякие дополнительные модули будут только увеличивать ошибку.
Все что можно посоветовать в данном случае — дважды перепроверять введенные настройки, перед запуском робота в боевом режиме. Или встраивать защиту от дурака, так чтобы вводимые параметры сравнивались с какими-то критическими значениями и не позволяли выставлять настройки приводящие к существенным убыткам.
У меня было нечто подобное с АФК. Но не в настройках а в коде робота. Допустил две грубые ошибки. Одна в расчете объема увеличения позиции, а вторая в коде проверки предельно допустимых значений. Как результат — в день когда Система полетела вниз, робот увеличил позицию на объем в 20 РАЗ!!! превышающий правильно рассчитанный, и загнал в некоторый минус по остатку свободных средств на счете. Пришлось в срочном порядке сдавать часть ОФЗ. Было «больно», но виноват в этом только я. Надо было внимательнее проверять формулы в коде.
а визуализация в фронтэнде не страдает (если он конечно есть), или все вбивается в конфигурационное файло?
если рейндж относительно малознаковый (малоразрядный) — не просче ли форматировать поля ввода типовыми (для чисел) разделителями и навесить малюсенький парсер to int/float… итп
ну, не десять килобаксов, но когда сослепу вфигачил цифру не после запятой а до, эффект был похожий… смотрю внимательней с тех пор, но иногда все равно косячу… не ну а чо, не защиту же от дурака с проверками на все поля ввода от себя же ставить… ведь как только поставшь — понадобится куданить вбить ченить такое что эта защита не позволяет)))
Да, при последующих техдефолтах скорее всего котировки этой бумаги уже не будут испытывать серьезных колебаний, как на первом и втором. Для примера посмотрите РКК, там было уже 5 техдефолтов суммарно ...
Кстати, а отчего ни один смартлабовский военкор, не выкладывает простыни с экспертизой одного из самых массированных ракетных ударов ВС РФ по энерго инфраструктуре братского, со слов Путина, украинско...
Сергей Аноним, Император ясно дал понять, что применение таких ракет по нашим тылам будет рассматриваться как прямое участие стран НАТО в конфликте. Т.ч., если вся история не попытка усилить перего...
khornickjaadle, Сечин изначально заявил бредовые цифры в которые никто не поверил, со строительством городов на Севере, безумным количеством рабочих и т.д.
Запасы природного газа в ПХГ Европы составляют 112.2 миллиарда кубометров
Данные запасы включают запасы в ЕС, Великобритании и на Украине. Заполненность хранилищ 78% (при общей вместимости — 143 ми...
Но всех возможных ошибок предвидеть нельзя, поэтому поневоле приходится подключать глаза и ручки.
я еще ставлю лимит на кол-во операций в секунду (если робот не хфт и то его можно снизить на время запуска) ну и просто лимит что лось в минуту такой то и стоп
В любом случае для конкретного алгоритма(или круга)
можно отдельно обсуждать онлайн контроллеров с учетом возможных косяков в настройках, если они почему-то не определились до старта.
руками торгуем
Я в шоке.
меня пока бог миловал.
хотя разок было, что-то там глюкануло, уже не помню
и робот кинулся покупать-продавать-покупать-продавать
ничего страшного, т.к. заявки ставились в спред.
вообще наверное спред надо анализировать.
был же случай, когда стаканы перевёрнутые биржей транслировались. вот тогда тоже угар был. мне естественно ничего не вернули тогда.
а что инструмент то не показываешь, акция какая или чего?
а тестировать на малых объёмах не вариант?
А толку тестировать? Робот уже много лет успешно торгует и протестирован вдоль и поперек. Проблема была в опечатке при вводе параметров, когда ставил на очередной новый инструмент торговать его.
кстати, ведь говорят вот «кукл стопы собирает»
в тот движение цены было целиком на роботе? или сработали какие-нибудь стопы чужие?
если второе, почему бы не сделать ещё одного робота — выжидает штиль, льёт вниз, а в самом низу выкупает в 10 раз большим объёмом и продаёт после отката.
soer, Ну, во-первых, можно разделить на уровни опасности. Например, самый высокий — сразу блокировать опасную активность, зачищать последствия, алертить создателю (не Богу, а содателю системы :) ), уровень поменьше, уменьшать сайзы или что-то подобное делать, и опять-таки алертить, уровень ещё меньше — ничего не делать — просто алертить ну и зеленый уровень — это когда всё гуд.
Далее как идёт разбиение по уровням. По хорошему модуль должен получать максимум инфы для анализа, даже если конкретная стратегия не юзает стакан, а смотрит на свечки только, то риск-модуль всё равно должен получать и данные по стакану. А так же данные по накопленным показателям — просадка за день, за период и прочее и прочее. Соответственно если стратегия затупила и херню хочет сделать или если стратегия просто не всей инфой располагает, например не смотрит на толщину стакана, а хочет туда большой сайз засадить — в любом из этих случаев риск модуль будет обладать полной инфой и разрулит если всё будет не очень хорошо.
Далее что есть не хорошо и как определить, ну тут самый простой подход — набор проверок на опасность конкретных рисковых кейсов, тут чисто из опыта смотришь или опыт коллег. Тут два момента: надо отдельно превентивно смотреть всякие вещи (типа вот ударить много в тонкий стакан) и отдельно последствия мониторить, т.е. даже если у тебя не было паттерна на какой-то кейс и ты его не словил на лету и не предотвратил — ты быстро словишь последствия и примешь меры (робот примет сам — ну или не сам — в зависимости от уровня опасности, о которых выше писал) ну и т.д.
Может быть не очень много конкретики — это потому что у меня этого ничего нет и я глубоко не продумывал, но в будущем хотел бы добавить такой модуль.
Кстати ещё один подход к предотвращению или быстрому реагированию (в противовес или в дополнение к системе паттернов) — мониторинг аномальной активности — ну там среднее кол-во сделок за период и т.д., допустим если робот делал 7 сделок в день в среднем, на 5-й сделке за минуту можно и глубоко задуматься, а не сломалось ли чего)) — задуматься, опять-таки имею в виду алгоритмически задуматься).
— Как уже писал выше, о просадке пожно узнать только после закрытия позы, а тут шел активный набор.
— По отдельности заявки были вполне нормальны и отсеивать подобные заявки нельзя — тогда нормальные алгоритмы не смогут торговать.
— Аномальная активность это тоже норма во время резких движений на рынке. Например, на открытии торгов в 10.00, в первую секунду у меня иногда по сотне сделок проходит.
soer, ну я не увидел нюансов этой траблы — набор был или ещё что, поэтому как отловить именно такой кейс — не смогу, естественно, подсказать.
По поводу первой секунды в 10-00, сто сделок на этой секунде и при резких движениях норма, значит, предположительно, это не норма при нерезких движениях, значит надо смотреть чтобы при нерезких не было много сделок.
В общем это просто задача классификации — отличить аномалию от нормы, сможете отличить — сможете настроиться на это. Сложность связана с тем, что для разных стратегий нормы и аномалии разные.
Или в алгоритме заложена скрытая логическая ошибка которая будет проявлять себя так. и всякие дополнительные модули будут только увеличивать ошибку.
У меня было нечто подобное с АФК. Но не в настройках а в коде робота. Допустил две грубые ошибки. Одна в расчете объема увеличения позиции, а вторая в коде проверки предельно допустимых значений. Как результат — в день когда Система полетела вниз, робот увеличил позицию на объем в 20 РАЗ!!! превышающий правильно рассчитанный, и загнал в некоторый минус по остатку свободных средств на счете. Пришлось в срочном порядке сдавать часть ОФЗ. Было «больно», но виноват в этом только я. Надо было внимательнее проверять формулы в коде.
если рейндж относительно малознаковый (малоразрядный) — не просче ли форматировать поля ввода типовыми (для чисел) разделителями и навесить малюсенький парсер to int/float… итп
there is an incredible moment)):
We are waiting more
PS: я уж про энергобанк полчу вообще…