[Перевод - recovery mode ] Однажды в HFT-компании…

Личная история трейдинга, все совпадения случайны.
image
Я начал свою карьеру в HFT в австралийском филиале одной из крупнейших американских трейдерских компаний в качестве программиста на C++. В первый день меня встретил офис с огромными окнами с видом на сиднейскую гавань, на одном из которых было написано фломастером »< 2ms”. Это было главной задачей для дюжины разработчиков, но, пока что, не для меня. Итак...


Первоначальный шок

Один из ребят предложил идею торговли опционами на австралийской фондовой бирже (ASX), а точнее — опционными спредами и их комбинациями с обязательным хеджированием. Ему нужно было нечто, что могло бы справиться с кучей запутанных правил торговли и быть интегрировано с используемой нами торговой платформой, которая называлась Orc. Это были ранние двухтысячные и я написал для него свое решение на VB6 под Windows 2000. При этом я использовал C++, Boost и многопоточный парсер Spirit для интеграции с Orc. Последний рассчитывал биномиальные или триномиальные деревья для оценки американских опционов на бирже ASX по требованию. Для моего кода расчета цены я использовал чужой код на VBA, построчно переписанный на C++.

Однако, Orc не всегда вычислял цену по запросу, часто он использовал кэширование. Если исходные параметры оставались прежними, Orc просто возвращал цену из памяти, вместо того, чтобы пересчитывать её заново. Эта платформа была слишком медленной чтобы побороть конкурирующий софт от Timber Hill«s, самую быструю торговую систему на тот момент. Она казалась слишком убогой, чтобы соревноваться с другими по производительности, вне зависимости от того, какие трюки я с ней проворачивал. Однако, с большим многомерным кэшем цен опционов (отсутствующие значения получались из него простой интерполяцией), постоянно обновляемым в несколько потоков кодом, которых был написан на C++, неожиданно мы смогли совершать те сделки, которые были недоступны ранее.

При изменении процентной ставки или кривой волатильности в Orc Trader, мой кэш цен начинал заполняться снова. Конечно, это решение не было оригинальным. Впервые я прочитал о кэшировании цен опционов в старой статье несколькими годами ранее. Также как в современном микропроцессоре с внеочередным исполнением ты можешь догадаться о следующих вычислениях, которые еще только может потребоваться сделать в будущем. Рыночные цены дискретны. Запомните, самые быстрые вычисления — те, которые не нужно делать. Следующей стала идея о том, что побить нулевую задержку тяжело, но не невозможно. Этот странный вывод о предсказании будущего я сделал из того, что самое быстрое сообщение — это то, которое не придется отправлять. По-моему, это даже более важно.

На мой взгляд, лучшая архитектура — это отсутствие жесткой архитектуры. Это, возможно, выглядит немного смешным, но является чистой правдой в случае HFT. Неструктурированный код мгновенно превращается в legacy, если вы не уделяете внимания архитектуре системы. Поскольку на самом деле преждевременная оптимизация является основой всего, выгоднее не развенчивать общеизвестные компьютерные мифы и позволить своим конкурентам спотыкаться на них.

Мой хак для платформы Orc Trader был не идеальным решением, но он обрадовал нескольких людей сделками, которые раньше были невозможны. Они на самом деле были счастливы, когда своими глазами увидели эти сделки. Однако, в целом это был только незначительный успех. Он преобразился в сотни ручных правил поиска сделок, окупая своим трейдингом лишь затраты на оператора. Но, по крайней мере мне было весело.


Сосредотачиваемся на »< 2ms”

Давайте вспомним про условие »< 2ms”, записанное на оконном стекле. Я написал статью, предлагающую более быстрый и более сложный способ достичь еще меньших задержек. Команда из трех программистов, включая меня, должна была реализовать его. Первый выбор пал на корейскую биржу. В этом проекте не было никакой необходимости в кешировании цен, поскольку модель расчета цен европейских опционов не намного сложнее простой интерполяции, даже в нескольких измерениях.

