Измерение информации на рынке с помощью PIN. Часть 3

PINdata


Начало в моем блоге.

В этой, последней части цикла разберем пример вычисления PIN с применением языка R. Кроме библиотеки PIN языка R будем использовать также библиотеку highfrequency.


Для примера автор берет сгенерированные данные, которые соответствуют формату TAQ — стандарт для акций NYSE. Данные состоят из двух наборов — временной ряд ценового котирования (sample_qdata) и сделки (sample_tdata)  и предоставляются в открытом доступе вместе с библиотекой highfrequency.


Нужно отметить что используемые данные взяты только за один торговый день. Обычно, для вычисления PIN применяют больший набор данных, не менее, чем за 60 дней, чтобы выборка была достаточной для правильного определения параметров. Наши данные нужны только для демонстрации процесса получения PIN. Библиотека PIN позволяет это сделать для выборки с любой размерностью, что позволяет применять ее и для высокочастотной торговли. Пример, приводимый здесь, может быть легко расширен для вычисления на другом


Читать дальше →

Измерение информации на рынке с помощью PIN. Часть 2

PINparm


В прошлой части мы рассмотрели теоретическую модель, лежащую в основе вычисления вероятности присутствия на рынке информированных трейдеров PIN. Продолжим с эмпирической реализации этой модели.


Для уменьшения пространства параметров модели, обычно предполагают, что частоты прихода ордеров на продажу ϵs и на покупку ϵb равны. В день «хорошей новости» вероятность наблюдения последовательности сделок купли и продажи соответствует:


\exp(-(\mu+\epsilon)T)\frac{[(\mu+\epsilon)T]^B}{B!}\exp(\epsilon T)\frac{(\epsilon T)^S}{S!}, где B и S — число сделок купли и продажи соответственно.



Для дней  «плохой новости»:


\exp(\epsilon T)\frac{(\epsilon T)^B}{B!}\exp(-(\mu+\epsilon)T)\frac{[(\mu+\epsilon)T]^S}{S!}


И для дней с отсутствием новостей вероятность равна:


\exp(\epsilon T)\frac{(\epsilon T)^B}{B!}\exp(\epsilon T)\frac{(\epsilon T)^S}{S!}


Предполагая, что торговая активность независима от одного дня к другому в течении T дней, вероятность торговой активности принимает форму:


L[\{B,S\}|\theta]=(1-\alpha)\exp(-\epsilon T)\frac{(\epsilon T)^B}{B!}\exp(-\epsilon T)\frac{(\epsilon T)^S}{S!}


+\alpha\delta\exp(-\epsilon T)\frac{(\epsilon T)^B}{B!}\exp(-(\mu+\epsilon)T)\frac{[(\mu+\epsilon)T]^S}{S!}


+\alpha(1-\delta)\exp(-(\mu+\epsilon)T)\frac{[(\mu+\epsilon)T]^B}{B!}\exp(-\epsilon T)\frac{(\epsilon T)^S}{S!}


с пространством параметров θ=α,δ,ϵ,μ. За h независимых дней вероятность наблюдения M=(B_i,S_i)_{i=1}^hравна произведению дневных вероятностей:


L[M|\theta]=\prod_{h=1}^h L(\theta|B_i,S_i)


Для сходимости при численной


Читать дальше →

Измерение информации на рынке с помощью PIN. Часть 1

zagaglia


В нескольких статьях мы рассмотрим использование индикатора PIN, который представляет собой вероятность присутствия на рынке так называемых информированных трейдеров. Статьи основаны на работе  Paolo Zagaglia "PIN: Measuring Asymmetric Information in Financial Markets with R". Так как вероятность информированной торговли зависит от сделок купли и продажи в течение рабочего дня, в данном цикле мы рассмотрим весь процесс, от обработки исходных данных и вычисления вероятности информированной торговли, до определения параметров лежащей в основе математической модели. Примеры будут сопровождаться кодом на языке R.


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


