Избранное трейдера ZeroWizard
Насколько успешным может быть применение индикатора токсичности потока ордеров VPIN в трейдинге? А если попробовать соединить его с моделью скрытых состояний Маркова? Пример такой стратегии приводит Dr Jonathan Kinlay в своем блоге. Напоминаю, что всю теорию по расчету VPIN вы сможете найти на моем сайте здесь, а по модели Маркова — здесь.
Для наших целей интерес представляет однопериодный знаковый VPIN. Он принимает значения от -1 до 1, в зависимости от пропорции между покупками и продажами за один период t — см. график в заглавии статьи.
Мы предполагаем, что приращение цены актива имеет сильную зависимость от значения VPIN. Например, в тестах фьючерса ES, мы увидели, что изменение средней цены от одного объемного пакета ( см. теорию VPIN) до следующего высококоррелировано со значением VPIN в предыдущем пакете с коэффициентом 0,5. Другими словами, участники рынка, предоставляющие ликвидность, будут обновлять свои ордера в направлении, которое прямо связано с направлением и интенсивностью потока токсичности.
if (pr > max) { max = pr; ind = 1; } // — если обновляем максимум то в лонг
if (pr < min) { min = pr; ind = -1; } // — если обновляем минимум то в шорт
max -= k2; // максимум плавно опускаем каждую 5-минутку
min += k3; // минимум плавно поднимаем каждую 5-минутку
if ((ind == 1) && (pr < max- stop_long)) ind = 0; // если цена ниже максимума на размер стопа и мы лонге — выход кеш
В этой части рассмотрим обучение модели скрытых состояний Маркова на языке R. В прошлых статьях мы изучили математическую основу модели, которая воплощена в библиотеке RHmm. Есть два способа распознавания режимов с помощью модели Маркова, первый — использование одной модели, каждое состояние которой отражает режим, в каком находится рынок. Второй способ подразумевает построение нескольких моделей, каждая из которых создана для одного режима, задача состоит в том, чтобы выбрать ту модель, которая генерирует данные, наиболее соответствующие текущему состоянию рынка. Рассмотрим оба эти способа.
Метод первый — одна модель с несколькими состояниями.
Для обучения модели будем использовать исходные данные, полученные симуляцией из нормального статистического распределения N(mu,sigma), где mu — медиана, sigma — среднеквадратичное отклонение. Распознавание будем производить для двух режимов — бычьего (bull) рынка, на котором наблюдается восходящий тренд и медвежьего (bear) рынка, на котором тренд нисходящий. Соответственно, сгенерируем приращение значений из двух нормальных распределений - N (mu.Bull,sigma.Bull) и N(mu.Bear,sigma.Bear). На рисунке показан результат такой генерации на 300 наблюдений, 100 первых из которых получены из бычьего распределения, 100 вторых — из медвежьего и 100 последних — из бычьего с другими параметрами mu и sigma (каждое приращение будем считать дневным):