--- title: "IMC Internship" author: "Bruno BELANYI" theme: "Frankfurt" institute: "EPITA" date: 2021-08-30 colortheme: "seahorse" fontsize: 10pt urlcolor: blue linkstyle: bold aspectratio: 169 lang: en-US section-titles: true toc: true header-includes: | \setbeamertemplate{section page}{% \begingroup% \centering% \begin{beamercolorbox}[sep=12pt,center,colsep=-4bp,rounded=true,shadow=true]{section title}% \usebeamerfont{section title}% \insertsection% \par% \end{beamercolorbox}% \endgroup% } \addtobeamertemplate{navigation symbols}{}{% \usebeamerfont{footline}% \usebeamercolor[fg]{footline}% \hspace{1em}% \insertframenumber/\inserttotalframenumber% } --- # Introduction ## IMC & Global Execution team * Market making firm * Multiple offices * Over 20 exchanges ## Subject of the internship > The project is about benchmarking a new service we're building related to > exchange connectivity. It would involve writing a program to generate load on > the new service, preparing a test environment and analyzing the performance > results. Time permitting might also involve making performance improvements to > the services. ## Motivation * Early feedback during development * Track regressions * Various scenarios ## Additional work * Compatibility testing * Test both client and gateway processes * Test forward and backward compatibility * Similar to benchmark in its architecture # Work accomplished ## Parameters of a run * Lab setup to mirror production * Multiple scenarios * Multiple exchanges and gateways ## Workflow * Scenarios are exchange-agnostic * Running a benchmark locally and remotely in a transparent manner * Single command to run ## Architecture ![Component diagram](figs/component-diagram.png){ height=80% } ## Results ![Sample plots, with timings censored](figs/remote-plots-presentation-censored.png){ width=90% } ## Compatibility testing * Existing tests only test single version of client and server in lock step * Forward and backward compatibility * Multi-process testing # Benefits of the internship ## To the company * Framework to use for benchmarking gateways * Nicely integrated in IMC's build system * Easy to use for new exchanges * Easy to extend with new scenarios * Ground work on compatibility testing * Peace of mind * Ensure upgrades/downgrades happen smoothly * Reduce downtimes due to failures ## To me * Part of a good team & company * Learn about finance sector * Deal with new problems I had not encountered before # Conclusion ## Challenges of the internship * Integration among pre-existing code * Working conditions due to COVID * Debugging asynchronous, multi-process systems ## Further work * Integrate with in-house change-point detection * Integrate with packet sniffing setup * More exchanges & scenarios