В это время процессоры с частотой 2–3 ГГц только начали появляться. Наша метрика производительности была несколько неправильной — мы в основном измеряли задержки внутри нашего кода, нежели те, которые лежат внутри операционной системы (которые на самом деле гораздо больше.) Это еще работало, когда данные поступали с миллисекундными интервалами, поскольку в те времена сетевой стек тратил на обработку пакета от 50 до 100 микросекунд. Главное, что тут нужно запомнить — когда процессор может исполнять более миллиарда операций в секунду, то в эти две миллисекунды влезает свыше миллиона инструкций. Честно говоря, это очень-очень плохой код, если этот миллион инструкций уходит на простые расчеты цен. Если принятие решения о сделке занимает у вас миллион шагов, увольняйтесь немедленно. Тут каждая наносекунда важна.

Оказалось, что меня прикрепили к не очень слаженной команде и как новый сотрудник, я должен был вести себя осторожно. В отделе разработки нас было всего трое. Один из членов команды (который на самом деле был отличным программистом) видимо, устал и стал тратить всё рабочее время на игры и форумы про видеоускорители. «Мистер GPU» раньше написал ключевые библиотеки компании для многопоточности, и они были неплохи, хотя и страдали проблемами с дизайном. Вся синхронизация была сделана через мьютексы и любая операция требовала блокировок. В итоге я снова пришел к использованию C++ библиотеки Boost. «Мистер GPU», по всей видимости, не получал удовольствия от проекта и выглядел участвующим в какой-то забастовке. Он, несомненно, был раздражен необходимостью работать над моей идеей. Другой парень был менее способным, но все же минимально компетентным. Обычно он очень много ел и постоянно уходил в переговорную комнату, чтобы посмотреть там очередной фильм на DVD.

Но нам нужно было как то справляться, чтобы одолеть эти две миллисекунды. Как оказалось, мне нужно было написать больше кода, чем ожидалось — приходилось несколько раз оставаться допоздна. «Мистер GPU» сделал работу по интеграции, в то время как «Отстраненный чувак» не сделал вообще ничего. В результате наша новая система показывала задержки чуть менее пяти микросекунд. Мне казалось, что это был огромный успех. Однако, эта цифра не учитывала сетевые задержки. Определенно, они сейчас имеют гораздо большее значение, чем месяц назад.

Один из других сотрудников поздравил меня. От него я узнал, что основная часть айтишников (включая него) считала это невозможной задачей. Видимо, они надеялись, что я провалюсь. Перемены, которые я принес, не встретили широкого восторга, но я получил небольшой бонус без значительной прибавки к зарплате.

Раньше я предполагал остаться на этой работе лет на двадцать, особенно после пузыря доткомов. Но сейчас для меня явно наступило время двигаться дальше.


Поиск новой работы

Я списался с несколькими HFT-компаниями и поделился своими мыслями о том, что можно сделать. Одна неплохая голландская трейдинговая компания выслушала меня очень внимательно, но ничего не предложила. Годы спустя я узнал, что их команда начала реализовывать нечто вроде того, о чем мы говорили на интервью, на следующей же неделе после него. Я слышал, что подход оказался успешным. Они назвали его «implied base method», в котором все сводилось к предсказанию теоретической цены фьючерса или базового актива. Мне нравится их название для моего метода, несмотря на то, что оно выглядит карго-культом. Ну, это тот способ, которым финансовые компании обычно ведут дела. Несмотря на обман с их стороны, я был польщен.

Затем я переговорил с одной австралийской компанией с командой из около дюжины разработчиков, сосредоточенной на трейдинге на бирже ASX. Их платформа была в основном даже медленнее Orc Trader, затрачивая многие миллисекунды на расчеты. Я напросился на встречу с главой компании, который был гораздо успешнее и гораздо моложе меня. Он был одним из ребят со сверхвысокой зарплатой, чей доход должен был быть задекларирован по австралийским законам.

Их бизнес выглядел не до конца «чистым», и он предупредил меня, что заработанные ими деньги за границей не всегда можно юридически легко вернуть в материнскую компанию. Переговоры с этой фирмой были пустой тратой времени — я не хочу быть черной шляпой. Серой еще куда ни шло. Поиск пробелов в правилах — забавная игра, до тех пор, пока это этично. Однако, эти красные линии мы не должны пересекать. Нет никакого удовольствия в победе путем обмана, но, что более важно, ваша репутация имеет значение. Люди всегда недооценивают убытки от скандалов, и я не хотел рисковать.