Читать дальше →

Введение в машинное обучение. Часть 2

blogML2Main


После рассмотрения основ машинного обучения в первой части, мы перейдем к примеру использования наивного байесовского классификатора для предсказания направления движения цены акций Apple. Сначала разберем основные принципы работы наивного байесовского классификатора, затем создадим простой пример использования дня недели для предсказания направления цены закрытия — выше или ниже текущей, а в окончании построим более сложную модель, включающую технические индикаторы.


Что представляет собой наивный байесовский классификатор (НБК)?


НБК старается найти вероятность события А при условии, что событие В уже произошло, обзначаемую как Р(А|B) (вероятность А при условии В).


В нашем случае, мы должны спросить: какова вероятность того, что  цена возрастет, при условии, что сегодня — среда? НБК берет во внимание обе вероятности — общую вероятность роста цены, то есть число дней, когда цена закрытия была выше цены открытия относительно всех рассматриваемых дней, и


Читать дальше →

Введение в машинное обучение. Часть 1

goog1m


В последнее время приобретают все большую популярность алгоритмы машинного обучения. Они применяются для решения задачи классификации входных данных, или, проще говоря, выявления паттернов в структуре этих данных. Небольшой цикл статей про машинное обучение опубликован на сайте inovancetech.com, здесь я представляю их перевод.


В этой серии статей мы рассмотрим построение и тестирование простой стратегии машинного обучения. В первой части отметим основные принципы машинного обучения и их применение к финансовым рынкам.


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


Цель машинного обучения (МО) в том, чтобы правильно смоделировать исторические данные, и затем использовать эту модель в предсказании будущего. В алгоритмической торговле применяется два типа МО:


  • Регрессия:

Читать дальше →

Стратегия с классификацией ордеров по времени жизни. Часть 2

toa-age-201shrbbofilter-edgex-1366


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


Автоматические стратегии стараются отсылать биржевые приказы, которые содержат небольшие количества акций или лотов. Маркет мейкеры делают это для того, чтобы выборочно торговать с небольшими контрагентами, обходя сильные движения, вызываемые крупными покупками или продажами. Исполнительные алгоритмы отсылают небольшие ордера, чтобы скрыть свои намерения о реализации крупных объемов, избегая тем самым сильного воздействия на цену. Чтобы проверить, действительно ли существуют описанные тенденции на рынке, построим график движения цены, с точки зрения пассивной стороны трейда, после взятия всех ордеров на конкретном уровне для двух ситуаций — когда малые ордера принимают участие в данном трейде,


Читать дальше →

Стратегия с классификацией ордеров по времени жизни. Часть 1

bats


Неплохую идею для высокочастотного трейдинга подсказал Kipp Rogers в своем блоге. Идея несложная, но требующая подробного объяснения, поэтому попробую изложить ее в двух статьях.


Автор предположил, что лучшее исполнение ордеров, отправленных на биржу, скорее возможно получить, торгуя с трейдерами — людьми, вручную отправляющими приказы, чем с компьютерами, то есть контрагентами с автоматическим выставлением. Высокочастотные роботы отправляют приказы на биржу только в том случае, если они видят возможность быстрого снятия прибыли или ищут наилучшую цену исполнения для больших объемов, что делает соревнование с ними очень тяжелой задачей. С другой стороны, трейдеры, торгующие вручную ( под ними могут подразумеваться и автоматические программы с медленными алгоритмами ), выставляют приказы с большим временем жизни (до отмены или исполнения), меньше внимания уделяют мгновенной цене и, как правило, имеют идею о направлении движения цены при входе в рынок, что также дает


Читать дальше →

Использование сантимента для предсказания цены акций

Accern Backtest Report


