report: add introduction
This commit is contained in:
parent
46d6011c8a
commit
d9ee4abd06
44
report.md
44
report.md
|
@ -36,6 +36,50 @@ and my girlfriend Sarah for her unwavering support.
|
||||||
|
|
||||||
# Introduction
|
# Introduction
|
||||||
|
|
||||||
|
My internship is about benchmarking the new service being used at IMC for
|
||||||
|
connecting to and communicating with exchanges.
|
||||||
|
|
||||||
|
IMC is a technology-driven trading company, specializing in market making on
|
||||||
|
various exchanges world-wide. Due to this position, they strive for continuous
|
||||||
|
improvement by making use of technology. And in particular, they have to pay
|
||||||
|
special attention to the performance of their trading system across the whole
|
||||||
|
infrastructure.
|
||||||
|
|
||||||
|
In the face of continuous improvement of their system, the performance aspect of
|
||||||
|
any upgrade must be kept at the forefront of the mind in order to stay
|
||||||
|
competitive, and rise to a dominant position globally.
|
||||||
|
|
||||||
|
My project fits into the migration of IMC's trading algorithms from their legacy
|
||||||
|
*driver* connecting each of them directly to the exchanges, to a new central
|
||||||
|
service being developed to translate and interface between IMC-internal
|
||||||
|
communication and exchange-facing orders, requests, and notifications.
|
||||||
|
|
||||||
|
Given the scale of this change, and how important such a piece of software is in
|
||||||
|
the trading infrastructure of the company, the performance impacts of its
|
||||||
|
introduction and further development must be measured, and its evolution
|
||||||
|
followed closely.
|
||||||
|
|
||||||
|
The first part of my internship was about writing a framework to benchmark such
|
||||||
|
a gateway with a dummy load being generated according to scenarios that can
|
||||||
|
simulate varying circumstances. From those runs, it is also in charge of
|
||||||
|
recording the performance measurements that it has gathered from the gateway,
|
||||||
|
allowing for further analysis of a single run and comparison of their evolution
|
||||||
|
as time goes on.
|
||||||
|
|
||||||
|
This initial work being finished, I integrated my framework with the tooling in
|
||||||
|
use at IMC to allow for smoother use of the runner, either locally for
|
||||||
|
development purposes or remotely for measurements. This is also used to test for
|
||||||
|
breakage in the Continuous Integration pipeline, to keep the benchmarks runnable
|
||||||
|
as changes are merged into the code base.
|
||||||
|
|
||||||
|
Once that was done, I then picked up a user story about compatibility testing:
|
||||||
|
with the way IMC deploys software, we want to ensure that both the gateway and
|
||||||
|
its clients are retro and forward compatible to avoid any surprises in
|
||||||
|
production. This was only ensured at the protocol level when I first worked on
|
||||||
|
this subject, my goal being to add tests using the actual binaries used in
|
||||||
|
production to test their behaviour across various versions, ensuring that they
|
||||||
|
behave identically.
|
||||||
|
|
||||||
# Subject
|
# Subject
|
||||||
|
|
||||||
The first description of my internship project was given to me as:
|
The first description of my internship project was given to me as:
|
||||||
|
|
Loading…
Reference in a new issue