Избранное трейдера Rox
В связи с хайпом вокруг искуственных нейронных сетей стало интересно: насколько реально обучить сеть или дерево или иную технологию машинного обучения для восстановления вида неизвестной функции по следующим значениям обучающей выборки:
Сеть или дерево должна вычислить значение этой функции для аргумента x==97853
Философский подтекст состоит в том, что человек в состоянии определить вид этой функции совершенно достоверно и получить нулевую ошибку на валидационной выборке любого размера и сложности.
Если технологии ML не могут дать адекватного ответа на этот вопрос, то могут ли они в принципе быть полезны в торговле?
UPDATE 1: За прошедшие несколько часов 2 человека однозначно продемонстрировали способность восстановить вид искомой функции. Что подтверждает простоту озвученной задачки.
Алгоритм действий, если на вас оформили займ.
Несколько дней назад мне пришло письмо. Из письма компании по взысканию задолжностей, я узнал, что перед ООО МФК «Займ Онлайн» у меня имеется задолжность, в размере 17 250 рублей и предлагалось его погасить в кратчайшие сроки. Из них 10480 руб. тело займа и 6778 руб. просроченные проценты. Дата заключения договора займа была декабрь 2019 г. Естественно, никаких займов в этой компании я не оформлял и к ним не обращался.
В этот момент главное выработать правильную позицию и определить дальнейшие действия, тк не предпринимать никаких действий в подобной ситуации ни в коем случае нельзя. Данные письма не приходят без оснований. А в данном случае, основание у компании по взысканию задолжностей – обращение финансовой организации к ним. По их данным у вас перед ними долг. Далее действия по пунктам.
«Покупать следует то, что дорого. Продавать следует то, что дешево.»
Чистая адапливная стратегия маркетмейкинга.
Начнем с нуля.
Допустим, существует некий актив «ИКС», у население на этот актив существует стабильный спрос и стабильное предложение. Актив «ИКС» – некий инструмент экономической деятельности. Люди обмениваются этим активом «из рук в руки». Спрос и предложение реализуются неэффективно. Мы хотим исправить ситуацию – предоставить любям благо в плане возможности более быстро и надежно покупать и продавать актив икс. На этом мы хотим заработать – свести покупателей и продавцов с максимальной для себя выгодой. Создаем торговую площадку и начинаем предоставлять цену. Мы –монопольный маркетмейкер на своей торговой площадке.
Начинаем предоставлять ASK от «очень дорого», BID – от «очень дешево». Сужаем постепенно спред. Вдруг к нам прилетает первая сделка по ASK (кружочек на графике). ASK цену останавливаем, BID цену продолжаем двигать вверх , пока не получим первую сделку по BID. Далее уменьшаем спред – делаем цены покупки и продажи более привлекательными – принимаем больше сделок для максимизации прибыли. Если к нам прилетает бОльший объем по BID – делаем цену покупателя (покупатель – это мы) менее привлекательной, а цену продавца (продавец – это тоже мы) более привлекательной, что позволяет уравнять объемы покупок и продаж. Мы не влияем на динамику цены – на нее влияют трейдеры, торгующие на нашей площадке. Мы лишь только предоставляем такую цену, которая позволяет нам максимально выгодно реализовать функцию посредника между покупателем и продавцом. Мы влияем лишь на размер спреда. Параметр волатильность/спред будет минимальным — нам не нужны высокие риски, связанные с направленным движением цены.
Чистая манипулятивная стратегия маркетмейкинга.
Приветствтую!
В предыдущей статье, просили в комментах дивергенцию реализовать по MACD. Казалось довольно понятная и простая ситуация (нет)
Процесс формализации довольно сложный оказался. Для начала я пошел таким путем — нашел на графике типичную ситуацию, и попытался ее обьяснить «роботу». По сути надо было найти две «впадинки» на графике, одна ниже другой, и две «холма» по индикатору.

А по сути получилось так, что 100% совпадать точки не будут (крайне редко могут совпасть) Это натолкнуло на мысль искать сценарий, при котором я оцениваю ситуацию, с другой стороны. Смотрю на то что в среднем график снижается, а индикатор растет. И тут оказалось тоже засада.
В общей картине индикатор растет, но на самом деле, в момент образования второй впадинки на графике, макд в 90% случаев начинает так же снижаться. Как итог, получилось так, что долгим упорным методом формализации, я смог обьяснить роботу — только частный пример (такие были повторяющиеся примеры на истории, но довольно мало.
Тестировать будем крипту на Bitmex, так как там можно без проблем достать тики с направлениями на халяву.
Собственно, идея очень простая:
— покупаем, если сумма объемов последних 5 сделок больше 500,000
— продаем, если сумма объемов последних 5 сделок меньше -500,000
Торгуем одним условным битком (тикер XBTUSD).
Использовать будем R и пакет QuantTools.
Пишем немножко кода:

Результаты:

Наконец дошли руки сделать работающий прототип на нейронных сетях — сразу же получился результат близкий к текущей используемой модели на основе градиентного бустинга. Учитывая, что в нейронные сети подавалась только часть информации по сравнению с той, которая используется для построения признаков для градиентного бустинга, и пара простых архитектур без всякой оптимизации, то есть все шансы в перспективе обойти градиентный бустинг. Из минусов — сетки обучаются в разы медленнее бустинга, но для моей инвестиционной стратегии это не принципиально.
Сходил недавно на семинар по эволюционному поиску нейросетевых архитектур — очень проникся темой. Пока останусь на градиентном бустинге, но буду двигаться в сторону сетей и эволюционного поиска их архитектур. В какой-то момент столкну бустинг и сети в эволюционном процессе, а там посмотрим, кто победит.
Хотелось, традиционно, подвести итоги 2019 года, но нового и интересного ничего не произошло, результаты на МОЕКС практически не отличаются от года 2018-го. Поэтому расскажу, насколько важно для HFT торговли написать правильный бэктест. Результаты тоже будут, но на примере отдельных алгоритмов, из набора работающих на Московской бирже.
Для высокочастотной торговли, наверное, самый главный показатель это мгновенная ликвидность. Не буду углубляться в проблему ее измерения, это отдельная задача. В общем случае, чем выше мгновенная ликвидность, тем большую прибыль приносит высокочастотная стратегия. И ваш тест должен правильно обрабатывать весь поток ликвидности, который присутствует в сохраненной маркетдате, чтобы верно эту мгновенную ликвидность отразить. В матчинге бэктеста необходимо сводить в сделки собственные (тестовые) ордера в первую очередь по потоку рыночных сделок используемого актива, и во вторую — по текущей книге заявок. Нарезки в тесте не должно быть никакой, то есть внутреннее время теста должно идти соответственно последней считанной записи в максимальном разрешении, которое транслируется биржей (миллисекунды или даже микросекунды).Также нужно учесть задержку прихода ордеров на биржу после их отправки и задержку коллбэка. Нюансов здесь много, и я как обычно, о них не расскажу:)