Еще мне понравился один из инвестиционных банков, с представителем которого я разговаривал. Это был филиал большой конторы с Уолл-Стрит. Я уже успел отработать несколько лет в такого рода среде. Входной порог казался довольно низким — они не хотели зарабатывать деньги, они просто хотели создать биржевой оборот без каких-либо затрат, поэтому их финансовый департамент мог петь серенады этому филиалу. Это казалось мне хорошим вариантом и я был уверен, что они не будут возражать против создания оборота, а также против получения дополнительной прибыли. Прибыль редко вызывает жалобы.

Хорошим моментом в моей предыдущей фирме было то, что они могли уволить даже зарабатывающих деньги сотрудников. Кто-то нарушил правила, сделав несколько сделок, которые не были санкционированы. Они принесли компании деньги и я был впечатлён тем, что их всё равно уволили за нарушение правил. Такая правильная позиция менеджмента встречается крайне редко, особенно в финансах.

Затем довольно неожиданно возникла другая возможность.

Однажды я обедал с парнем, которого знал по курсу computer science в университете Тасмании, который теперь работал на ITG. Он предложил мне поговорить с ITG, так как они занимались частным трейдингом. Для меня это было новостью — я думал, что они просто брокеры. Я встретился с их генеральным директором по Азиатско-Тихоокеанскому региону и он подробно рассказал про их арбитражную платформу, которая работает с акциями, номинированными в USD и CAD. Затем я познакомился с генеральным директором по США Рэем Киллианом, когда он был в поездке в Австралию. Встреча прошла хорошо, и, похоже, больше не оставалось преград для того, чтобы развивать высокочастотный трейдинг в ITG. Генеральный директор Азиатско-Тихоокеанского региона плюс их председатель, который также был членом правления включенной в список NYSE компании ITG Inc., в конце концов повёз импровизированный бизнес-план и расчеты рисков в США на заседание правления.

Что произошло дальше, я не знаю — мне рассказали три совершенно разные версии в течение следующих нескольких лет. Согласно одной из версий, совет одобрил бизнес-план, но Киллиан отыграл всё взад. Согласно другой версии, некоторые члены правления не одобрили проект. По третьей версии, бизнес-план вообще не дошел до членов правления. Я не знаю, какие версии были ошибочными (возможно, все сразу), но это не имело значения. Ребята из ITG решили обойтись без своего работодателя и инвестировать личные средства. Это была не совсем та работа, которую я искал, но если бы бизнес пошел хорошо — я смог бы заработать около четверти акций новой компании через опционы, полученные в течение нескольких лет по вестингу. Это было похоже на победу.


Рождение HFT-компании

Таким образом, получив инвестиции в размере 1,5 миллиона австралийских долларов, пришло время снова начать работать в одиночку с ноутбуком в офисе. Я настроил несколько серверов и рабочих станций, установил 64-битный SuSE Linux, нанял трех программистов — и часики, отмеряющие оплаченный инвесторами период, начали тикать. Оказалось, что я не очень хороший системный администратор Linux. Вскоре я устал делать плохо админские задачи и поручил их фрилансеру. Теперь нас было четыре с половиной человека. Но оказалось, что 64-битный SuSE Linux, особенно на процессорах AMD с их шиной Hypertransport, не был готов к нагрузкам в прайм-тайм, поэтому мы вернулись к 32-битной сборке RedHat/CentOS. Это было мудрое решение «мистера Сисадмина», немного продвинувшее нас вперёд.

Через четыре месяца мы окинули взглядом перспективу. Мы должны были выбрать — запускаться у нас на ASX или идти в Корею. Три корейские биржи, KSE, KOSDAQ и KOFFEX тогда как раз сливались в единую Корейскую биржу, KRX. Мы выбрали Корею, хотя и бизнес и техническая среды там были более сложными и рискованными. Однако, возможностей там тоже было больше, плюс более простая математика в моделях ценообразования и небольшое количество инструментов обещали более легковесную кодовую базу.

