mariodo
mariodo личный блог
25 августа 2019, 12:49

Техническая сторона алготрейдинга (квантов)

Добрый день!

Интересует, каким образом компании, занимающиеся алготрейдингом, обеспечивают быструю скорость обработки своих ордеров?

На данный момент наткнулся на проблему масштабирования  (есть 1 стратегия и 200 аккаунтов).

Задача: произвести одновременный вход по всем аккаунтам (т.е должны зайти в одно время, по одной цене) <= небольшое отклонение допускаю в силу ограниченной пропускной способности стакана в моменте.

Начал упираться в железо (либо, уход на более низкие языки программирования) и получается так, что, если масштабировать систему до 100 / 200 / 300 и т.д аккаунтов — стоимость железа увеличивается на безумные суммы.

(работаю с крипто-биржами).

Хочу понять, как в традиционных финансах реализована техническая сторона алготрейдинга, какое железо используется, какие метрики по итогу есть. 

Буду признателен, если кто-то поделится личным опытом или полезными ссылками на эту тему.

27 Комментариев
  • Дмитрий Новиков
    25 августа 2019, 13:04
    Колокация
  • все крутые конторы расположены в непосредственной близости от биржи, их сервера просто забивают потоком ордеров других участников. Оборудование играет не последнюю роль, а может быть и первую.
    • Cristopher Robin
      25 августа 2019, 23:30
      Андрей Андреичъ, господи, что ты порешь
  •  прочти статейку для разнообразия
    www.theguardian.com/business/2014/jun/07/inside-murky-world-high-frequency-trading
  •  фильм по теме «Операция колибри»
    filmitorrentom.org/thriller/operaciya_kolibri_2018_skachat_torrent
  • МХ
    25 августа 2019, 15:21
    Как сейчас решается задача?

    Чтобы быть ближе к бирже насколько это возможно, достаточно арендовать 10-баксовый VPS в облаке Amazon.
    • Ilya
      25 августа 2019, 17:36
      МХ, как показывает мой скромный опыт 10 баксовые впс еле шевелятся. вроде памяти и ядер больше чем на моем старом ноуте под диваном пылящемся, а работают куда медленнее. но может я пока чего не понял. наверно расширюсь позднее, понаблюдаю еще месяцок.
      • МХ
        25 августа 2019, 17:51
        Ilya, если задача состоит в одновременном выставлении ордеров то должно за глаза хватать.
    • Дмитрий Овчинников
      09 сентября 2019, 20:51
      МХ, 
      10 баксовый дает ужасающее время исполнения из-за тупости пересчета котировок роботами в момент повышенной волатильности рынка. 
      Устриц ел ©
      • МХ
        09 сентября 2019, 20:56
        Дмитрий Овчинников, время исполнения чего?  Я выше написал про одновременное выставление ордеров. Про исполнение ордеров — это уже к бирже, от стоимости вашего ВПС это время никак не зависит.
        • Дмитрий Овчинников
          09 сентября 2019, 21:05
          МХ, 

          Вот это из лога терминала- время исполнения:

          2019.09.09 15:05:47.076 Trades 'XXXXXX': order #108962573 sell limit 6.00 / 6.00 BR-10.19 at 62.15 done in 9.997 ms

          А это пинг:

          2019.09.09 14:39:33.392 Network 'ХХХХХХ': ping to current access point Access Server IX is 3.02 ms [next point Access Server VI is 3.00 ms]

          Так вот у ВПС от Амазон, разница между пинг и исполнением будет не 3 раза, а 30. Или 300.
          • МХ
            09 сентября 2019, 21:24
            Дмитрий Овчинников, 
            Я понял, вы под «временем исполнения» подразумеваете раундтрип + время необходимое бирже для исполнения вашей заявки. Тут действительно, чем дольше пинг тем дольше «время исполнения» (в вашей терминологии). Но если заметили, в посте речь идёт о криптобиржах, большинство из них используют облачные мощности того же Amazon (европейские, японские, американские) или Alibaba Cloud, Huawei Cloud (китайские и гонконгские), и пинг с арендованной 10-баксовой впски до «биржи» часто бывает даже меньше 1ms.
            • Дмитрий Овчинников
              09 сентября 2019, 21:58
              МХ, 
              вопрос не в пинге, а в скорости обработки информации и выдаче ордеров терминалом, установленным на маломощный ВПС с разделением ресурсов.
              По моему опыту работы с MOEX с терминала, размещенного в Amazon, достичь приемлемого времени исполнения не получилось.
              Про криптобиржу ничего не скажу, информацией не владею и не интересуюсь.

              • МХ
                09 сентября 2019, 22:23
                Дмитрий Овчинников, вы невнимательно читали топик. Вопрос заключается в следующем — "Задача: произвести одновременный вход по всем аккаунтам (т.е должны зайти в одно время, по одной цене". Т.е. у человека на бирже 200 аккаунтов, надо синхронно выставить ордера по одинаковой цене. Обрабатывать например, ничего не надо.
                Если вы торгуете на MOEX и достичь приемлемого времени не получилось — то это именно потому, что пинг слишком высокий. Сервера MOEX в Москве, а ближайшая точка присутствия Amazon — в Ирландии например. Или вы вообще не задавались таким вопросом, как регион размещения ВПС и по умолчанию подняли её в Америке. Вот ваш пинг вырос с 3 мс до 300.

                • Дмитрий Овчинников
                  09 сентября 2019, 22:33
                  МХ, 
                  а я отвечаю вам, а не топикстартеру. 
                  И отвечаю вам на ваш комментарий, что ВПС от Амазон за 10 USD решает.
                  Так вот ДЕШЕВЫЙ ВПС от Амазон или от любого другого провайдера не решает и совсем не из-за пинга, а из-за недостатка вычислительной мощности.

                  • МХ
                    09 сентября 2019, 22:46
                    Дмитрий Овчинников, 
                    а какая вычислительная мощность требуется для отправки готового ордера на биржу, по вашему? ))

                    Ilya, если задача состоит в одновременном выставлении ордеров то должно за глаза хватать.

                    Вот мое утверждение. Вы с ним не согласны чтоли?
  • yurikon
    26 августа 2019, 15:55
    У вас один поток формирует и отправляет ордера по всем аккаунтам на биржу?
    Про какую биржу идет речь?
      • yurikon
        27 августа 2019, 07:38
        mariodo, отправка 1 ордера через HTTP на Битмекс занимает примерно 0,5 секунды. Если вы делаете «синхронно» — последовательно  отправку 100 ордеров — это 50 секунд. Мощность железа тут ни причем. Расстояние до биржи поможет сэкономить вам не больше 50-100 мсек.
        Сделайте, чтобы одним ордером занимался один поток. Также учтите, что там есть Rate Limit на кол-во запросов к бирже с одного IP. Поэтому вам надо дробить коннекты по разным адресам либо договариваться с биржей.
      • (1:10) || algo
        30 августа 2019, 23:48
        mariodo, все 200 аккаунтов на одной бирже? Какой в этом практический смысл? Почему нельзя все сделать в пределах одного аккаунта?
  • day0markets.ru
    26 августа 2019, 16:18
    если у вас отправка ордеров синхронная, то надо, конечно, сделать асинхронной и разместиться поближе к бирже. но, вообще, схема выглядит «серой»

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн