„Rychlost není výhoda, ale nutnost.“ O výkonu, latenci a velkých datech s Petrem Filipským

26. 11. 2025

Nedávno jsi dal na pražském Matfyzu přednášku o tom, co se děje „pod kapotou“ limit order book, jak volby v implementaci ovlivňují latenci a proč na reálných přístupech k datům a profilování záleží. Latence ale původně nebyla tvoje téma a začínal jsi jako student počítačové grafiky. Kudy vedla cesta z Matfyzu konce devadesátek do vedení C++ dev týmu algotradingové firmy?

Možná tě zklamu, ale není to žádná dramatická legenda o tom, jak jsem od dětství věděl, že budu programátor. Měl jsem staršího bráchu, a kam šel brácha, tam jsem šel já. On byl do programování zažraný od mala a prošel si tím už v době, kdy to bylo úplně jiné než dneska.

Kdy se zlomilo?

Když byl brácha v prváku na Matfyzu, dost času trávil v Troji v počítačovém labu – a já, tehdy ještě středoškolák, jsem chodil s ním. Doma jsme tehdy počítač neměli, takže to pro mě byl první systematický kontakt s PC a s tím, že si můžeš něco postavit sám. Chodil jsem tam programovat, zkoušet věci, dělat hry, hrát si s grafikou.

Takže když jsi pak šel na Matfyz, už to bylo jasné pokračování?

Studoval jsem tam v letech 1994 až 2000, a to byla doba, kdy se technologie měnily strašně rychle. Když dneska někdo řekne „nástup IT“, zní to možná abstraktně – ale nám se to tehdy dělo doslova pod rukama. Byla to doba dot-com éry, kdy se počítače začaly masově připojovat k internetu, vznikaly nové firmy, obory i technologie, a každý rok znamenal zásadní posun. Ta atmosféra byla plná očekávání a nových možností – trochu jako dnes s umělou inteligencí. I tehdy se otevíraly úplně nové cesty a nikdo přesně nevěděl, kam to povede, ale všichni cítili, že se něco zásadního mění.

Jako obor sis vybral počítačovou grafiku. 

Fascinovalo mě, co se děje mezi daty a obrazem. Klíčová postava pro mě byl docent Pelikán, výborný pedagog, který mě pro grafiku a práci s komplexním hardwarem nadchnul. Najednou to nebyly jen nápady, ale reálný svět výkonu: vizualizace objemových dat, OpenGL, první grafické karty, které začaly přebírat část výpočtů od procesoru, a do toho grafické stanice Silicon Graphics – tehdy špička dostupné technologie. 

Jak technologie poskočily během doby, co jsi studoval?

Bylo fascinující sledovat ten kontrast: doma jsem měl 386ku bez koprocesoru pro výpočty s plovoucí desetinnou čárkou, kde každý výpočet trval věčnost, a vedle toho běžely na škole extrémně výkonné stroje, optimalizované právě pro grafické operace.

Ten rozdíl se ale během pár let začal dramaticky stírat. Když jsme s bráchou sehnali do PC kartu 3dfx Voodoo Banshee s hardwarovou akcelerací pro OpenGL, najednou se ukázalo, že i domácí počítač může v některých úlohách konkurovat těm milionovým grafickým stanicím – a v některých je dokonce překonat. To bylo ohromující. Technologie se tehdy vyvíjela tak rychle, že jsme prakticky každý rok museli upgradovat nebo vyměnit celý počítač. 

Co ti ze studia zůstalo do dalších let?

Díky svojí diplomce - vizualizaci objemových dat v OpenGL - jsem se začal zajímat o to, kde se výkon bere, kde se ztrácí, jak se data transformují do obrazu a jak funguje výkonový „stack“ od hardware až po aplikaci. Matfyz mě v tomhle naučil systémově přemýšlet: nejen napsat něco, co funguje, ale chápat složitost řešení a její převod na praktickou efektivitu výsledného kódu. Já se od té doby považuju za systémového programátora – zajímá mě, jak software běží na železe.

