Compare commits

..

No commits in common. "e3daedf944ab4c578af7a4be6123561942e4832f" and "7f22b3c33769813ab9e3a797fb57c089b5d82e27" have entirely different histories.

4 changed files with 1 additions and 131 deletions

1
.gitignore vendored
View file

@ -2,4 +2,3 @@
/result
/.pre-commit-config.yaml
/plantuml-images/
presentation.pdf

View file

@ -1,7 +1,4 @@
all: report.pdf presentation.pdf
all: report.pdf
report.pdf: report.md begin-document.tex config.yaml header.tex
pandoc --defaults config.yaml
presentation.pdf: presentation.md
pandoc -t beamer --filter pandoc-plantuml --dpi=300 -o $@ $<

BIN
figs/component-diagram.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,123 +0,0 @@
---
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