Compare commits
No commits in common. "e3daedf944ab4c578af7a4be6123561942e4832f" and "7f22b3c33769813ab9e3a797fb57c089b5d82e27" have entirely different histories.
e3daedf944
...
7f22b3c337
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -2,4 +2,3 @@
|
||||||
/result
|
/result
|
||||||
/.pre-commit-config.yaml
|
/.pre-commit-config.yaml
|
||||||
/plantuml-images/
|
/plantuml-images/
|
||||||
presentation.pdf
|
|
||||||
|
|
5
Makefile
5
Makefile
|
@ -1,7 +1,4 @@
|
||||||
all: report.pdf presentation.pdf
|
all: report.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)
BIN
figs/component-diagram.png
(Stored with Git LFS)
Binary file not shown.
123
presentation.md
123
presentation.md
|
@ -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
|
|
Loading…
Reference in a new issue