В настоящее время набирают популярность автоматические алгоритмы, основанные на исследовании «сантимента» (sentiment) — настроения или мнения аналитиков, журналистов, блоггеров и т.д. о той или иной компании, акции которой торгуются на рынке. Одно из таких исследований провел провайдер данных Accern.com и получил интересные результаты. Сбор данных по сантименту проводился только на одном популярном сайте Quantopian.com, было протестировано около 1,5 миллионов новостей и статей в течение 2,5 лет — с августа 2012 года по февраль 2015 года. Анализ этих данных проводился по следующим детерминированным критериям:


1. Настроение в публикациях ( может иметь значение 1 или -1). Этот параметр характеризует степень настроения автора к той или иной компании. Если публикация написана в позитивном тоне, параметр принимает значение 1, если в негативном — значение -1. Параметр работает как указатель направления движения цены.


2. Совокупный ранг источника (от 0 до 10). Параметр отражает


Читать дальше →

Работает ли все еще ваша стратегия?

Fig-43


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


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


Читать дальше →

Алгоритмы маркетмейкера. Часть 5

Алгоритмы маркетмейкера. Часть 5


Продолжаем разбирать численное решение уравнения Хамильтона-Якоби-Беллмана. В прошлой части мы составили выражение для оператора \widetilde{\mathcal{L}}(t,y,f,s,\phi), в котором есть слагаемые, получить значение которых можно из реальных данных. Во-первых, что из себя представляют дифференциальные матрицы D1,D2. Это матрицы размерностью N_F\times N_F, где, для D1(согласно определению в части 4) в ячейках [j,j] стоят -1, если fj<0 и 1 в остальных случаях,  в ячейках [j,j+1] стоят 1, если fj<0 и 0 в остальных случаях, и в ячейках [j,j-1] стоят -1, если fj≥0 и 0 — в остальных случаях. Как составить матрицу D2, я думаю, вы догадаетесь сами, взглянув на ее определение в части 4 цикла статей.


 Далее, определение для матожидания квадратичного и линейного изменения цены:


\mathbb{E}_td[P,P]_t=(\frac{1}{4}\lambda^J_1+\lambda^J_2)dt, где\lambda^J_1,\lambda^J_2— интенсивность скачков цены на полшага и один шаг соответственно.


\mathbb{E}_tdP_t=(\lambda^J_1\frac{\delta}{2}(2\psi_1(F_t)-1)+\lambda^J_2\delta(2\psi_2(F_t)-1))dt, где \psi_1,\psi_2— вероятности скачков цены — см. часть 2.


Оператор воздействия величины спреда на функцию владения:


\mathcal{L}^S\circ v(t,y,f,s)=\Bigg(\sum\limits_{j=1}^3 \rho_{ij}[v(t,y,f,j\delta)-v(t,y,f,i\delta)]\Bigg)\lambda^S, где


Читать дальше →

Алгоритмы маркетмейкера. Часть 4

Алгоритмы маркетмейкера. Часть 4
Прошлые части цикла здесь. В этой части статьи мы найдем численное решение системы уравнений оптимального управления позицией маркетмейкера. Такое решение легко запрограммировать и использовать в реальной торговле для контроля за лимитными и маркет ордерами в соответствии с полученными стратегиями θmk,θtk. Для упрощения разложим функцию владения на слагаемые, чтобы получить сокращенную функцию владения v(t,y,f,s), которая представляет собой только динамическую составляющую основной функции:

V(t,x,y,p,f,s)=x+py+v(t,y,f,s)



Для v система уравнений выглядит следующим образом:


\max\left[\frac{\partial v}{\partial t}+y\frac{\mathbb{E}_t dP_t}{dt}+\mathcal{L}^F\circ v-\gamma y^2\frac{\mathbb{E}_t d[P,P]_t}{dt}+


\sup_{\theta^{mk}}\left\{g^a(f,s,\theta^{mk,b}_t)(v(t,y+1,f,s)-v(t,y,f,s)+s/2-\delta \theta^{mk,b}_t)+


g^b(f,s,\theta^{mk,a}_t)(v(t,y-1,f,s)-v(t,y,f,s)+s/2-\delta\theta^{mk,a}_t)\},


\sup\{v(t,y+\zeta,f,s)-|\zeta|(s/2+\epsilon)\}-v]=0


