Мой рабочий проект - это создание трейдингового бота, с помощью которого происходит увеличение денег. С точки зрения физического мира - это некая машинка/станок/программно-аппаратный комплекс, который в процессе своей работы увеличивает количество денег.
В этой машинке увеличение денег реализуется разными способами выполняющими разные алгоритмы. Для заземления будем рассматривать один конкретный алгоритм в сфере крипты, все остальные алгоритмы рассматриваются схожим образом, хотя и будут некоторые важные отличия, особенно если рассматривать традиционные финансы.
Будем рассматривать следующий алгоритм: пространственный арбитраж между двумя криптобиржами в BTC/USDT, соответственно, далее по тексту мы рассматриваем именно трейдинг с использованием пространственного арбитража в паре BTC/USDT, если не оговорено иное. Жирным будут выделены системы со специфическими для предметной области терминами
Итак, процесс трейдинга выполняющий наш алгоритм включает в себя следующие системы
- инвентарь: капитал в двух разных валютах BTC, USDT.
- биржа 1
- биржа 2
- бот, находящий арбитражную связку и запускающий торги в случае, если курс на одной бирже сильно отличается от другой. Арбитражная связка - это ситуация, когда курс на одной бирже отличается от другой, в процессе торгов на одной бирже закупается один инвентарь, а на второй он же продается, таким образом общее количество инвентаря увеличивается
Будем отличать две системы
- арбитражная связка - состояние стаканов бирж, когда курс на одной бирже отличается от другой (методы: выявление, запуск торгов)
- связка транзакций по алгоритму арбитража - совокупность транзакций после запуска торгов для арбитражной связки (методы: инициализация, исполнение)
Нашей целевой системой будет связка транзакций по алгоритму арбитража. В эту целевую систему входит две ноги связки транзакций.
Пример
- первая нога связки транзакций: покупка BTC за USDT на бирже 1: +0.1 BTC, -11000 USDT
- вторая нога связки транзакции: продажа BTC за USDT на бирже 2: -0.099 BTC, + 11200 USDT
нога/leg: это подсистема связки транзакций, реализуется транзакцией. В транзакцию (методы: инициализация, исполнение, частичное исполнение, отмена) входят
- два участника
- биржа как посредник между участниками
- два разных типа денег
Со связкой транзакций разобрались, теперь рассмотрим что входит в арбитражную связку точки зрения 4D-экстенсионализма. Напомню, связка транзакций получается из арбитражной связки после начала торгов.
Итак, арбитражная связка включает в себя
- стакан, а если быть точнее часть стакана USDT/BTC биржи 1
- часть стакана USDT/BTC биржи 2
Стакан - это сложный физический объект - совокупность всех ордеров на бирже для конкретной пары (методы: создание, изменение)
Ордер - это договорка между будущим участником транзакции и биржей о готовности исполнить транзакцию с другим участником на определенных условиях (методы: создание, изменение, удовлетворение/match, отмена). В ордер входят
- участник, готовый к инициализации и исполнению транзакции
- инвентарь, предоставляемый участником (его при создании ордера забирает себе биржа как обеспечение)
- биржа предоставляющая подобную возможность
В ордер не входят второй участник!!!
Ордер существует с момента времени, когда запрос на его создание от участника приходит на сервер биржи до момента удовлетворения/match или его отмены. Тут интересный момент, что транзакция реализуется удовлетворением двух ордеров, т.е. двух договорок - в момент когда два ордера разных участников рынка удовлетворяют друг другу по условиям, инициализируется транзакция. Этот механизм обеспечивается биржей. Ордеры могут существовать довольно долго, часы, месяцы. В некоторых случаях миллисекунды, если есть другой ордер, который сразу удовлетворит новому. Приведем примеры разных ордеров
- LIMIT ордер - участник готов инициализировать и исполнить транзакцию по определенному прайсу. Например купить 10 USD за 700 RUB. Если курс доллара снизится до 70 рублей, ордер удовлетворится - транзакция инициализируется и исполнится
- MARKET ордер - участник готов инициализировать и исполнить транзакцию по текущему прайсу, который есть на рынке. Например, купить 10 USD за RUB. В таком случае, будет немедленно создана и исполнена транзакция по текущему прайсу, на момент написания текста это 84.38, результатом удовлетворения ордера будет транзакция 10 USD на 843.8 RUB.
Интересный момент, что инициализация и исполнение любой транзакции является результатом удовлетворения двух противоположных ордеров у двух участников рынка.
Таким образом нашей целевой системой является связка транзакций по алгоритму арбитража, причем эта связка транзакций инициализируется из арбитражной связки в процессе запуска торгов с помощью арбитражного бота (подсистемой работы с транзакциями), а до этого эта арбитражная связка находится также с помощью арбитражного бота (подсистемой поиска связок).
Если мы рассмотрим другой алгоритм (стат. арбитраж, HFT и т.п.), все будет то же самое - целевой системой будет связка транзакций по конкретному алгоритму. Для традиционных финансов все усложняется, за счет того, что есть еще много посредников в виде брокеров, клиринговых домов и регуляторов, но в нашем рассмотрении это не важно, целевой системой все также будет связка транзакций.