Как я могу сравнить источники каналов рыночных данных для улучшения качества и задержки? - PullRequest
2 голосов
/ 10 февраля 2010

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

Таким образом, инструмент, который мне нужен, должен иметь возможность проверять различия в обновлениях, а также определять, какой источник является лучшим (с точки зрения задержки).

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

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

Я хотел бы узнать ваш собственный опыт в этой области, возможно ли разработать довольно точный алгоритм для удовлетворения потребностей? Какая у тебя была идея? Что вы думаете о сравнении по отпечаткам пальцев?

Ответы [ 2 ]

1 голос
/ 25 мая 2010

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

По сути, у вас есть приложение, которое подписывается на два канала. (Вы можете сделать это с помощью программного обеспечения, основанного на сниффе, а также для неинтрузивного мониторинга / измерения - я могу попытаться решить и это)

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

Этот метод требует написания подписывающихся приложений для данных.

Существует множество проблем, таких как обработка пропущенных обновлений и тайм-аут непревзойденных данных, как работать с биржами или фидами, которые могут не предоставлять уникальные идентификаторы для обновлений, работать с ошибками поставщиков данных, локальным WRT и временем UTC и т. Д.

Анализ данных аналогичен, но вы собираете данные с помощью pcap или аппаратных карт захвата, а затем анализируете потоки на основе конечных точек пакетов. Это немного сложнее, чем прямая подписка, но имеет преимущество в том, что она не навязчива и достаточно гибка в отношении того, какие наборы данных вы можете измерять.

0 голосов
/ 11 февраля 2010

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

Конечно, из всех типов рыночных данных корпоративные действия, вероятно, являются одними из самых низких объемов, поэтому этот метод, вероятно, не будет масштабироваться для отметки данных!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...