Po škole jsem nastoupil do firmy, která „na zelené louce“ vyvíjela nový produkt a poprvé jsem se tam setkal s daty ve velkém objemu. Nešlo jen o to, aby to správně dělalo to, co má, ale aby to zvládlo velké množství práce za krátký čas. To mě bavilo, protože výkon nebyl nějaký bonus navíc, ale součást definice. Dokud to nebylo dost rychlé, nebylo hotovo. 

Rychlost je v algotradingu taky součást definice. :-) Věděl jsi vlastně něco o finančních trzích a automatizovaném obchodování, když jsi do Qminers nastupoval?

Do Qminers jsem přišel ve chvíli, kdy firma byla násobně menší než dnes a měla hodně startupovou atmosféru. O tradingu jsem tehdy nevěděl prakticky nic, ale zaujalo mě, jak rozumně vypadala codebase a jak smysluplně ty věci dělali. A hlavně lidi a kultura. Co mě nadchlo, byl přístup k vývoji – jakmile se něco opravilo nebo vylepšilo, hned se to objevilo v produkci. Pro programátora, který má rád jednoduchost, dobře vedený kód a viditelný dopad své práce, je tohle opravdu atraktivní. 

Jak rychle ses tady dostal k tomu, čemu se nyní intenzivně věnuješ, tedy k latenci?

V podstatě hned. Dřív jsem řešil hlavně throughput, tady se řeší obojí. V backtestech chceš velký objem dat co nejrychleji prohnat systémem, ale v produkci jde hlavně o to, jak rychle zareaguješ na tržní impuls. Ty dvě věci spolu někdy jdou ruku v ruce, někdy jdou proti sobě. Často jde o jemné balancování, kde nejde jednoduše spočítat, kolik přesně procent výnosu ti nižší latence v praxi přinese a kolik tě to naopak „stojí“ třeba na komplexitě kódu. Hledáš sweet spot mezi rychlými backtesty a rychlou reakcí na trh. Je to kombinace technické expertizy, zkušeností a citu – a samozřejmě také tvrdých dat z měření a jejich interpretaci. 

Tvůj tým programuje v C++. Proč právě tenhle programovací jazyk? V čem je jeho výhoda?

Když tě zajímá, jak software skutečně běží na hardware, jak efektivně využívá procesor, paměť a čas, tak C++ je pořád výborný nástroj. Dnešní překladače generují extrémně efektivní strojový kód, a přitom ti nechávají velkou míru kontroly nad výkonem.

A Rust? Hodně lidí teď říká, že je to budoucnost. Ty to vidíš jak?

Rust je dnes hodně populární a já ho beru jako velmi zajímavého nástupce. Při zachování kontroly nad tím, co se děje pod kapotou, přináší vyšší bezpečnost a odstranění celé třídy chyb už při překladu. Borrow checker ti dává garanci, že v kódu nemáš „spící“ chyby typu undefined behavior. Pro nový projekt může dávat Rust obrovský smysl. Zároveň je realita taková, že C++ tady bude ještě strašně dlouho, protože svět je plný obrovských C++ codebases, které nikdo nepřepíše. Takže pro mladého člověka i dnes platí: nauč se oboje.

Když už jsme u mladých lidí – co bys vzkázal dnešním matfyzákům?

Mám pocit, že studenti to dneska nemají vůbec jednoduché. Když jsem studoval já, bylo to přehlednější. Dneska je víc možností, víc zahlcení, víc nejistoty, a do toho AI. Všude se řeší, koho AI nahradí a jestli má vůbec smysl učit se programovat, když „to model napíše za mě“.

Já si myslím, že kvalita výstupu bude ještě dlouho záviset na kvalitě promptu a know-how člověka. Pokud programátor neví, co je dobře a co špatně, nedokáže AI účinně vést. AI je skvělý nástroj a obrovský effectivity booster, ale jen tehdy, když víš, jak se ptát a jak posoudit výsledek. Vlastníkem kódu jsi ty, ne model. A solidní základy – algoritmy, datové struktury, vlastnosti systémů, výkon – jsou dneska důležitější než kdy dřív. Kdo rozumí tomu, co se děje pod kapotou, bude umět AI využít na maximum.