Блог им. sore

Роботов нужно лучше контролировать!

Случилась тут у меня на днях печалька, при настройке робота опечатался и в одном из параметров лишний нолик ввел. Как итог — после включения робот за несколько секунд слил 10 килобаксов, нарисовав шпильку на инструменте. А как вы защищаетесь от подобных ошибок?
Роботов нужно лучше контролировать!

★3
49 комментариев
Лимитами по открытой позиции можно защищаться. Я имею в виду встроенный риск-менеджмент.
Но всех возможных ошибок предвидеть нельзя, поэтому поневоле приходится подключать глаза и ручки.

avatar
SergeyJu, он есть, но не спасет, так как лимиты у меня довольно большые, этот алгоритм всего половину лимита успел набрать.
avatar
перед запуском простите но лимит надо ставить в пару процентов от торгового лимита вообще который планировали. 
я еще ставлю лимит на кол-во операций в секунду (если робот не хфт и то его можно снизить на время запуска) ну и просто лимит что лось в минуту такой то и стоп
avatar
antonbell, размер лося можно лишь после закрытия позиций посчитать, в каждый момент он не извесен.
avatar
soer, Тут не понятно… Даже, если речь об HFT.
В любом случае для конкретного алгоритма(или круга)
можно отдельно обсуждать онлайн контроллеров с учетом возможных косяков в настройках, если они почему-то не определились до старта.
avatar
а почему не запустили бота в тестовом режиме — он бы сделки рисовал без реальных и тогда наверное возможно было бы заметить ошибку
avatar
А как вы защищаетесь от подобных ошибок?

руками торгуем
avatar
2153sved, руками зарабатывать на бирже невозможно.
avatar
soer, судя по тому как все шортят сбер, голова однозначно не нужна.
avatar
2153sved, эти бешенные шортисты уже ставку на фьюче до 7.5% годовых обранили(а временами ненадолго и до 7% продавливают).
avatar
сферический трейдер в вакууме, сферическая чушь
avatar
Сергей Сметанин, где?
avatar
сферический трейдер в вакууме, вот это высказывание
руками зарабатывать на бирже невозможно.
avatar
Сергей Сметанин, это истина. ручные трейдеры не могут конкурировать с роботами и отмирают в ходе конкурентной борьбы, как динозавры. 
avatar
сферический трейдер в вакууме, ))) понятно. У меня абсолютно другое мнение. Опять же если речь не о спекуляциях. Но спекуляциях возможен ваш вариант
avatar
Торгуйте пжл. чаще :)
avatar
matrix, ах, так это ты! верни спиженное у меня бабло!
avatar
soer, мы на ты уже? я вообще хз о каком инструменте и какой бирже идет речь :) но так торговать однозначно нужно чаще!!!
avatar
10 килобаксов слить!
Я в шоке.
avatar
а че за инструмент?
да, похоже какой-то неликвид?
меня пока бог миловал. 
хотя разок было, что-то там глюкануло, уже не помню
и робот кинулся покупать-продавать-покупать-продавать
ничего страшного, т.к. заявки ставились в спред.

вообще наверное спред надо анализировать.
был же случай, когда стаканы перевёрнутые биржей транслировались. вот тогда тоже угар был. мне естественно ничего не вернули тогда.
avatar
insighter, несколько десятков
avatar
soer, вот основная защита должна стоять от частого выполнения сделок — зависит конечно от алгоритма, но обычно — это значит что-то глюкануло
avatar
Petr S, для меня такой поток сделок — это норма.
avatar
Не использовать в алгоритмах исполнение сигналов по рынку.
Григорий Старцун, они и так не порынку торгуют
avatar

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

 

а тестировать на малых объёмах не вариант? 

avatar
Igr, ну надо ж немного интриги оставить, пусть внимательные трейдеры сами найдут где была шпилька))
А толку тестировать? Робот уже много лет успешно торгует и протестирован вдоль и поперек. Проблема была в опечатке при вводе параметров, когда ставил на очередной новый инструмент торговать его. 
avatar
По идее должен быть модуль с наибольшими правами в системе, который контролирует чтобы не было херни всякой, чреватой потерями — модуль управления рисками. И любая система, любые действия на рынке должны через него проходить и чтоб этот модуль мог вмешиваться в торговлю. И тогда если этот модуль работает как часы, тот теоретически можно подключать сколь угодно безбашенную или глючную стратегию, потому что риск-модуль ей не даст баловаться. Зашить в такой модуль можно много разного — в т.ч. запретить удары с дальней ценой с объемом большИм для текущего стакана, что может приводить к таким проносам.
avatar
Replikant_mih, вопрос лишь в параметрах для того модуля, как отличить нормальное поведение от ненормального? Пораметр «нельзя продавать по бидам» не годится, в этом нет ничег плохого и алгоритмы в штатном режиме постоянно так делаю. Я вот не смог придумать такие критерии для рискмодуля, чтоб они отключали взбесившихся роботов, но при этом не мешали работать им штатно, тобишь не было ложных срабатываний защиты.
avatar
soer, отклонение от средней чем плох? если тренд торгуется, т.е. вход в сторону движения, то лучше ближе к средней вставать как-то чем на самом краю. средняя естественно короткая совсем. 5-10 сэмплов.
кстати, ведь говорят вот «кукл стопы собирает»
в тот движение цены было целиком на роботе? или сработали какие-нибудь стопы чужие?
если второе, почему бы не сделать ещё одного робота — выжидает штиль, льёт вниз, а в самом низу выкупает в 10 раз большим объёмом и продаёт после отката.