Тогда же произошла одна забавная вещь. При создании новой системы вы обычно пытаетесь составить некоторые соглашения об именах, чтобы облегчить себе жизнь. Я решил использовать коды ISO или их часть для стандартизации. Однако из-за слияния корейских бирж еще не было назначено кода ISO для новой биржи. Я связался с ответственной группой ISO, которая оказалась единственным парнем с excel-таблицей, сидящим где-то в Европе. Он решил, что новым кодом для объединенной биржи будет XKOX. Я ойкнул и написал ему, что это сочетание не очень благозвучно звучит по-английски. Возможно, лучшей идеей будет использовать очевидные коды KRX или XKRX? Мы посмеялись и так XKRX стал новым кодом ISO. Так что теперь я могу утверждать, что именно я создал код ISO для объединённой корейской биржи.

В те давние времена в Корее трейдеры, даже высокочастотные, не могли получить прямого доступа к бирже. Вы должны были пройти через шлюз брокера и использовать их специфичный API для подключения. Не было вообще никакой коллокации. Среди клиентов возникала большая разница в задержках, не контролируемая брокером, просто из-за разного местоположения и технологии взаимодействия. На бирже KOFFEX торговались фьючерсы и опционы. Сама KOFFEX располагалась в Пусане, портовом городе на расстоянии чуть больше трёхсот километров от Сеула. Производные контракты на индекс KOSPI 200 имели маленький номинал, но большой размер лота. Из-за этого они были самыми оборотистыми производными инструментами в мире с десятикратным отрывом от остальных. Контракт евро/доллар на CME был номером два, а опционы на KOSPI 200 были номером один. Этого оказалось слишком много для KOFFEX, поэтому основные торги этими инструментами велись от их имени на бирже KSE в Сеуле. Стало быть, всё, что нам было нужно от биржи, располагалось в одной точке в Сеуле, хотя сама она была основана в Пусане.

К этому моменту я уже знал, что сетевой стек вносит самые значительные задержки, которыми я смог управлять в нашей новой реализации. Я нашел аппаратный конвертер протокола Ethernet в InfiniBand, который вносил задержку в 3 микросекунды. Он был выполнен в виде модуля, который подключался к коммутатору TopSpin InfiniBand. Шина Hypertransport (HTX) от AMD, альтернатива PCI Express, была более современной, что обеспечило меньшую внутреннюю задержку. Я купил несколько сетевых карт Pathscale HTX Infinipath и материнских плат с поддержкой HTX (они тогда существовали только в альфа-версиях, например, у одной из них был серийный номер 0×0000045!), собрал все эти разношёрстные детали в большой корпус и получил недешевый, но чрезвычайно быстрый сетевой стек, которым я был очень доволен. Он выглядел, конечно, несколько неуклюже и топорно, но зато был одним из самых конкурентоспособных в мире. Еще в течение нескольких лет обычные сетевые карты не могли сравниться с моей конфигурацией.


Выбор брокера

После этого мы отправились в Сеул, чтобы найти брокера и место в дата-центре. Я пошёл с одним из инвесторов, человеком по имени Bubble, который затем стал нашим сотрудником. Сначала он разрывался между между ITG и HFT, но позже перешел полностью в наше распоряжение, поскольку и генеральный директор, и председатель по АТР, а также другие сотрудники ITG были нашими инвесторами. Именно ему поручили забронировать отель в Сеуле. Оказалось, что он выбрал мотель с почасовой оплатой, соблазнившись очень живописным художественным описанием, скрывшим истинную картину — захудалые, грязные, комнаты с облупленным кондиционером, зараженный вирусами компьютер. Не очень хорошее начало. Несколько брокеров заезжали к нам и выражали удивление по поводу нашего района. Неловко, но смешно. Поездка получилась довольно продуктивной, мы заключили потрясающе невероятную сделку.


Хорошая сделка

