доработка тслаба для тестирования и торговли неликвидом(опционами) ТЗ

1 Назначение
Тслаб осуществляет тестирование и оптимизацию на основе исторических данных цен. Исторические данные цен представляют собой цены реальных сделок в виде баров цены открытия, цены закрытия, цены хая, цены лоя на интервале времени. Таким образом, для того чтоб сформировался ценовой бар на интервале времени = таймфрейму бара должна произойти хотя бы одна сделка. Если во время формирования бара сделок не происходит, то бар в исторических данных не формируется. Если таких пропущенных баров на истории более 5-10% от общего числа баров, то тестирование торговых алгоритмов на истории цен становится невозможным.
Есть очень большая группа малоликвидных активов (например опционы, акции второго-третьего эшелона, фьючерсы) которые имеют плотный стакан пригодный для системной торговли, но малое число сделок. И из-за малого числа сделок наблюдаются значительные пропуски истории цен, что делает невозможным тестирование торговых алгоритмов.
Если отказаться от формирования ценовых баров по реальным сделкам, а формировать ценовые бары по стакану котировок, то это позволит тестировать торговый алгоритм.

2 Принцип формирования исторических цен по стакану котировок.
Ценовой бар формируется не по ценам реальных сделок, а по заявкам в стакане.
Есть несколько способов.

а) хай бара = цене предложения в стакане , лой бара= цене спроса в стакане, опен бара=клосе бара = (бид+аск)/2. Объем = объему бид + объему аск.
Бар формируется по закрытию ценового интервала по текущим значениям в стакане. Этот способ формирования истории позволит использовать штатный тестировщик тслаба, если открытие-закрытие позиций осуществлять через блоки открытие по рыночной цене и закрытие по рыночной цене.

б)Возможен иной способ. Через накопление данных за весь интервал времени- в этом случае хай бара = максимальная цена предложения за интервал времени, лой = минимальная цена спроса за интервал времени, опен - последняя цена спроса, клос - последняя цена предложения. Этот метод формирования исторических данных более точен и позволяет использовать штатный тестировщик тслаба при всех методах открытия-закрытия позиций.

в) самым точны способом будет способ формирования 2ух историй одна по ценам спроса, вторая история по ценам предложения. Тогда для покупок можно использовать историю по ценам предложения, а продаж историю по ценам спроса. Именно этот способ обеспечит наиболее точное тестирование и оптимизацию торгового алгоритма.
для истории цен предложения: опен - начальная цена предложения, клосе конечная цена предложения, хай - максимальная цена предложения за интервал времени, лой - минимальная цена предложения за интервал времени.
для цены спроса исторический бар формируется аналогично.
Однако в этом случае штатное тестирование в тслабе будет невозможно. Т.к. открытие сделки в одном источнике, а закрытие сделки в другом в тслабе не предусмотрено.
Возможно формировать 2 бара друг за другом в одном источнике. Например бар по биду идет первым, а бар по аску вторым. Время баров слегка разное. Но тут надо смотреть возможность реализации и тестирования штатно на двойном количестве свечей.




3 Техническая реализация
а)Запись истории на основе стакана котировок должна осуществляться в файл. Название файла должно совпадать с тикером инструмента + содержать данные по таймфрейму. Например GAZP 15m.txt. Файл имеет текстовый формат совпадающий с текстовым форматом метастока. (в случае раздельной истории для бидов и асков в названии файла должна прописываться слово bis или ask например: SBER 5m bid.txt)
<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
MICEX,5,20130108,100000,1492.7600000,1505.7100000,1492.7600000,1504.6800000,1125027269
MICEX,5,20130108,100500,1504.6800000,1508.2500000,1504.6800000,1508.1000000,666137562
MICEX,5,20130108,101000,1508.0000000,1509.5000000,1507.5400000,1507.5400000,748375501
папка для записи должна быть та же что у папки с текстовыми источниками данных
такой способ записи позволит использовать штатные методы тслаб для тестировния торгового алгоритма и обеспечит легкий перенос и обмен данными.

б) Блок записи-чтения истории по ценам спроса и предложения. Состав.

Торговая бумага - по ней собираем исторические данные.
Поводырь - индекс ммвб или другой актив. Время торгов поводыря совпадает с временем торгов по торговой бумаге. Поводырь позволит нарезать бары. По каждому бару поводыря формируется бар истории в торговой бумаге.
Блок должен на каждое изменение в стакане торгуемой бумаге пересчитывать максимальный или минимальный бид или аск.
По каждому бару поводыря осуществлять запись в файл.

Скорее всего загрузку файла истории можно обеспечить штатными методами тслаба указав в скрипте нужный файл как текстовый источник.

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

4 Недостаток метода в том, что он требует накопления исторических данных. Восстановить предшествующую историю возможно только через биржевой ордер лог. Что требует отдельных трудозатрат.


Отредактировано ves (Wed Nov 25 2015 01:42 PM)