Последние два года вся страна пристально следит за курсом доллара. Новостные выпуски пестрят громкими репортажами о долларе. Все говорят о долларе. А что, если мы на фоне горячего интереса, разберемся с тем, как формируется цена доллара, посмотрим кто и как торгует валютой?! Все результаты, представленные в данной статье, получены на основе официальных торговых данных full orders log (полный журнал заявок), купленные на Московской Бирже. Мы покажем реальные торги изнутри. Параллельно, познакомимся со стандартными методами анализа рынка. Такая аналитика стоит не малых денег и её могут позволить ограниченное число «компаний».
Инструментом для анализа данных будет Java. Анализируемый биржевой инструмент — USDRUB_TOM. Наша задача вытащить любопытные детали из имеющихся данных и попробовать сделать определенные выводы.
Во всем мире валютные операции преимущественно совершаются на межбанке и на специализированных электронных торговых площадках, куда подключены крупнейшие банки, казначейства и тд. Типичные представители таких площадок FXall или Atriax.
В России валюта преимущественно торгуется на бирже, где проходят колоссальные объемы. На долю Московской Биржи приходится 45-50% от всего мирового объема торгов по паре USD/RUB. Это гигантская доля, мало какая страна может похвастаться такой долей. Поэтому курс Московской Биржи, без капли преувеличения, является мировым ориентиром. Курс ЦБ формируется по биржевому курсу, расчетные цены фьючерсных контрактов ориентируются на биржевой фиксинг… К валютному рынку подключены и торгуют сотни банков, выходит ЦБ с интервенциями и покупает валюту, компании экспортеры меняют валюту, подключены крупнейшие европейские и американские инвесткомпании.
Далее, по ходу, буду использовать термины «спред» и «стакан» (котировок). Кто слышит впервые, загляните.
Объяснение на пальцах
Спред – разница между ценой покупки и продажи. В обменнике цена покупки 75р, цена продажи 80р. Здесь спред равен 5р.
Стакан котировок – это весь список покупателей и продавцов присутствующих на рынке, выстроенных по цене. Стакан котировок кратко и понятно описывает состояние рынка и выглядит так. В терминалах обычно видим 10-20 ценовых уровней. А их может быть на порядок больше. Для доллара это примерно 200-300 уровней. И за 1 секунду стакан может меняться десятки и сотни раз.
Торговый механизм многим известен: вновь пришедшая заявка, в зависимости от цены, становится в очередь (в стакан). Как только приходит встречная заявка, удовлетворяющая нашей, она исполняется, происходит сделка. Иначе, продолжает оставаться в очереди. Эту заявку можно отозвать, пока она не исполнилась.
Стакан котировок – это весь список покупателей и продавцов присутствующих на рынке, выстроенных по цене. Стакан котировок кратко и понятно описывает состояние рынка и выглядит так. В терминалах обычно видим 10-20 ценовых уровней. А их может быть на порядок больше. Для доллара это примерно 200-300 уровней. И за 1 секунду стакан может меняться десятки и сотни раз.
Торговый механизм многим известен: вновь пришедшая заявка, в зависимости от цены, становится в очередь (в стакан). Как только приходит встречная заявка, удовлетворяющая нашей, она исполняется, происходит сделка. Иначе, продолжает оставаться в очереди. Эту заявку можно отозвать, пока она не исполнилась.
У нас на руках есть данные о ходе торгов за 2 февраля 2016, содержащие все заявки, которые выставляются, удаляются или исполняются в сделку. По ним можно отследить жизнь каждой заявки. Данные обезличены, мы не знаем, кто выставлял заявки, но видим все основные её параметры: время, цена, объем, направление, id… В предыдущем посте я детально описывал формат этих данных.
Давайте вспомним, что было второго февраля. Да ничего особенного, обычный день без особенностей и аномалий. И тем лучше.
Начнем с простого. В этот день было совершено 105 тыс. сделок на общую сумму 504 млрд. ₽. Движение цен выше на графике.
1. Давайте посмотрим, какие объемы заявок выставляют участники торгов чаще всего? Минимально возможный объем заявки 1000 $ (1K $).
Как видим подавляющее большинство торгуют объемами 50K $ и 100K $, на третьем месте целый миллион баксов (1M $). Да, тут все по крупному. Интересно, какая картина будет для акций или фьючерсов, где достаточно много физ. лиц? На валютный рынок физиков допустили относительно недавно, оно и видно.
2. Заявки приходят в торговую систему. А через сколько времени они исполняются?
Достаточно плавное распределение. Удивительно, что больше половины сделок исполняются менее чем за секунду. Тут надо исключить второго участника сделки, ибо у него заявка исполняется моментально. И еще интереснее картина внутри нескольких миллисекунд, где совершается очень большое количество сделок. Высокочастотные роботы? Как большинство заявок оказывается в нужном месте за несколько миллисекунд? Вопрос открытый, есть мнения?! Предлагайте.
3. Заявки прилетают в торговую систему и удаляются самим участником. Так через какое время снимаются большинство заявок?
Сразу бросается в глаза тот факт, что подавляющее количество заявок снимаются через 1-2 миллисекунды. Так же видим, что участники любят целые числа. Пики на графике четко следуют с интервалом в 50 миллисекунд (ни больше, не меньше).
Предположу, что большинство людей в алгоритмах любят использовать целые числа (50, 100, 200...). Тогда, глядя пристально на расплытие пиков можно оценить удаленность расположения участников торгов из-за существования задержек в данных. Если бы все участники расположились в зоне колокации (в одном помещении с торговой системой, задержка микроскопическая), то мы бы увидели пики в форме палочек, без расплытия. Ваши мысли?
4. У каждой сделки есть инициатор: продавец или покупатель. Больше продавали или больше покупали?
Данные с 10:00 и до закрытия 23:50. Соотношение продавцов и покупателей напрямую зависит на движение цены. Здесь на графике видим характер заявок, т.е. как участники указывают цену в заявке.
5. Какой объем у сделок?
Всё те же 50K $ и 100K $, также появились объемы 5K $ и 10K $.
Кусок волшебного кода
Все перечисленные выше распределения получены инструментом HashMap. Основные пара строк кода:
if(mySet.containsKey(key)){
mySet.put(key, mySet.get(key)+1);
}else{
mySet.put(key, 1);
}
Далее вступает тяжелая артиллерия. По мне, самая интересная часть. Для получения дальнейших метрик нужно уметь строить стакан котировок. Как строить стакан, я описывал в предыдущей статье с примерами.
Через каждые 10 секунд мы воспроизводили стакан котировок и снимали показания. Результаты в п.6 и 7.
6. Картина глубины рынка. А много ли товара?
Верхний график, это тот объем который хотят купить. Нижний — объем, который хотят продать. Большой объем сделки всегда двигает цену вверх или вниз. Смысл картинки в том, чтобы понять, какой объем сделки сдвинет цену на 0.5% или 1% за определенное время. Картинка дает понять, когда лучше выходить на рынок, чтобы реализовать большой объем.
Пример (см. на верхний график). Если бы мы в 12:00 хотели бы продать валюту на сумму 50M $, цена бы уехала вниз на 1%. А если то же самое проделать в 14:30 цена бы уехала максимум на 0.5% (вот наша экономия).
7. Картина глубины рынка. Обратная задача
Дает ответ на вопрос: на сколько сдвинется цена в зависимости от определенного объема? Картина за целый торговый день. Прежде чем, как крупный участник придет на тот или иной рынок, он первым делом изучает данные, проводя подобные исследования. Если рынок мелкий, смысла заходить нет.
Заключение
Из исторических данных можно вытащить еще много интересного. Можно изучить повадки всего ансамбля участников при определенных событиях и улучшать свои торговые алгоритмы.
Теперь у нас есть представление кто и как торгует валютой, какие объемы крутятся и с какими скоростями. Почувствовали дно долларового рынка.
Ну вот и все. Благодарю за внимание. Если будут мысли/предположения по любому из пунктов, пиши.
Особая благодарность одному доброму хабраюзеру, который помог с визуализацией данных. Обещал написать отдельный пост по визуализации на примере финансовой информации с использованием Python + MatPlotLib.
В следующей части погрузимся еще глубже и рассмотрим отдельные интересные ситуации на рынке (интервенция ЦБ и черный вторник). Будут пожелания?! Учту обязательно в следующей статье, дайте знать