Контора Muppetz Securities предложила нам услугу DMA. У большой фирмы, из которой я уволился, не было прямого доступа. Перед этим я приценивался к системе от HP/Compaq/Tandem на старой работе, поскольку это был один из способов попасть во внутреннюю сеть конкретного брокера, чтобы стать ближе к бирже. Это стоило около 500 000 долларов США за небольшую коробку, созданную в рамках специальной внутренней программы разработки приложений от HP. Соблазнительно, но не для бизнеса, который доживает свои последние дни. Предлагаемая же нам сейчас услуга DMA была реализована на базе протокола Х.25, что было тогда для меня новаторским. Эта сделка с брокером была довольно дорогой, но, поскольку настоящий прямой доступ был неслыханным прежде явлением, я подписал контракт через несколько дней.

В то время я познакомился с «мистером Ри» из местной компании RTS, который проездом был в Сеуле, разбираясь со своими делами. Мы помогали друг другу в поисках брокеров в Корее. Мы использовали внутреннюю информационную систему RTS в качестве резервного хранилища для наших сделок, чтобы акционеры могли сравнить наши данные с теми, что транслируют независимые поставщики. Вы можете подумать, что логичным выбором была бы платформа Orc. Я был знаком с Orc, и на этом этапе он имел самый удобный пользовательский интерфейс. Тем не менее, RTS имел гораздо более удобный API и стоил дополнительных 10% от ежемесячных затрат.

Вернувшись в Сидней, я посмотрел на все это дорогое оборудование под InfiniBand. Теперь это было бесполезным — мы собирались переходить на X.25. Неожиданный, но приятный поворот событий. Затем я получил сообщение от брокера Muppetz Securities о том, что сделка была отменена. Подписанный контракт был бесполезен.

Некоторое время спустя я узнал, что Muppetz пошел в большую контору, в которой я работал прежде. X.25 был очень ограниченным и редким ресурсом. Зачем отдавать его какой-то маленькой стартаперской HFT-фирме, которая ещё даже не торгует, когда вы можете пойти на уровень выше и заключить сделку с реальными трейдерами? Это был умный ход, хотя и неэтичный.

Оказывается, выражение «нет» ослабило мозг некоторых брокеров. Я полагаю, что очень многие HFT-фирмы думали о том, как получить прямой доступ. Должно быть, пришло время. Однако, аннулирование контракта с Muppetz привело к другим, гораздо лучшим предложениям. Одно от мистера М., настоящего джентльмена и просто потрясающего парня с хорошей командой. Его цена была намного лучше, чем у Muppetz и хотя технологически это подключение являлось брокерским доступом, но расположение было потрясающим. Его точка подключения была прямо в здании биржи!

Я понятия не имел, что там можно торговать. Оказывается, у этой фирмы была пыльная, простая комната без кондиционера в пристройке к старому зданию KRX. Это старое здание, в отличие от новой постройки, недавно возведенной на территории кампуса, было соединено коридором с главной башней, где располагался движок биржи в нескольких этажах под землей. Эта комната использовалась как место для аварийных терминалов. Там стоял маленький стол в узкой комнате с терминалами со старыми CRT-мониторами. Если бы всему миру пришел конец, нужно было послать туда сотрудников, чтобы ввести ключи. Эта комната не была приспособлена для серверной инфраструктуры. Будет ли нам интересна эта маленькая отстойная комната, которая является самым лучшим, что они могли предложить на данный момент? Я пытался скрыть своё волнение, отвечая «да».

Решение Muppetz на базе X.25 было технологически более быстрым, но точка подключения была в здании снаружи кампуса KRX, что вносило дополнительную задержку. Кто-то собирался заплатить большую премию за решение, которое не было таким крутым, как то, к которому мы только что пришли.


X.25 и технологии

Реализация на базе X.25 в рамках биржевой инфраструктуры была интересной. Вы могли рассчитывать на линию класса T1 или E1 (биржа имела оба варианта и использовала их поочередно) от Koscom, главного технологического и сетевого провайдера KRX. Внутри линии выделялись виртуальные каналы на 64 килобит в секунду (kbps) по принципу чередования времени. Интересно, что из-за этого чередования, вы по сути имеете параллельный доступ ко всему каналу в одно и то же время. Брокер имеет ограниченное количество линий, но много параллельных (хотя и медленных) каналов.

