Предыдущий пост: https://habr.com/ru/articles/677290/
Ильф и Петров оживили Остапа, и по их примеру, оказавшись в определенной точке своей жизни, я решил написать продолжение своих заметок. Спойлер для тех кому лень читать дальше - у меня нет яхты, я ищу работу на заводе, и если повезет, то это будет завод по выращиванию медицинского каннабиса.
В этой статье не будет технических решений или алгоритмов, я хочу рассказать о своем опыте, который приобрел с момента опубликования предыдущего текста и перемещения меня в другую жизнь.
Краткая история фиаско.
В связи с событиями в мире мне пришлось мигрировать в дальние края, без языка и удаленной работы. И тут мне очень повезло. Меня подобрали хорошие люди из Европы и предложили сотрудничество в разработки алгоритмов для торговли, чем меня спасли от голодной смерти, за что я им премного благодарен. Они сильно помогли мне в понимании торговли и риск менеджменте. В результате больше 2 лет я занимался разработкой ботов и имел возможность торговать с использованием больших денег.
Мы пробовали различные алгоритмы и различные рынки от криптовалют до акций и индексов. Примерно полгода ушло на выработку стратегий и понимание того, на чем надо сосредоточиться. Были перепробованы варианты торговли криптовалютой на споте с диверсификацией портфеля по различным криптопарам. В числе наших операций были: торговля на бирже binance, торговля акциями через Interbroker, торговля индексами s&p500, торговля на форексе и торговля фьючерсами на криптовалюту в паре BTCUSDT.
Остановились мы именно на торговле фьючерсами с надеждой потом перейти на другие рынки. Здесь можно было легко брать большие плечи в отличии от спота, и, главное, были доступны все исторические данные для проверки алгоритмов. Найти исторические данные, например, для s&p500 с объёмами и сделками гораздо труднее, а чтобы торговать на чикагской бирже и получать данные в реальном времени, надо заключить с ними контракт и заплатить разово 10000$. Мы на это не были готовы и решили отложить это на будущее, когда разбогатеем.
При торговле акциями мы столкнулись с тем, что InterBroker в реальном времени возвращал нам только те операции, которые проходили через него, а не все операции на бирже. В результате объёмы торгов не отражали реальность. С форексом у нас не получилось, как нам казалось, хорошего алгоритма. Мы хотели зарабатывать, да и сейчас хотим, от 200% год (смайлики вы сами поставите в нужных местах).
Итак, имеем фьючерсы на бинансе, и алгоритм, который показывает прекрасные исторические результаты на паре BTCUSDT. Алгоритм не привожу, поскольку он мне не принадлежит. Запускаем и кладем 50000 долларов и - о чудо! - через время, на которое мы рассчитывали, а именно полгода, у нас на счету больше 550000 долларов. Не надо думать, что это чистая прибыль. Все это время платили зарплату мне, да и моим партнерам в Европе тоже надо было жить. Плюс седые волосы, но об этом дальше.
Часть денег мы сняли, а часть завели на другие боты, которые работали по одному алгоритму, и стали ждать, придумывая, где проведем первый корпоратив. С этого момента что-то пошло не так. Бот стал ошибаться, мы пытались его улучшить, но бот то зарабатывал, то терял. В конце концов, перед выборами в Америке сумма на всех ботах за год достигла почти миллиона, и мы уже думали снимать урожай. Но тут был выбран Трамп, пошли постоянные новости, и бот за несколько сделок слил весь заработок до 100000. Нервы были на пределе у всех, мы решили заморозить дальнейшие развитие проекта, бот продолжает торговать, а я ищу работу. В конце концов Джесси Ливермор то же закончил жизнь не на мажорной ноте.
Это вкратце моя история фиаско. Дальше будет описание опыта, который я приобрел.
Мои полученные уроки.
Здесь я опишу выводы, которые я сделал. Дисклеймер: все описанное ниже это сугубо мое личное мнение, с которым вы можете соглашаться или нет. Если мои выводы кажутся вам простыми или банальными, просто пропустите.
-
Алгоритм должен быть простым и иметь как можно меньше коэффициентов. Мы просто делаем экстраполяцию торгов. Чем больше коэффициентов, тем точнее она проходит по прошлым точкам и лучше результат на исторических данных, но тем меньше шансов что так будет в будущем. Я не уверен, что “все должно в природе повториться”, но на этом, к сожалению, все основано. Рынок предлагает бесконечное количество вариантов, и надо попытаться найти минимальное количество правил, которые работают, пусть даже в ущерб качеству работы бота в прошлом. Тогда есть надежда, что он в будущем будет работать. Мы пытались улучшить бот анализируя неудачные сделки и внося коррективы, в результате бот все лучше работал в прошлом, но в жизни все шло не так. Наверное поэтому я не очень верю в применение ИИ в торговле. Куча ИИ в виде кожаных мешков торгует на бирже, но лишь немногие делают это удачно на протяжении всей жизни.
-
Каждое правило и каждый коэффициент в вашей программе должен иметь объяснение. При этом аргумент в том духе, что этот коэффициент здесь такой, потому что так бот работает лучше на исторических данных, не подходит. Сейчас я понимаю, что нам очень повезло, что мы сразу заработали много. Мы ставили стоп-лосс на 0.5% от точки входа, 0.5 никак не объяснялось, просто на исторических данных это давало отличный результат. Как итог, этот алгоритм очень быстро сломался и нам пришлось менять стратегию. Сейчас мы ставим стоп четко за рассчитанную линию проторговки. Это только один пример. Также у нас есть всего несколько коэффициентов и все они такие: 1.5, 0.5, 1/3, 0.8. Никаких коэффициентов с двумя или тремя знаками после запятой, типа тонкой настройки.
-
Не вмешивайтесь в работу бота руками. Мы сделали несколько кнопок управления ботом, чтобы возможно было руками закрыть позицию, запретить входить в сделку или перенести стоп в «безубыток» раньше времени. Все эти кнопки в большинстве случаев нас подводили, закрывали позицию намного раньше времени или не входили в сделку, которая могла принести нам 200%. Поэтому так делать не надо. Если сделали бота, то довертись ему полностью.
-
Надо обязательно придерживаться риск менеджмента. В последней версии бота у меня это было реализовано так: - при начале торговли я вхожу на всю имеющееся сумму, стоп прячу за линию, а плечо рассчитываю, исходя из допустимой потери, у меня это 33%. Да это много и больно, но деньги на мясо нужны, пока есть зубы. Затем, при достижении 0.8% (это значение имеет объяснение, но я не могу раскрыть алгоритм), я закрываю часть позиции и переношу стоп в «безубыток». Размер позиции, который я закрываю, линейно зависит от плеча. Если плечо большое - закрываю побольше, если маленькое - закрываю поменьше. Дальше держу позицию до сигнала на продажу. Если сделка удачная, я откладываю в резерв сумму, которую могу потерять в следующей сделке. Если следующая сделка удачная - я добавляю в резерв, если нет - я беру деньги из резерва, если они там есть. Историческая успешность у бота 84%, так что вероятность двух неуспешных сделок не очень большая, но в жизни бывает и три неуспешных сделки подряд по 33% от суммы входа. Число 84% успешных сделок не должно вводить в заблуждение, поскольку одна неуспешная сделка забирает сразу 33%, а большинство успешных сделок приносит по 5% или меньше, и только небольшое количество сделок приносит от 100% до 300%. Размер плеча варьируется от 2 до 23, зависит от того, как далеко стоит стоп. Конечно можно входить малой частью от депозита с плечом до ликвидации, однако эта стратегия хоть и увеличивает количество успешных сделок, но приносит меньше профита.
-
Изменчивость рынка – самая большая проблема. У бота есть интервал времени, на основании которого он принимает решение. Например, чтобы войти в сделку мы смотрим на день назад и строим наши выводы, но рынок может замедлиться или ускориться. Если рынок ускорится, бот не будет успевать входить в сделки, поскольку необходимые фигуры на графике не успеют сформироваться. А если рынок замедлится, то скорей всего бот будет заходить в сделку совсем не тогда, когда вы этого хотели. Как это победить, я не знаю. Или другой пример - могут уменьшится объёмы на бирже, если трейдеры вдруг уйдут на другую биржу или в другую криптопару. Сейчас binance запретил торговать USDT европейцам, и они возможно уйдут торговать USDC, из-за чего скорей всего изменятся объёмы торговли в парах USDT, что не очень хорошо скажется на боте.
-
Мой опыт показывает, что на корзину лучше вообще не смотреть если вам не надо купить или продать большую сумму рыночным ордером. У нас были исторические данных корзины по битку, где взял не скажу. Ничего хорошего не получилось.
-
Нельзя создать универсального бота. Мы торгуем только в паре BTCUSDT, при попытках запустить наш алгоритм на другие криптопары, только эфир давал плюс, остальные монеты давали минус или совсем небольшой плюс. Возможно, это связано с объёмами торгов и их волатильностью, но сделать общий алгоритм для любой криптопары у нас не получилось, что сильно расстраивает и убивает надежду на яхту.
-
Неожиданное открытие - оказалось, мы хоть и не киты, но и не плотва. В какой-то момент мы зашли в сделку на 400 тысяч с 25 плечом по рынку, это было в первой версии бота, когда стоп мы убирали на 0.5% от входа. Давайте критику оставим, у каждого свой алгоритм. В результате, как потом выяснилось, мы купили 60% контрактов от общего объёма контрактов в эту минуту на бинансе и повлияли на цену. Наш алгоритм анализирует спотовый рынок, а торгует на фьючерсном. При эмуляции мы берем средневзвешенную цену на фьючерсах за минуту и считаем, что мы вошли бы по этой цене и тут оказалось, что мы эту цену сдвинули, а потом в эмуляции ее посчитали. Это бывает не часто, но приятно, что мы не уклейка. Кстати, сделка закрылась успешно.
-
Бывают ошибки биржи и иногда они в вашу пользу. Это было один раз, у нас стоял стоп, и цена пошла не в нашем направлении. Была паника на бирже, и тут оказалось, что стоп у нас не сработал, отложенный ордер перешел в состояние Expired. Нам очень повезло, цена развернулась и пошла в нашу сторону и мы успешно закрылись. Запросили бинанс что произошло. Вот их ответ "....... There seems to have been an issue with TP/SL orders yesterday which caused some orders to expire, our team has detected the brief error and was able to fix it. However, some of our users have indeed been affected, we have made sure to gather all data necessary from our users (through the private link I shared with you) to investigate each case separately to assess losses and discuss any possible compensation". Предполагаю, что у бинанса были проблемы в центральной системе исполнения ордеров, а условные ордера лежат в стороне. И когда наступает событие, посылают ордер на исполнение, и, если он отклонен или не может быть исполнен, то попытки повторить нет. Приятно то, что бинанс взял ответственность за это и готов был возместить ущерб.
-
Очень сильно на торговлю влияют новости. Как я писал выше, избрание Трампа нас подкосило, и как с этим бороться боту, основанному на тех анализе, я не знаю.
-
Мы пытались сделать бота не только на тех анализе, но и на других данных. Например, использовать открытый интерес ОИ на фьючерсах. Пробовали смотреть, когда он достигает максимума, и в момент начала снижения вставать в ту сторону, куда идет цена. Если ОИ резко начинает падать, а цена резко пошла в верх - встаем в лонг, поскольку пускают кровь медведям и наоборот. На исторических данных все было неплохо, а в жизни топчется на месте.
-
Это не реклама, хочу сказать где у нас работают боты и где мы запускаем наши тесты. Мы покупаем виртуальные машины у hetzner. Я с ними работаю давно и за все время не было проблем. Цены намного ниже, чем у других провайдеров, и есть arm компьютеры ,которые дешевле чем intel и amd, особенно, если вам надо много процессоров. Для работы ботов мы используем самые дешевые машины, я вылизал код так, что он может работать даже на Arduino., Хотя, ладно, тут я малость погорячился, но в целом много коду не надо, хотя, когда на бирже паника, бот загружает и обрабатывает до 30 тысяч сделок в минуту. Для надежности мы установили каждый бот на отдельную машину. А вот для эмуляции и тестирования моделей используем многопроцессорные машины, но у hetzner, если брать arm, они не дорогие.
-
Как писал выше, у нас работает несколько ботов по одному алгоритму, и чтобы они не входили в одно время и не двигали сильно цену, я сделал принцип карусели - каждый бот входит с определенной задержкой в несколько секунд. Однако, в следующей сделке бот, который входил последним, входит первым, а бот, который входил первым, входит вторым и так далее. Это позволяет ботам войти по средней цене за минуту и не факт, что бот, который входит первым, входит по лучшей цене. У нас бывало так, что два бота фиксировали убыток, а три зарабатывали.
-
Я приобрел опыт работы с большими данными, не путать с машинным обучением. Под большими данными подразумеваю таблицы с большим количеством записей. У меня было больше 5 миллиардов - загрузил все сделки с binance без агрегации, было несколько идей и хотелось попробовать. Если кому-то из читающих этот текст, нужен человек с таким опытом, пишите, пока я не сгинул на заводе окончательно.
Итого
Сделать бота, который зарабатывал бы много и стабильно, не удалось. Торговля на бирже с плечами - это казино или лотерея, но шансы на выигрыш выше, я продолжаю на это надееться.
Я сделал канал, где вы сможете видеть сделки бота в реальном времени, https://t.me/ZhenyaTrades. Прошу не считать этот канал индикатором или источником сигналов, он бесплатный и открыт для всех, бот совершает сделки на активном рынке и поэтому вы просто можете не успеть войти в сделку. Также поместил в канал файл с эмуляцией работы бота на исторических данных. Если все будет хорошо, сделаю сайт о жизни бота и размещу ссылку в канале.

Это график, на котором показано, как наш бот работал бы в прошлом. Каждый пик и резкий спад - это вывод денег, когда их стало больше 550 тысяч, мы выводим все и оставляем 50 тысяч для дальнейшей работы. Как видите, он похож на кардиограмму, и не исключено, что пациент может в любой момент умереть, но родственники в это верить не хотят. Пожалуйста, не пишите мне с просьбой продать алгоритм, он уже не принадлежит мне и, самое главное, я скоро буду работать на настоящем заводе, я думаю, вам это не надо. Если есть другие идеи о сотрудничестве, то всегда готов выслушать. Мой телеграмм есть в первой статье.
Всем удачи в торгах!
Автор: antokols