Topic-icon Алгоритмическая торговля опционными конструкциями

Больше
#386

Исходя из своего видения рынка, выбираем в настройке робота опционную конструкцию (ОК), кот. робот должен будет построить. При этом робот, должен будет активно торговать на её составных частях и при этом должен поддерживать объёмы и пропорцию инструментов на страйках, используемых в ОК. В итоге, к экспирации мы должны подойти с выигрышной ОК и плюс с заработанным ТП от алгоритмической торговли.
Итак, задача робота соблюдать направление торговли для каждого страйка, а также определять допустимый диапазон объемов для каждого торгуемого страйка и поддерживать эти объемы в определенном соотношении. Для решения этой задачи существуют 3 правила.
Правило №1. «Нельзя превышать минимальный и максимальный объем для каждого страйка»
Для каждого страйка задается минимальный (это всегда ноль) и максимальный объем торговли в лотах с учетом знака (направления торговли, покупка со знаком «+», продажа со знаком «-»). При достижении максимального объема в разрешенном направлении торговля приостанавливается. Другими словами, запрещается торговля в направлении выхода за границы минимального и максимального объемов.
При подходе к одной из границ дальнейшие операции с этим страйком возможны лишь в направлении сокращения объема при подходе к максимальной границе, или увеличения объема при подходе к минимальной границе. Как только объем данного страйка становиться меньше максимального объема (с учетом знака), торговля снова разрешается в заданных в программе направлениях.
Правило №2. «Поддержка заданного соотношения объемов всех страйков»
Кроме правила не превышения максимального объема каждого страйка, существует правило, направленное на поддержку заданного соотношения объемов всех страйков, согласования объемов. Для этого в настройках задается базовое соотношение между объемами всех страйков (соотношение 1-го уровня) ± разрешенное отклонение объемов, одинаковое для всех страйков. Прежде чем сформулировать само правило, подготовим пример.
Допустим, в программе заданы 3 рабочих страйка: T1, T2 и T3. Также заданы максимальные объемы соответственно V1=10 лотов, V2=20 лотов и V3=30 лотов. Задано базовое соотношение между объемами страйков (соотношение 1-го уровня) следующим образом T1:T2: T3=1:2:3. Разрешенное отклонение объемов D=±2.
Тогда по базовому соотношению 1-го уровня можно подготовить соотношения объемов других уровней, а также рассчитать границы интервалов объемов всех уровней с учетом разрешенного отклонения ±2 лота.
Все эти данные сведены в приведенной ниже таблице.
Интервал объемов с учетом отклонения для каждого страйка рассчитывается по формуле: V±D, где
V = объем страйка, взятый из взаимного соотношения текущего уровня (без учета направления);
D = допустимое отклонение объема (задано в настройках);
т.е. интервал объемов представлен в виде [V-D; V+D],
рассчитанные границы интервалов не могут выходить за минимальное и максимальное значения, заданные для каждого страйка.


Уровень Взаимное соотношение объемов
V1:V2: V3 Интервал объемов с учетом отклонения
Страйк 1 Интервал объемов с учетом отклонения
Страйк 2 Интервал объемов с учетом отклонения
Страйк 3 Комментарий
1 1:2:3 [0..3] [0..4] [0..5] левая граница интервалов всегда =0
2 2:4:6 [0..4] [2..6] [4..8]
3 3:6:9 [1..5] [4..8] [7..11]
4 4:8:12 [2..6] [6..10] [10..14]
5 5:10:15 [3..7] [8..12] [13..17]
6 6:12:18 [4..8] [10..14] [16..20]
7 7:14:21 [5..9] [12..16] [19..23]
8 8:16:24 [6..10] [14..18] [22..26]
9 9:18:27 [7..10] [16..20] [25..29] Правую границу интервалов меняем на максимальный объем
10 10:20:30 [8..10] [18..20] [28..30] Правую границу интервалов меняем на максимальный объем


Если при расчете левой границы интервала получается отрицательное значение, то это значение заменяется нулем. Левая граница интервала объемов (с учетом отклонения) на 1-ом уровне всегда должна быть равна 0. Если это не так, то следует заменить ее на 0.
Если при расчете правой границы интервала получается значение больше максимального, то это значение заменяется максимальным значением.

По текущему объему каждого страйка определяем максимальный или минимальный (задаётся в настройках программы) номер уровня, которому он принадлежит. Допустим, в настройках программы указано, что номер уровня, которому принадлежит интервал, в который попадает текущий объем, определяется по минимальному значению уровня.
Если номера уровней всех страйков совпадают, то торговля каждого страйка разрешается в заданном в программе направлении (с учетом правила №1).

Если номера уровней страйков не совпадают, то возникает 3 варианта работы программы (выбирается в настройках):

1. страйк с наименьшим номером уровня разрешается торговать только в сторону увеличения номера уровня, а страйки с наибольшим номером уровня разрешается торговать только в сторону уменьшения номера уровня, до тех пор, пока не окажутся на одном уровне, тиккеры с номерами уровней между наибольшим и наименьшим номерами (внутри диапазона) торгуется в обоих направлений без ограничений (с учетом правила №1);
2. работа страйка с наименьшим номером уровня торговля приостанавливается, а все остальные страйки торгуются в его сторону до тех пор, пока все страйки не окажутся на одном уровне, после чего вновь разрешается торговля страйков в заданных направлениях;
3. работа страйка с наибольшим номером уровня торговля приостанавливается, а все остальные страйки торгуются в его сторону до тех пор, пока все страйки не окажутся на одном уровне, после чего вновь разрешается торговля страйков в заданных направлениях.

Можно предусмотреть в настройках программы использование коэффициента ускорения торговли (за счет умножения торгуемых лотов на этот коэффициент). Расчет этого коэффициента зависит от разницы между наибольшим и наименьшим номерами уровней, на которых расположены объемы разных страйков. Допустим, текущие объемы всех страйков лежат на разных уровнях и представлены следующими номерами уровней N1, N2 и N3, и допустим для определенности, что N3> N2> N1.
Тогда коэффициент ускорения торговли (за счет увеличения лотов) рассчитывается по формуле:
K= max (1; |N3-N1|).
Начальные значения лотов для каждого страйка задаются в настройках программы.


Предлагаю совместно реализовать эту и др. идеи.

Пожалуйста Войти , чтобы присоединиться к беседе.

Время создания страницы: 0.139 секунд