{"id":2806,"date":"2021-05-12T14:53:32","date_gmt":"2021-05-12T14:53:32","guid":{"rendered":"https:\/\/devexperts.com\/blog\/?p=2806"},"modified":"2024-12-23T08:12:38","modified_gmt":"2024-12-23T08:12:38","slug":"achieving-consistent-low-latency-on-an-exchange","status":"publish","type":"post","link":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/","title":{"rendered":"Achieving Consistent Low Latency on an Exchange"},"content":{"rendered":"\n<div class=\"wp-block-devexperts-custom-thumbnail\"><figure><picture><source media=\"(max-width: 639px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-600x338.jpg 2x, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-300x169.jpg 1x\"\/><source media=\"(min-width: 640px) and (max-width: 767px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-1168x657.jpg 2x, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-600x338.jpg 1x\"\/><source media=\"(min-width: 768px) and (max-width: 1023px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-1168x657.jpg 2x, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-728x410.jpg 1x\"\/><source media=\"(min-width: 1024px) and (max-width: 1279px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-1168x657.jpg 1x, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-690x388.jpg 1x\"\/><source media=\"(min-width: 1280px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-1752x986.jpg 2x,\n\t\t\t\thttps:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-1752x986.jpg 1.5x,\n\t\t\t\thttps:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-870x489.jpg 1x\"\/><img loading=\"lazy\" decoding=\"async\" class=\"singleThumbnail lazyload\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-1024x576.jpg\" data-src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/05\/Post-Inner-Card-Big-870x489.jpg\" width=\"870\" height=\"490\"\/><\/picture><\/figure><\/div>\n\n\n\n<p>Low latency is indispensable for algorithmic trading and numerous market participants\u2014the lower, the better. However, achieving it is not enough: we must also work for its consistency, which is more technologically complex.<\/p>\n\n\n\n<p>Here at Devexperts, we <a href=\"https:\/\/devexperts.com\/case-studies\/building-and-launching-a-us-regulated-futures-options-exchange-from-the-ground-up\/\"><strong>built<\/strong><\/a><strong> <\/strong>an exchange from the ground up, so we know a thing or two about setting up state-of-the-art network stacks. We accumulated first-hand experience with all factors that impact latency, and we\u2019ll discuss them in this article.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-i-talk-about-when-i-talk-about-low-latency\">What I talk about when I talk about low latency<\/h2>\n\n\n\n<p>\u201cLow latency\u201d is somewhat of a hype: everyone strives for it, and it\u2019s often used as a marketing buzzword. But what does it actually mean? So, before we discuss it, let\u2019s specify what we mean by \u201clow.\u201d \u201cLow\u201d typically means \u201csub-millisecond,\u201d so we\u2019ll stick to this definition.<\/p>\n\n\n\n<p>The lower the latency, the better for algorithmic trading and market makers. However, latency is less important for retail clients.<\/p>\n\n\n\n<p>It makes sense to understand how latency is measured first. To compare different technologies, we must compare apples to apples and oranges to oranges. Every exchange has some core \u201cinternal\u201d latency (e.g., measured in the matching engine from when the order is received until its execution).<\/p>\n\n\n\n<p>However, this might not include additional network hops between different components and network infrastructure in the exchange data center, converting the data to the output protocol and sending it back to the client. The client&#8217;s connectivity to the exchange also matters.<\/p>\n\n\n\n<p>That&#8217;s where most of the latency can hide. So, the most critical order latency value is measured from when the order is sent until the corresponding report is received.\u00a0<\/p>\n\n\n\n<p>Avoiding the term \u201caverage\u201d and sticking with statistical data and percentiles is also advisable. We can have an excellent average latency even if a significant number of orders are executed within an unacceptable time frame. It\u2019s always important to set the latency goal in quantiles. For example, \u201c99% of all orders should be executed in less than 100 microseconds.\u201d<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Content_Image_1024px.png\" alt=\"Abstract image with flying candlestick charts and lights\" class=\"wp-image-2809\" srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Content_Image_1024px.png 1024w, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Content_Image_1024px-300x169.png 300w, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Content_Image_1024px-768x432.png 768w, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Content_Image_1024px-320x180.png 320w, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Content_Image_1024px-382x215.png 382w, https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Content_Image_1024px-578x325.png 578w\" sizes=\"auto, (max-width: 959px) calc(100vw - 30px), 870px\" \/><\/figure>\n\n\n\n<h2 id=\"h-realworld-example-building-a-highfrequency-trading-platform-for-a-prop-firm\" class=\"wp-block-heading\">Real-world example: Building a high-frequency trading platform for a prop firm<\/h2>\n\n\n\n<p>One scenario that demands low and consistent latency is high-frequency trading (HFT), where a few microseconds can mean significant profit or loss. At Devexperts, we tackled <a href=\"https:\/\/devexperts.com\/case-studies\/high-frequency-trading-platform-for-indian-prop-trading-firm\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">an HFT case<\/a> for one of our clients, India\u2019s top proprietary trading firm.<\/p>\n\n\n\n<p>The client needed a high-frequency trading platform to execute strategies with sub-microsecond precision, and they turned to us for a solution that could handle the speed and complexity of the market. The challenge? Develop a platform capable of running strategies like futures-to-futures arbitrage and cash-futures arbitrage at speeds that leave no room for error. Devexperts delivered a highly customized system that leveraged advanced optimizations, from fine-tuning the TCP stack to eliminating jitter, all while colocating with the National Stock Exchange (NSE) to minimize latency.<\/p>\n\n\n\n<p>The results spoke for themselves. The client received an ultra-low-latency HFT solution that not only matched the performance of their biggest competitors but also solidified their position as one of the top three stock traders in India. By engineering a platform built for speed and reliability, Devexperts helped the firm gain a competitive edge in an industry where milliseconds matter, all while ensuring full compliance with NSE regulations.<\/p>\n\n\n\n<h2 id=\"h-first-but-not-foremost-eliminate-jitter\" class=\"wp-block-heading\">First but not foremost, eliminate jitter&nbsp;<\/h2>\n\n\n\n<p>Achieving consistent latency is much more technologically complex than having good average numbers. <em>The OS, hardware, networking stack, the virtual machine of your selected programming language, garbage collection, etc., can all cause jitter. Eliminating jitter requires a cautious and sophisticated approach to programming and tuning.<\/em><\/p>\n\n\n\n<p>Businesses also prefer higher but consistent latency to a lower but uneven one. <em>For the sake of efficiency, a trading algorithm should be able to predict the impact of latency. And this is only possible if there are no latency spikes.<\/em><\/p>\n\n\n\n<p>To better understand jitter, consider this hypothetical scenario: suppose we have a steady order rate of 500 orders per second, and 99% of these orders are executed within 100 microseconds, with one percent executed around 10 milliseconds (a hundred times worse). The average latency would be 199 microseconds, but within an 8-hour trading session, about 150 thousand orders would have unacceptable latency.<\/p>\n\n\n\n<h2 id=\"h-designing-the-network-protocol\" class=\"wp-block-heading\">Designing the network protocol<\/h2>\n\n\n\n<p>Network protocol design is among the factors that heavily affect latency. Exchanges usually expose two different protocol sets: one for trading and another for market data. Latency matters in both: You should be able to send an order as fast as possible and always see the most up-to-date market picture so that your algorithms can react. Again, this is less important for retail customers. Classic <a href=\"https:\/\/www.pubnub.com\/blog\/how-fast-is-realtime-human-perception-and-technology\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">research<\/a> indicates that humans can only perceive latency of 13ms or more (as in video games or movies). In trading, it also takes considerable time to gauge changing market conditions, make decisions, and click UI buttons. This can take seconds. That\u2019s why we don\u2019t usually see retail-oriented exchanges (say, cryptocurrency venues) or brokers offering any high-performance protocols. On those platforms, usability, simplicity, and ease of integration are much more important than latency.\u00a0<\/p>\n\n\n\n<h2 id=\"h-the-challenges-of-lowlatency-fix-implementation\" class=\"wp-block-heading\">The challenges of low-latency FIX implementation&nbsp;<\/h2>\n\n\n\n<p>FIX protocol is the \u2018lingua franca\u2019 for modern exchange connectivity. It has undergone several revisions since its original design in 1992, and it remains the most widely adopted protocol in the industry.&nbsp; Today, the protocol vet remains the ubiquitous workhorse of financial integration. But building a genuinely low-latency FIX implementation is challenging&nbsp; for a couple of reasons:<\/p>\n\n\n\n<p>1. The \u201cStandard\u201d FIX protocol is usually text-based. Text is not very effective on the wire and is much slower to parse than a special binary representation. Luckily, more and more exchanges have adopted binary FIX implementations or FIX-like protocols (for example, based on <a href=\"https:\/\/www.fixtrading.org\/standards\/sbe\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">SBE<\/a>). We can take <a href=\"https:\/\/www.cmegroup.com\/confluence\/display\/EPICSANDBOX\/iLink+3+Binary+Order+Entry\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">CME\u2019s iLink<\/a> as an example of a compact and efficient message.\u00a0<\/p>\n\n\n\n<p>2. FIX protocol is usually TCP-based. TCP is a universal network protocol that orders and retransmits packets, including lost ones, providing a reliable data stream between two connected endpoints. However, the protocol requires careful tuning. Otherwise, it may cause latency in the range of dozens of milliseconds (in case of a packet loss, for example). Issues with TCP tuning are one of the main reasons exchanges employ proprietary UDP-based transports for market data distribution.<\/p>\n\n\n\n<p>To achieve the lowest possible latency in market data dissemination, exchanges use UDP for their market data protocols. Unlike TCP, UDP doesn\u2019t guarantee that network packets are delivered or that they&#8217;re delivered in order. But, being a much simpler protocol, it\u2019s also faster. UDP also offers some unique capabilities, such as multicast distribution, where the traffic is replicated by network equipment and hardware to all parties. This allows for some very efficient market data protocols (take <a href=\"https:\/\/www.cmegroup.com\/confluence\/display\/EPICSANDBOX\/CME+MDP+3.0+Market+Data\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">CME\u2019s MDP 3.0<\/a> or <a href=\"https:\/\/www.nasdaqtrader.com\/content\/technicalsupport\/specifications\/dataproducts\/NQTVITCHSpecification.pdf\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Nasdaq\u2019s ITCH<\/a> as an example). One example that explains why these protocols are so fast is the \u2018arbitrage\u2019 approach: consumers might listen to several identical channels simultaneously and use the first message they see regardless of the source channel. This helps avoid temporary network, hardware, or OS hiccups.<\/p>\n\n\n\n<h2 id=\"h-the-limitations-of-lowlevel-market-data-protocols\" class=\"wp-block-heading\">The limitations of low-level market data protocols<\/h2>\n\n\n\n<p>Low-level market data protocols are not without caveats.<\/p>\n\n\n\n<p>1. There is no \u201cgold standard\u201d for data distribution, so the implementations are incompatible. This requires all the connecting parties to roll out their implementations for each exchange, which limits adoption.<\/p>\n\n\n\n<p>2. To overcome UDP limitations and retain performance, the protocols employ some very sophisticated algorithms. It\u2019s the consumer&#8217;s responsibility to properly handle all the possible situations that might occur in such a protocol. It requires meticulous engineering, but the benefits can be huge.&nbsp;<\/p>\n\n\n\n<p>A future opportunity for the exchanges could be in offering two market data protocols: a low-level protocol for those consumers who need it (market-makers or algorithmic trading shops) and a simple higher-level TCP-based protocol for retail-oriented consumers (thus driving adoption).<\/p>\n\n\n\n<h2 id=\"h-regulatory-compliance-and-industry-standards\" class=\"wp-block-heading\">Regulatory compliance and industry standards<\/h2>\n\n\n\n<p>Speed is critical, but it\u2019s not the only factor that matters. Regulatory compliance and adherence to industry standards are just as essential for ensuring long-term success. At Devexperts, we don\u2019t just focus on low latency and system performance; we guarantee that every solution meets the strict regulatory requirements of the markets in which it operates. Whether it\u2019s complying with National Stock Exchange (NSE) regulations in India or adhering to global standards for financial data handling and security, our approach is meticulous.<\/p>\n\n\n\n<p>With <a href=\"https:\/\/devexperts.com\/news\/devexperts-announces-technology-updates-targeting-mifid-ii-requirements-for-financial-institutions\/\">updates targeting MiFID II requirements<\/a>, we ensure that our solutions not only meet the speed demands of high-frequency trading but also uphold strict regulatory standards for transparency, data management, and reporting. By integrating MiFID II-compliant updates, we enable financial institutions to meet evolving regulatory challenges without sacrificing agility, positioning them to thrive in a market where compliance and competitiveness go hand in hand.<\/p>\n\n\n\n<h2 id=\"h-last-but-not-least-exchange-colocation-and-network-stack\" class=\"wp-block-heading\">Last but not least: exchange colocation and network stack<\/h2>\n\n\n\n<p>People often mention an exchange colocation as the only way to achieve the lowest latency possible. Indeed, suppose your infrastructure is close to the exchange servers (preferably in the same data center), and your connectivity and network equipment are superior. In that case, you might achieve much better latency than the competition. Even the distance from the exchange server in the same data center might matter in the low-latency world. Sometimes an exchange can roll out some more performant hardware just for a single \u201cimportant\u201d connection partner \u2013 yielding performance benefits. However, we see a growing demand for \u201cequidistance,\u201d and some venues in the market declare that all the connecting parties receive the same quality of service by design. Such venues may even embed throttling in their protocols to worsen the latency so that everyone is in the same equal position.<\/p>\n\n\n\n<p>An important way of decreasing latency is by utilizing a state-of-the-art network stack. All the systems at exchanges and brokers are usually distributed, with multiple independent components connected with a network \u2013 so network speed is crucial. Market vendors such as <a href=\"https:\/\/www.mellanox.com\/\">Mellanox<\/a> and <a href=\"https:\/\/www.xilinx.com\/products\/boards-and-kits\/ethernet-adapters.html)\">SolarFlare<\/a> offer high-performance networking equipment. Their adapters usually provide DMA capabilities (meaning the data received from the wire is immediately put into the shared memory for the consumer process to read it, involving no copies). They may include their own heavily optimized software network stacks that bypass the OS implementation completely. Such adapters indeed may provide end-to-end network latency of 1-2 microseconds for a network hop, but working with them requires careful tuning and OS configuration.<\/p>\n\n\n\n<h2 id=\"h-recap\" class=\"wp-block-heading\">Recap<\/h2>\n\n\n\n<p>We hope we have provided insight into how to achieve low and consistent latency. If you have experienced decreasing latency or want to discuss building exchanges, write to us! In the meantime, check out some of our <a href=\"https:\/\/devexperts.com\/case-studies\/building-and-launching-a-us-regulated-futures-options-exchange-from-the-ground-up\/\"><strong>recent work<\/strong><\/a><strong>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Low latency is indispensable for algorithmic trading and numerous market participants\u2014the lower, the better. However, achieving it is not enough: &hellip; <\/p>\n","protected":false},"author":32,"featured_media":2820,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2020],"tags":[11,633,2030],"class_list":["post-2806","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fintech","tag-financial-software","tag-market-data","tag-matching-engine"],"acf":{"nifty_post_card_image":7446,"nifty_post_card_index_big":4306,"nifty_post_inner_image":7448,"nifty_post_card_banner":4304},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Achieving Consistent Low Latency on an Exchange<\/title>\n<meta name=\"description\" content=\"Covering latency matters from A to Z: what we mean by &quot;low latency&quot;, when it is important, and how to tune all the affecting factors.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Achieving Consistent Low Latency on an Exchange\" \/>\n<meta property=\"og:description\" content=\"Covering latency matters from A to Z: what we mean by &quot;low latency&quot;, when it is important, and how to tune all the affecting factors.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/\" \/>\n<meta property=\"og:site_name\" content=\"Devexperts Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/devexperts\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-12T14:53:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-23T08:12:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/LinkedIn-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Yury Kudryashov\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Twitter-1.png\" \/>\n<meta name=\"twitter:creator\" content=\"@devexperts\" \/>\n<meta name=\"twitter:site\" content=\"@devexperts\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yury Kudryashov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/\"},\"author\":{\"name\":\"Yury Kudryashov\"},\"headline\":\"Achieving Consistent Low Latency on an Exchange\",\"datePublished\":\"2021-05-12T14:53:32+00:00\",\"dateModified\":\"2024-12-23T08:12:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/\"},\"wordCount\":1753,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Header_3840x700-1.png\",\"keywords\":[\"financial software\",\"market data\",\"matching engine\"],\"articleSection\":[\"Fintech\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/\",\"url\":\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/\",\"name\":\"Achieving Consistent Low Latency on an Exchange\",\"isPartOf\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Header_3840x700-1.png\",\"datePublished\":\"2021-05-12T14:53:32+00:00\",\"dateModified\":\"2024-12-23T08:12:38+00:00\",\"description\":\"Covering latency matters from A to Z: what we mean by \\\"low latency\\\", when it is important, and how to tune all the affecting factors.\",\"breadcrumb\":{\"@id\":\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#primaryimage\",\"url\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Header_3840x700-1.png\",\"contentUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Header_3840x700-1.png\",\"width\":3840,\"height\":700,\"caption\":\"Covering latency matters from A to Z\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devexperts.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Achieving Consistent Low Latency on an Exchange\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devexperts.com\/blog\/#website\",\"url\":\"https:\/\/devexperts.com\/blog\/\",\"name\":\"Devexperts Blog\",\"description\":\"We make complex finance ideas on technology, innovation and business simple\",\"publisher\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devexperts.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\",\"name\":\"Devexperts LLC\",\"url\":\"https:\/\/devexperts.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png\",\"contentUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png\",\"width\":167,\"height\":30,\"caption\":\"Devexperts LLC\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/devexperts\/\",\"https:\/\/x.com\/devexperts\",\"https:\/\/www.linkedin.com\/company\/devexperts\",\"https:\/\/www.youtube.com\/channel\/UCF3FRmes2KrcVsTXQ1aAB5w\/featured\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Achieving Consistent Low Latency on an Exchange","description":"Covering latency matters from A to Z: what we mean by \"low latency\", when it is important, and how to tune all the affecting factors.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/","og_locale":"en_US","og_type":"article","og_title":"Achieving Consistent Low Latency on an Exchange","og_description":"Covering latency matters from A to Z: what we mean by \"low latency\", when it is important, and how to tune all the affecting factors.","og_url":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/","og_site_name":"Devexperts Blog","article_publisher":"https:\/\/www.facebook.com\/devexperts\/","article_published_time":"2021-05-12T14:53:32+00:00","article_modified_time":"2024-12-23T08:12:38+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/LinkedIn-1.png","type":"image\/png"}],"author":"Yury Kudryashov","twitter_card":"summary_large_image","twitter_image":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Twitter-1.png","twitter_creator":"@devexperts","twitter_site":"@devexperts","twitter_misc":{"Written by":"Yury Kudryashov","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#article","isPartOf":{"@id":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/"},"author":{"name":"Yury Kudryashov"},"headline":"Achieving Consistent Low Latency on an Exchange","datePublished":"2021-05-12T14:53:32+00:00","dateModified":"2024-12-23T08:12:38+00:00","mainEntityOfPage":{"@id":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/"},"wordCount":1753,"commentCount":0,"publisher":{"@id":"https:\/\/devexperts.com\/blog\/#organization"},"image":{"@id":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#primaryimage"},"thumbnailUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Header_3840x700-1.png","keywords":["financial software","market data","matching engine"],"articleSection":["Fintech"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/","url":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/","name":"Achieving Consistent Low Latency on an Exchange","isPartOf":{"@id":"https:\/\/devexperts.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#primaryimage"},"image":{"@id":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#primaryimage"},"thumbnailUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Header_3840x700-1.png","datePublished":"2021-05-12T14:53:32+00:00","dateModified":"2024-12-23T08:12:38+00:00","description":"Covering latency matters from A to Z: what we mean by \"low latency\", when it is important, and how to tune all the affecting factors.","breadcrumb":{"@id":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#primaryimage","url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Header_3840x700-1.png","contentUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2021\/04\/Header_3840x700-1.png","width":3840,"height":700,"caption":"Covering latency matters from A to Z"},{"@type":"BreadcrumbList","@id":"https:\/\/devexperts.com\/blog\/achieving-consistent-low-latency-on-an-exchange\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devexperts.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Achieving Consistent Low Latency on an Exchange"}]},{"@type":"WebSite","@id":"https:\/\/devexperts.com\/blog\/#website","url":"https:\/\/devexperts.com\/blog\/","name":"Devexperts Blog","description":"We make complex finance ideas on technology, innovation and business simple","publisher":{"@id":"https:\/\/devexperts.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devexperts.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/devexperts.com\/blog\/#organization","name":"Devexperts LLC","url":"https:\/\/devexperts.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png","contentUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png","width":167,"height":30,"caption":"Devexperts LLC"},"image":{"@id":"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/devexperts\/","https:\/\/x.com\/devexperts","https:\/\/www.linkedin.com\/company\/devexperts","https:\/\/www.youtube.com\/channel\/UCF3FRmes2KrcVsTXQ1aAB5w\/featured"]}]}},"_links":{"self":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/2806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/comments?post=2806"}],"version-history":[{"count":41,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/2806\/revisions"}],"predecessor-version":[{"id":8281,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/2806\/revisions\/8281"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/media\/2820"}],"wp:attachment":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/media?parent=2806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/categories?post=2806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/tags?post=2806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}