Хотел написать «за вечерним кофе», но потом увидел, что ещё нет даже трёх часов дня. И понял, что ранний подъём (сегодня он был в 7 утра) неплохо растянул день. А то, чем я занимался с утра, натолкнули на мысль, про что написать заметку, когда я вышел погулять и за кофе.
Нам поступают вопросы вида: была ли у вас идея запрограммировать робота для торговли на рынке ценных бумаг?
Сама идея роботов очень крута. Как минимум в теории. Представьте: у вас есть алгоритм, который работает автономно и приносит вам деньги. Красота!
В реальности программирование торговых роботов — сложнейшая задача. Нужен чёткий алгоритм открытия и закрытия позиций, проверки. что капитал не упадёт ниже минимально допустимого порога в случае каких-то просадок (а ещё есть и «гэпы»), стратегия должна давать прибыль на прошлой истории/статистике.
Самое сложное в программировании роботов — это то, что нет права на ошибку или опечатку. Было немало случаев, когда на рынке совершались большие сделки из-за ошибочно заданных параметров. Скажем, кто-то допустил опечатку в формуле для расчета брокерских комиссий (или они поменялись) или где-то в другом месте. Робот совершает сделку на огромную сумму денег, считая, что принесет прибыль, но из-за какой-то ошибки всё идёт насмарку. Было немало случаев, когда даже в крупных финансовых компаниях роботы приносили убытки только из-за каких-то ошибок в алгоритмах. Такие ошибки не всегда можно поправить: если вы увидели в реальном времени, что «робот творит что-то не то», то да, можно быстро вмешаться или отключить. Но представьте, что вы куда-то уехали, решили сходить за кофе или просто не заметили.
Ещё одна проблема роботов — не всегда можно учесть все события, которые могут произойти на рынке. Роботы часто основываются на прошлой статистике, при этом по умолчанию алгоритмы будут считать, что если чего-то не было в прошлом, то вероятность такого события равна нулю. Это не совсем правильно. Для каких-то событий она действительно равна нулю (встретить завтра динозавра на улице), для каких-то — не равна (например, если какие-то акции никогда не изменялись в цене за день более чем на Х%, это не означает, что завтра они не вырастут или не упадут на такое количество процентов).
Подкрепим теоретические аргументы практической ситуацией. Одним из самых ярких событий, показывающих, что роботы — не панацея, был «флэш-крэш 2010» («2010 Flash Crash» — можете прочитать в Википедии). В 2010-м году в течение буквально нескольких минут рынок США упал на 7%! Это очень большое снижение. Сейчас если рынок за месяц упадёт на 7%, будут говорить, что это был обвал. А уж за полчаса — это вообще из ряда вон выходящее событие.
Одна из гипотез — что это именно автоматизированные программы резко начали продавать ценные бумаги и повлекли за собой стихийное падение рынка. Раньше такого никогда не было (чтобы так быстро упал рынок), и вот, случилось в первый раз. Затем рынок восстановился, ушёл выше. Инвесторы, которые просто держали ценные бумаги в портфеле и «вышли за кофе», вернувшись спустя час ничего бы не заметили негативного для своего портфеля. А вот кто-то из владельцев роботов наверняка получил последствия для капитала.
Поэтому программирование роботов — это задача сладкая, манит своей возможной прибылью, но очень сложная)
Про наши подходы к автоматизации — в следующей заметке, а то кофе уже закончился, а заметка уже получилась весьма длинной.