с терминальным условием:


v(T,y,f,s)=-|y|(s/2+\epsilon).


Переходим к численному решению. Зададим на интервале [0,T] дискретную сетку времени t с равными интервалами \Delta_T=T/N_T:


\mathbb{T}_{N_T}=\{t_k=k\Delta_T,k=0,...,N_T\}


Также дискретизируем открытую позицию \mathbb{Y}и дисбаланс объема \mathbb{F}, с максимальными значениями M_Y, M_Fи шагами дискретизации\Delta_Y=M_Y/N_Y, \Delta_F=M_F/N_F, где


\mathbb{Y}_{N_Y}=\{y_i=i\Delta_Y,i=-N_Y,...,N_Y\}, \mathbb{F}_{N_F}=\{f_j=j\Delta_F,j=-N_F,...,N_F\}.


Далее, для вычисления численных производных по дисбалансу объема F, определим две дифференциальные


Читать дальше →

Алгоритмы маркетмейкера. Часть 3

Алгоритмы маркетмейкера. Часть 3


Продолжаем разбирать работу JIANGMIN XU «Optimal Strategies of High Frequency Traders». Начало смотрите здесь. Чтобы составить уравнение оптимального контроля, сначала сформулируем проблему оптимизации алгоритма при используемых стратегиях θ,  как достижение максимума следующего матожидания:


\max_{\theta^{mk},\theta^{tk}}\mathbb{E}_0[X_T-\gamma\int^T_0 Y^2_{t-}d[P,P]_t],



где интеграл\gamma\int^T_0 Y^2_{t-}d[P,P]_tпредставляет собой штрафную функцию удержания ненулевой открытой позиции рискованного актива, γ- постоянный коэффициент, d[P,P]t- квадратичное изменение средней цены P, X_T— кэш трейдера на момент времени окончания торговли T.


Далее определим функцию, которая представляет активы трейдера после ликвидации всех открытых позиций в конце торговли по алгоритму с помощью маркет ордера:


Q(x,y,p,f,s)=x+py-|y|(\frac{s}{2}+\epsilon),


где x — кэш трейдера,


p- средняя цена (в стакане),


y — открытая позиция,


s — спред,


f — дисбаланс объемов в стакане,


ϵ- комиссия. 


С учетом функции Q  дадим


Читать дальше →

Алгоритмы маркетмейкера. Часть 2

Алгоритмы маркетмейкера. Часть 2


В прошлой части мы рассмотрели оптимальное управление inventory risk в маркетмейкерском алгоритме. Напомню, что формулы для нейтральной цены и оптимального спреда между лимитными ордерами были получены при допущении, что цена следует геометрическому броуновскому движению. Управление inventory risk для моделей цены, более приближенными к реальности, рассматривается, например, в статье Pietro Fodra & Mauricio Labadie «High-frequency market-making with inventory constraints and directional bets» . Однако, применить напрямую на практике алгоритмы из этих статей вряд ли получится, так как в них  не учитывается действие adverse selection risk. Поэтому в данной части рассмотрим работу JIANGMIN XU «Optimal Strategies of High Frequency Traders», в которой автор делает попытку учесть этот вид риска, конечно, наряду с inventory risk.



 Для этого необходимо получить предсказание направления


Читать дальше →

Алгоритмы маркетмейкера. Часть 1

MarketMaker

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


1. Вероятность взятия ордера на стороне, противоположной движению цены в большинстве случаев выше, чем на стороне по направлению движения. То есть, если цена актива растет, то чаще будут исполняться ордера, выставленные на продажу, а ордера на покупку, соответственно — реже, в результате возникает убыточная позиция. В англоязычной литературе этот эффект называется adverse selection и возникает он в результате присутствия на рынке так называемых информированных трейдеров.


2. При


Читать дальше →