avatar
ПBМ, отклонение от средней будет мешать торговать резкие движения на рынке, тобишь опять кучу лишних срабатываний. Шпилька полностью моя, ничьи чужие стопы не срабатывали.
avatar

soer, Ну, во-первых, можно разделить на уровни опасности. Например, самый высокий — сразу блокировать опасную активность, зачищать последствия, алертить создателю (не Богу, а содателю системы :) ), уровень поменьше, уменьшать сайзы или что-то подобное делать, и опять-таки алертить, уровень ещё меньше — ничего не делать — просто алертить ну и зеленый уровень — это когда всё гуд.

 

Далее как идёт разбиение по уровням. По хорошему модуль должен получать максимум инфы для анализа, даже если конкретная стратегия не юзает стакан, а смотрит на свечки только, то риск-модуль всё равно должен получать и данные по стакану. А так же данные по накопленным показателям — просадка за день, за период и прочее и прочее. Соответственно если стратегия затупила и херню хочет сделать или если стратегия просто не всей инфой располагает, например не смотрит на толщину стакана, а хочет туда большой сайз засадить — в любом из этих случаев риск модуль будет обладать полной инфой и разрулит если всё будет не очень хорошо.

Далее что есть не хорошо и как определить, ну тут самый простой подход — набор проверок на опасность конкретных рисковых кейсов, тут чисто из опыта смотришь или опыт коллег. Тут два момента: надо отдельно превентивно смотреть всякие вещи (типа вот ударить много в тонкий стакан) и отдельно последствия мониторить, т.е. даже если у тебя не было паттерна на какой-то кейс и ты его не словил на лету и не предотвратил — ты быстро словишь последствия и примешь меры (робот примет сам — ну или не сам — в зависимости от уровня опасности, о которых выше писал) ну и т.д.

Может быть не очень много конкретики — это потому что у меня этого ничего нет и я глубоко не продумывал, но в будущем хотел бы добавить такой модуль.

Кстати ещё один подход к предотвращению или быстрому реагированию (в противовес или в дополнение к системе паттернов) — мониторинг аномальной активности — ну там среднее кол-во сделок за период и т.д., допустим если робот делал 7 сделок в день в среднем, на 5-й сделке за минуту можно и глубоко задуматься, а не сломалось ли чего)) — задуматься, опять-таки имею в виду алгоритмически задуматься).

avatar
Replikant_mih, это все не сработает.
  — Как уже писал выше, о просадке пожно узнать только после закрытия позы, а тут шел активный набор.
  — По отдельности заявки были вполне нормальны и отсеивать подобные заявки нельзя — тогда нормальные алгоритмы не смогут торговать.
  — Аномальная активность это тоже норма во время резких движений на рынке. Например, на открытии торгов в 10.00, в первую секунду у меня иногда по сотне сделок проходит.
avatar

soer, ну я не увидел нюансов этой траблы — набор был или ещё что, поэтому как отловить именно такой кейс — не смогу, естественно, подсказать.

По поводу первой секунды в 10-00, сто сделок на этой секунде и при резких движениях норма, значит, предположительно, это не норма при нерезких движениях, значит надо смотреть чтобы при нерезких не было много сделок. 

В общем это просто задача классификации — отличить аномалию от нормы, сможете отличить — сможете настроиться на это. Сложность связана с тем, что для разных стратегий нормы и аномалии разные.

avatar
soer, В общем можно сказать, что я собаку съел на вычленении аномальной активности из общего объема активностей, но немного в другой области-отрасли). Сложности по-любому будут, но всё решаемо, уверен.
avatar
soer, А по моему ошибка за рамками алгоритма и с этим бороться надо совершенно другими методами. Если сам алгоритм нормальный проверенный, а виноват сам пользователь который включает его. (Значит перед включением надо танцевать, молиться бить в бубен и дрожайшим образом вводить значения) :_-)

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

если рейндж относительно малознаковый (малоразрядный) — не просче ли форматировать поля ввода типовыми (для чисел) разделителями и навесить малюсенький парсер to int/float… итп
avatar
flextrader, конфигурация через скл бд
avatar
зы, кстати (чуть больше подсказок публике):

there is an incredible moment)):

We are waiting more 
avatar
flextrader, думаю не сильно понятней будет)) А как ты нашел правильный инструмент?
avatar
ну, не десять килобаксов, но когда сослепу вфигачил цифру не после запятой а до, эффект был похожий… смотрю внимательней с тех пор, но иногда все равно косячу… не ну а чо, не защиту же от дурака с проверками на все поля ввода от себя же ставить…  ведь как только поставшь — понадобится куданить вбить ченить такое что эта защита не позволяет)))

PS: я уж про энергобанк полчу вообще…
А ведь кто-то копнёт историю, учтёт эту шпильку, сделает выводы, построит по ним систему и начнёт торговать…
avatar
MS, а как он из шпильки систему построит?
avatar

теги блога злой человек

....все тэги



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