Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задания / Диссертация - РАЗРАБОТКА МОДЕЛЕЙ, АЛГОРИТМОВ.docx
Скачиваний:
123
Добавлен:
27.05.2015
Размер:
9.85 Mб
Скачать
      1. Ордера и транзакции

Ордер на совершение сделки с ценной бумагой можно представить в виде кортежа:

(2.38)

где – агент, выставивший запрос;

– тип операции (покупка, продажа) ;

– тип акции;

– цена покупки / продажи;

– количество акций, выставленных на покупку / продажу;

– время создания ордера;

– срок действия ордера;

– список совершённых транзакций по этому запросу.

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

(2.39)

где – агент, продающий акции;

– агент, покупающий акции;

– тип акции;

– цена покупки / продажи;

– количество купленных / проданных акций;

– время выполнения транзакции.

Так как в (2.38) и (2.39) некоторые параметры либо дублируются, либо являются необязательными, далее буду использовать более компактные формулировки:

(2.40)

      1. Система обработки ордеров

Особого интереса заслуживает система обработки текущих запросов на покупку и продажу акций (ордеров), так как она существенно отличается от аналогичных алгоритмов в других программных комплексах. Пусть в некий момент на бирже сложились два списка:– список запросов на покупку акций изbэлементов,– список запросов на продажу акций изэлементов. Для каждого-го элемента списка задана цена, желаемое количество акцийи уже обработанное (купленное / проданное) по результатам предыдущих торгов количество акций. Сначала надо отсортировать оба спискаипо цене. Это делается при помощи стандартного алгоритмаQuickSort:

Дальше нужно пройтись циклом по всем элементам каждого списка, чтоб найти совпадающие ордера. Так как оба списка у нас отсортированы по цене, можно проверять только первые элементы списка и быстро отбрасывать те ордера на покупку, на которые выставлена неприемлемо низкая цена:

while (<> 0)and (<> 0)do

begin

if <then

begin

Remove(); // Удалить первый элемент массива.

end else

begin

CommitTransaction(,); //Совершить транзакцию.

if then // Если продано нужно количество акций, то…

Remove(); // Удалить первый элемент массива.

if then // Если куплено нужно количество акций, то…

Remove(); // Удалить первый элемент массива.

end;

end;

После этого все оставшиеся запросы в оригинальных списках ипроверяются на актуальность. Запросы, которые по истечению определённого времени так и не «нашли себе пару», удаляются из этого списка, а их отправителям посылается соответствующее сообщение об ошибке:

if ()then

for I := to do

CkeckIfTransactionRequestIsValid();

if then

for I := to do

CkeckIfTransactionRequestIsValid();

В конце алгоритма обновляются статистические данные рынка: бид (bid), аск (ask) и спрэд (spread). Для этого используются стандартные алгоритмы нахождения минимального и максимального значения в массиве.

      1. Движение денежных средств при совершении транзакций

Допустим, у нас в системе 5 агентов: – биржа,– брокер и– трейдеры. Каждый из них обладает стандартным набором активов (формулы 2.16–2.23).

Допустим, хочет продатьакций типапо ценеи купитьакций типапо цене. Комиссия брокераза каждую операцию составляет. Допустим, у него есть ресурсы для совершения всех операций, т.е.

(2.41)

Также допустим, что хочет купитьакций типапо ценеи продатьакций типапо цене. А трейдерхочет купитьакций типапо ценеи продатьакций типапо цене. У них тоже есть все необходимые ресурсы для совершения этих операций, т.е.

(2.42)

При этом для :

, , ,

(2.43)

А для :

,

(2.44)

В этом сценария в рамках первого этапатрейдеры формируют шесть ордеров на совершение сделок с ценными бумагами. В моментБрокер резервирует необходимые ресурсы для совершения всех операций и взимает свою комиссию за все шесть операций.

Согласно (2.40), ордера могут быть представлены в виде следующих кортежей:

(2.45)

Изменения активов :

(2.46)

Изменение активов :

(2.47)

Изменение активов :

(2.48)

Изменение активов :

(2.49)

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

Изменение активов :

(2.50)

Изменение активов :

(2.51)

Одновременно, брокер трансформирует ордера в собственные и передаёт их бирже от своего имени.

На третьем этаперынок заключает сделки по совпадающим ордерам. В данном случае,успешно продаёт все свои акции (2.43). Покупателями служат трейдерыи. Трейдерпокупает весь объём акций, который он планировал купить, а трейдертолько частично удовлетворил свой спрос на эту акцию.

По другой группе ордеров трейдер продаст часть своих акций трейдеру, в то время как (2.44) трейдерне продаст ничего, так как.

Следовательно, произойдут три транзакции, которые могут быть представлены в виде кортежей по формуле (2.39):

(2.52)

Согласно (2.40), в момент временисостояние шести ордеров может быть представлено в виде следующих кортежей:

(2.53)

Из этих ордеров, ,,выполнятся полностью,ивыполнятся частично, ане выполнится вообще. Длянеобходимо продать ещёакций, длянеобходимо купить ещёакций, длянеобходимо продатьакций. Если при следующих итерациях появятся подходящие ордера, то,исмогут быть успешно выполнены.

Допустим, что в рамках этой симуляции, этого не произойдем.

Тогда в рамках четвёртого этапабиржа вернёт брокеру акции и деньги, зарезервированные для проведения всех сделок. В нашем случае только один брокер, в реальных экспериментах биржа перераспределяет акции между брокерами в соответствии с выполненными транзакциями.

Изменение активов :

(2.54)

Изменение активов :

(2.55)

В рамках пятого этапаброкер вернёт трейдерам акции и деньги, зарезервированные для проведения всех сделок, но не потраченные из-за того, что не было найдено совпадающих ордеров. По частично или полностью выполненным сделкам брокер отдаёт трейдерам все купленные акции.

Изменения активов :

(2.56)

Изменение активов :

+

(2.57)

Изменение активов :

(2.58)

Изменение активов :

(2.59)