Я провел небольшое тестирование и сперва купил сетевые платы стандарта X.25 у продавца в Великобритании. Достаточно популярные, достойные упоминаний, они казались вполне промышленного качества. Когда-то много лет назад я разрабатывал информационную систему для учета лизинга автомобилей в Ситибанке, и она использовала протокол X.25. Развлечение, которое мне доставила эта разработка, стало возможным только потому, что у меня была неудачная молодость в доинтернетные дни — BBS, FIDO, Z-modem, Y-modem, вот это всё. Большая часть времени в Ситибанке была посвящена ковыряниям с модемами и другим оборудованием, только для того, чтобы заставить всё это работать вместе. После этого всё было просто. Но не с этими сетевыми платами. Ни мы, ни поставщик карт не могли заставить их нормально работать. В конце концов, состоялся разговор на повышенных тонах и продавец просто перестал брать трубку. Затем мы купили несколько дешевых сетевых адаптеров у канадской компании Sangoma, которые сразу заработали очень хорошо.

В нашей пыльной рабочей комнате, мы поставили свою серверную стойку. Я пришел с собранными вручную серверами в сумке. Коммуникационных линий для нас еще не выделили. Канал до биржи появится немного позже, а сейчас нам срочно нужны были рыночные данные, чтобы подготовить и настроить нашу инфраструктуру. HFT требует много, очень много данных. Биржа решила эту проблему, пропустив витую пару по воздуху снаружи здания и заведя её через откидное окно в нашу комнату, которое мы должны были всегда держать открытым. Когда шел дождь, воды в комнату попадало чуть меньше, чем можно было бы ожидать. Витая пара подключена к модемам T1. Модемы, в свою очередь, подключены к последовательным портам. Гигантские разъемы X.25, наследие шестидесятых годов, торчат из наших плат Sangoma. Медленные биты — большие биты.

Вскоре подключили линию от биржи для отправки ордеров с еще более гигантскими ответными разъемами X.25. У нас были модули для работы с Postgresql (вскоре замененные на версии с плоскими файлами), торговый движок на C++, сервис для расчета волатильности и т.д. Вместо выделенных линий, как мы изначально договаривались, мы использовали обычные интернет-каналы. Мы взяли трех поставщиков, которые обещали географическую независимость и прописали маршруты для обеспечения избыточности. Гораздо дешевле, выше пропускная способность и более надежно, чем выделенные линии. Это было необычно в то время, но многие делают то же самое сейчас.


(Фаль)старт торговли

Через девять месяцев после запуска мы закончили тестирование. Никаких сертификаций от биржи тогда не требовалось. В то время это действительно была земля ковбоев. Мы начали торговать — по опционам было 85% исполнений! Это означает, что либо вы не можете верно оценить опционы, и кто угодно может продать вам контракты по плохим ценам, либо вы всегда первые в очереди и вы преуспеваете. У нас было в основном последнее.

Но мы не могли заработать денег.

Изначально наш план состоял в том, чтобы просто покупать «сочные» опционы и хеджировать их фьючерсами. Мы потратили почти миллион долларов на разработку платформы для этого, а остаток в полмиллиона оставался на брокерском счету как обеспечение для нашей торговли, мы не могли его трогать. Мы можем успеть схватить опцион, но вся прибыль испарится, если мы не сможем его правильно хеджировать. Мы постоянно работали над этим, и всё понемногу улучшалось, но проблема не была решена до конца. Я ночевал в офисе, а остальная часть команды также усердно работала. Производительность нашего торгового движка была недостаточной. Я поймал зубами пулю и переписал его за 72 часа непрерывной работы. После этого стало намного лучше, но мы нашли ошибку в новом торговом движке. Внутренние задержки приложений маскировали её, но она была заметна при внешних измерениях. Тред, который писал логи, потреблял кванты времени основного потока, и это стоило нам много времени. Правильное разрешение не было простым, поскольку нам пришлось бы выставлять глобальные флаги. Я просто решил назначить основному потоку приоритет реального времени с соответствующими понижением приоритетов остальных и… ура! — проблема исправлена. Хотя это было по сути костылём, мы получили стабильную задержку, измеряемую двузначным числом в микросекундах.

