Díl 63. – Zvláštnosti vývoje algoritmického automatu

V tomto dílu se s Františkem soustředíme především na zásadní rozdíly v přístupu k vývoji aplikace pro algoritmické obchodování a běžnými enterprise aplikacemi, které pravděpodobně vytváří řada z nás. Františkova předchozí kariéra se odehrávala především v bankovním sektoru v oblasti elektronického bankovnictví. Vývoj podobných webových aplikací si každý z nás v dnešní době už asi umí představit, v případě bankovnictví je práce okořeněná navíc jen větším důrazem na kvalitu výstupu a bezpečnost. Co je tedy tak odlišného při psaní obchodovacího automatu?!

Tento díl vám přináší Luhačovická pražírna kávy. Kávové předplatné můžete spolu s Feršem a Novojem vychutnávat společně. Při zadání slevového kódu “kafemlejnek” v košíku dostanou naši posluchači exklusivní slevu 15%.

Luhačovická pražírna kávy

Jednou ze zajímavostí je to, že pokud optimalizujete obchodovací algoritmus na rychlost (latenci), vyplatí se v tomto segmentu znovu vynalézat kolo. Vymýšlení vlastních optimalizovaných řešení, místo použití generických knihoven, může ve svém výsledku přinést v kritických momentech několik mikrosekund náskoku, který umožní algoritmu vyhrát v konkurenci ostatních. František také bez uzardění přiznává, že teprve při psaní algotradingové aplikace se naučil reálně programovat. Teprve tady si skutečně sáhnul na vlastní implementaci B-stromů a řadu dalších low-level datových struktur a algoritmů, které my ostatní používáme zaobalené do high-level knihoven aniž bychom o tom leckdy sami věděli.

Další z překvapivých momentů je ten, že chyba aplikace s potenciální finanční ztrátou, může být pro zadavatele – obchodníky bez problémů akceptovatelná. Pokud na druhé straně dostanou novou verzi aplikace s úpravami, které jim umožní obchodovat s náskokem oproti ostatním a potenciálně vydělat násobně víc.

Dozvíme se, že na první pohled složité optimalizace nemusí v Javě ve výsledku až tak bolet. Jednou formou zpomalení v aplikacích obecně jsou systémová volání kernelu (context switch). Při psaní aplikací, které vyžadují nekompromisní výkon (jakými jsou např. i databáze) se doporučuje minimalizovat počet systémových volání kernelu a co lze si spravovat aplikačně sami. František zmiňuje existenci síťových karet, které si umí samy generovat časový otisk (dotaz na aktuální čas totiž obvykle vyžaduje právě systémové volání) a možnost vyjmout síťovou kartou ze správy kernelem a spravovat si ji nativně aplikací přes C knihovnu implementující TCP/IP stack. Tímto způsobem je možné se dostat i na řádově lepší rychlosti.

Věříme, že tento druhý díl, pohladí na duši všechny tech-geeky mezi našimi posluchači.

Video

Pouze audio

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.