Compare commits
3 commits
7f22b3c337
...
e3daedf944
Author | SHA1 | Date | |
---|---|---|---|
Bruno BELANYI | e3daedf944 | ||
Bruno BELANYI | 0a0fb59978 | ||
Bruno BELANYI | 18a246b6e4 |
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -2,3 +2,4 @@
|
||||||
/result
|
/result
|
||||||
/.pre-commit-config.yaml
|
/.pre-commit-config.yaml
|
||||||
/plantuml-images/
|
/plantuml-images/
|
||||||
|
presentation.pdf
|
||||||
|
|
5
Makefile
5
Makefile
|
@ -1,4 +1,7 @@
|
||||||
all: report.pdf
|
all: report.pdf presentation.pdf
|
||||||
|
|
||||||
report.pdf: report.md begin-document.tex config.yaml header.tex
|
report.pdf: report.md begin-document.tex config.yaml header.tex
|
||||||
pandoc --defaults config.yaml
|
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)
Normal file
BIN
figs/component-diagram.png
(Stored with Git LFS)
Normal file
Binary file not shown.
123
presentation.md
Normal file
123
presentation.md
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
---
|
||||||
|
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
|
Loading…
Reference in a new issue