Получение кривой подразумеваемой волатильности (IV) всегда было искусством. В моей старой конторе трейдеры использовали ручной процесс аппроксимации IV, и каждые пять или десять минут или час они корректировали свою кривую в соответствии с рынком. Умный количественный трейдер в конечном итоге построил бы аккуратный и надежный автоматический процесс. Здесь я так же хотел, чтобы коррекция IV была полностью автоматизирована, но выбрал другой подход. Использование квадратичных кривых для оценки меня не устраивало, поскольку это часто приводило к неудобному разрыву в точке выхода опциона в деньги. Мы использовали более подходящие сплайны из библиотек языка R, добавили некоторые небольшие медианные фильтры и некоторые другие статистические фокусы. Теперь мы рассчитывали и публиковали кривую IV каждую секунду. Позже мы даже перешли на четверть- или полусекундные интервалы, но секундных было достаточно. Это несколько улучшило ситуацию и наша оценка опциона, казалось, была очень близкой к реальности. Однако, как правило, мы не зарабатывали денег (или зарабатывали очень мало.) Время и текущие расходы убивали нас, а не торговые потери.

У нас был ещё один примечательный прокол. Мистер Л. внес некоторые изменения в механизм хеджирования фьючерсами, которое мы выкатили в прод. В ту же секунду, как мы включили систему, она мгновенно купила и продала по рынку около тысячи лотов фьючерсов за несколько секунд. Мы должны были убить его немедленно. Компания могла умереть прямо тогда, но нам повезло выскочить из позиции.

Мы пытались, но всё равно не могли заработать. И это были уже не задержки. Цены не были страшными. Наш механизм хеджирования фьючерсами был просто недостаточно эффективным. У нас не было капитала для «рисования» уровней и использования их для улучшения нашего финансового результата. Мы пытались делать пассивный маркет-мейкинг на фьючерсах перед тем, как торговать опционам, но это всё было неважным. Прошло девять месяцев, вынашивание этого ребёнка было завершено и сон в офисе давал всё меньше пользы. Пришло время молиться.


Стратегия Zero

Когда вы торгуете на бирже, считается, что вам повезло, если вы получили в свою пользу часть спреда. В то время в Корее опционы ATM и дешевле, имели размер тика 0.01 ценового пункта. Эти 0.01 стоили около доллара с одного контракта. Торгуя высокочастотным роботом сразу сериями опционов, если вам повезёт, то вы выходите из сделки в среднем с десятью или двадцатью центами. Одной из моих целей на этой работе было превзойти те показатели оборота, что я видел ранее. Мне вспоминается, что рекорд на прошлом месте был 1.13 млн. контрактов в день. Если бы вы могли проторговать миллион опционов и взять 10 или 20 центов за каждый, вы были бы очень счастливы. В теории, нет разницы между практикой и теорией. Осознать это оказалось для меня довольно трудным.

Затем я вспомнил разговор одного из трейдеров, мистера Б., с кем-то на кухне в старой фирме (кстати, в конечном итоге он и возглавил фирму.) Мистера Б. спросили, если он купил по хорошему торговому сигналу и получил прибыль, почему он сразу не закрывает позицию? Он ответил, что если бы все было так просто, он зарабатывал бы намного больше денег, чем сейчас. У нас были отличные показатели задержек с хорошим расположением и прямым X.25-каналом. Технология работала, модель оценки давала верные цены. Может быть, мы могли бы сделать невозможное?

Я поговорил с акционерами и сказал им, что мне нужно еще 25 000 AUD, чтобы пережить месяц и попробовать что-то новое. Основной инвестор выдал кредит в размере 25 000 AUD. Мистер Ф., один из первоначальных сотрудников, закодил то, что мы называли стратегией Zero. Все было просто — не иметь направленной позиции, ждать появления в стакане опциона, чья цена отличается от нашей оценки хотя бы на тик. Затем бить по нему. Ждать. Потом сбросить его и взять тиковую прибыль. Могло ли это сработать?


Мы будем жить!

Наш месячный доход от трейдинга стал измеряться здоровыми шестью знаками. Стратегия Zero сработала. Мы увеличили торговый капитал, чтобы можно было купить 500 или 1000 опционов ATM, а затем развернуться и сбросить их обратно. Здесь нет умного маркет-мейкинга. Мы просто были агрессивным тейкером.

