Высокочастотная торговля (High Frequency Trading, HFT) участвовала в гонке на самую низкую задержку (latency) в течение нескольких лет, и по мере того, как мы все ближе и ближе подходим к физическим пределам, выбор между качеством и скоростью все больше и больше склоняется к скорости.
Алгоритмы, которые обеспечивают стабильность на наших рынках, не основаны на экзотических передовых методах машинного обучения, как многие считают. Стратегии, используемые самыми передовыми HFT-фирмами, шокирующе просты с точки зрения математики и статистики: экспоненциальное скользящее среднее с парой логических проверок и проверок на безопасность. Если кто-то заявляет, что использует какой-нибудь сумасшедший «Алгоритм имитации отжига» (Simulated Annealing), то это лишь для того, чтобы пустить пыль в глаза.
Эти высокочастотные фирмы уклоняются от передовых методов не потому, что думают, будто рынки на самом деле просты, и не потому, что не в состоянии использовать математику. Они делают это, потому что в настоящее время лучшим HFT-фирмам необходимо около 2 микросекунд, чтобы отправить сигнал на заключение сделки (звуку требуется около 150 микросекунд, чтобы пройти путь от задней части горла до рта), а сложные методы требуют гораздо больше времени.
Две микросекунды. Даже компьютеру остается мало времени, чтобы сделать какие-то вычисления или даже надежное кэширование. Единственное неудачное обращение к кэшу стоит 500 микросекунд задержки. Так что вы не сможете хранить очень много значений. На самом быстром языке программирования вычисление только обратной матрицы 10х10 займет 2 микросекунды. А использование OS и всех этих замечательных инструментов, созданных сообществом C++ за эти годы? Удачи с этим. Все хорошее требует сложности, а сложность требует затрат значительного количества времени, когда вы оперируете временными диапазонами длиной в нано- и микросекунды.
Но с другой стороны то, что очень простые стратегии являются быстрыми, имеет неоспоримые преимущества. Каждая трейдинговая фирма через простую логику знает когда поток заявок на одной бирже или в скрытом пуле разбалансирован по отношению к остальной части рынка. Извлечение преимуществ из этого дисбаланса – вот, что делают лучшие HFT-фирмы, а если эти HFT-алгоритмы начинают извлекать преимущества из вас, вы очень быстро вылетите из этого бизнеса.
Так что когда сталкиваются с выбором между созданием надежной, стабильной стратегии, которая поставляет хорошую ликвидность, или просто самой быстрой из возможных более-менее адекватных стратегий, то всякий раз побеждает скорость. Как моряки, которые выбрасывают ценные товары с лодки, чтобы двигаться быстрее, HFT-фирмы отказываются от всех остальных полезных вещей, которую привносят компьютеры в финансы, чтобы использовать только самые основные и бесполезные части, поскольку так создаются самые надежные доходности.
Таким образом, если вы думали, что HFT станет более качественным и стабильным, из-за того, что мы узнаем все больше и создаем лучшие программы, то подумайте еще раз. Поскольку мы приближаемся к времени торговли, занимающей наносекунды, то ситуация с целостностью рынка будет становиться только хуже.
Автор: Matthew Kolbe
Комментарии:
Intro: кстати наносекундами пока еще никто не оперирует
это не имеет смысла на данный момент, хотя инстурменты с такой точностью уже появляются
robomakerr: >а сложность требует затрат значительного количества времени
Не проблема же сделать аппаратную обработку, и всё будет решаться за десяток тактов. Все равно это не алготрейдинг, а инсайдинг, эксплуатация не интеллекта, а толщины кошелька 🙂
Intro: >Не проблема же сделать аппаратную обработку, и всё будет решаться за десяток тактов.
Не проблема? Вы пробовали? =)))
robomakerr: В смысле трейдинга — не пробовал, а если вообще, то года три разрабатывал аппаратуру передачи данных на FPGA )
Intro: И прям так легко засунуть логику в плис? Не матлабовским транслятором или его альтернативами, а нормально, чтобы был выигрыш по скорости?
robomakerr: В каком смысле «засунуть»? ) Про Матлаб я не в курсе, по старинке схемы рисовал. А вообще там языки программирования есть — VHDL и т.п., и соответственно компиляторы для этих языков, которые сам же производитель плис и поставляет. На языке описание логики удобнее делать.
Но вообще прелесть в том, что операции которые процессор делает последовательно, на плисе можно сделать параллельно, т.е. одновременно. Например, перемножить два массива — на процессоре нужно делать цикл с перебором, а плисе можно (при необходимости) сделать это за пару-тройку тактов. Но если задача требует строго последовательных действий, то и особой необходимости в плис нету. Тогда проще сделать устройство в виде платы с сетевым интерфейсом и процессором, в котором крутится чисто одна прикладная задача без всяких Windows и т.п. ненужных обвязок.
Intro: RTOS тобишь. Но и частота плисок сильно меньше процов современных.
robomakerr: Ну RTOS это для удобства и ускорения разработки, а я в большинстве случаев все функции сам писал, не люблю дополнительные прослойки 🙂
Частота — так сотни МГц это неплохо, учитывая объем действий, которые они могут всего за 1 такт выполнить ) Всяко быстрее гигагерцев, которые расходуются попусту.
Intro: Это на что ж попусту расходуются гигегерцы в ртос или задрюканных линухах с парой чудом выжившых системных демонов? =)
robomakerr: Ну как на что) на саму ОС, ее сервисы, на переключение задач. Но на ртос я и не гоню, они еще ничего. Я тут недавно попытался на древний комп XP поставить ) И целых 900 МГц ушло в никуда — визуально можно следить, как окна по частям рисуются )))
P.S. Зафлудили статью, надо было в чате трещать )))
Intro: На память потомкам. В винде трудно отследить, в линухе проще. Время переключения задачи задается, хотя и не всегда так как нужно, да.