Быть тейкером на рынке может быть более проблематично, чем мейкером. Как маркет-мейкер, вы должны уходить с пути рынка, когда он идёт против вас, но вы должны быть достаточным стоиком, чтобы не становиться слишком взбалмошными и не терять ценное место в очереди. Как правило, ваш ценовой порог, после преодоления которого вам нужно убегать из стакана для предотвращения убытка, меньше, чем у агрессора, который использует торговое преимущество. Похоже на странную игру, в которой агрессор фактически имеет гандикап по задержке, ибо он готов двигаться только после того, как мейкер уже сделал свой ход, при прочих равных условиях. Или это похоже на 100-метровый спринт, где у мейкера есть преимущество в 50 метров, и вы должны как-то преследовать его. Такая аналогия в значительной степени описывает стратегию Zero. Прямого подключения через X.25 проводами, проходящими через окно и расположения на территории кампуса было достаточно, чтобы преодолеть наивность нашей стратегии в те первые дни. Фортуна улыбнулась нам.

Было своеобразным развлечением наблюдать за тем, как деньги как бы сами по себе появляются на банковском счете после получения прибыли. Это было немного сюрреалистично. Мы торгуем индексными опционами в Корее, а австралийские доллары появляются на банковском счете в Сиднее.

Немного заработанных денег ушло на домашний кластер в нашем недавно арендованном офисе на Hunter-стрит в 200 квадратных метров, много маленьких компьютеров в формате mini-ITX на дешевом стеллаже из хозяйственного магазина, платы оперативной памяти, источники питания ATX и сетевой коммутатор. Моделирование подразумеваемой волатильности, историческое тестирование и сама стратегия — все улучшилось с появлением нескольких сотен дополнительных ядер.

Следующим шагом в нашем трейдинге стал переход от стратегии Zero к полноценной торговой стратегии с хеджированием. Вместо того, чтобы пытаться хеджировать позицию через фьючерсы, мы обратились к хеджированию другими опционами. Мы не хотели переносить позиции через ночь, но были рады удерживать их в течение дня. Стратегия Zero держала суммарную экспозицию в несколько секунд в течение для. Новая стратегия заставила нас держать позицию весь день. Эта идея сработала очень хорошо. Около двух третей рынка KRX составляли опционы с низкой дельтой и довольно статичным ценообразованием. Не было необычным видеть более миллиона лотов на бидах или асках в крошечных опционах. Однако, купите этих дешевых опционов и вам будет весьма непросто сбросить их до закрытия рынка. Поэтому мы просто сосредоточились на опционах с более узкими спредами и с большими дельтами, с тиками размера 0.01 с ценами ниже 3.00. Они составляли около трети среднего объема рынка. В конечном итоге мы выросли до типичной доли в 6–7% рынка, а иногда и более 10%. Поразительно, что мы проторговывали около трети объема того рынка, на котором сфокусировались. Нормальный такой кусок пирога. Преодоление прошлого рекорда оборотов состоялось.


Разбираясь с проводами

Идея первого значительного хака пришла после рассмотрения витой пары, которая была проложена через окно. Модемы для линий T1 и E1 передавали этот сигнал через неуклюжие соединения, ведущие в еще большую коробку, которая затем подключалась через огромные разъемы к последовательным картам. Немного исследований и родился очевидный план. Я купил несколько новых карт Sangoma, в которые подключили витой парой T1/E1-каналы от NetOptics и установил эту сборку в Корее. Когда меня спросили, для чего это — я ответил, что для мониторинга состояния линии и измерения задержек. Это утверждение было технически верным, но неполным.

Новые карты Sangoma поддерживали смешанный режим, при котором карты просто принимают все биты из канала. Я начал их анализировать и понял, как выглядели потоки. Виртуальные каналы X.25 были сгруппированы в каналы для рыночных данных. Они имели склонность идти последовательно друг за другом. Были еще другие группы каналов для опционов пут, колл и фьючерсов. Мне пришлось самому разбирать слой HDLC, но вскоре у меня были декодированные пакеты, соответствующие каналам KRX. Такой обход модема и сетевого устройства экономил около миллисекунды.

Это не было

© Habrahabr.ru