Bank inwestycyjny

1

Orientuje sie ktos z was jak dostac prace przy low latency w bankach inwestycyjnych? Jakie wymagania tam stawiaja? Trzeba miec studia czy patrza tylko na umiejetnosci i jakie technologie tam stosuje? Z tego co przegladalem forum,to nic tresciwego nie znalazlem ale zauwazylem,ze chyba w takiej dziedzine pracuje @wojciech.kudla wiec jakbys mogl opisac jak sie tam dostac co trzeba umoec i jakie sa rozmowy rekrutacyjne bylby bardzo wdzieczny

0

@Shalom autor umie dodac kropke,tylko korzysta z malego smartfona,ktory ledwo lapie zasiego i strasznie sie zacina wiec od razu ten sarkazm nie byl potrzebny;)

19

@shalom "@Krwawy Pomidor"

W HFT przy Javie mozna najczesciej popracowac w 3 roznych obszarach:

  • quant developers uzywaja Javy/R/Matlab do modeli pricingowych
  • fx developers tworza funkcjonalnosc biznesowa w Javie
  • low latency/core java developers zajmuja sie scisle aspektami wydajnosciowymi na wszystkich plaszczyznach

Przez ostatnie lata pracowalem w tej trzeciej roli; na temat dwoch pozostalych moge sie jedynie pobieznie wypowiedziec.
Nie ma okreslonych standardowych wymagan do low latency Java, bo kazda organizacja oczekuje/wymaga czego innego.
Idac np. na rozmowe o prace w e-FX w Deutsche Bank otrzymasz zupelnie inny zestaw pytan niz na rozmowie o prace w e-Rates w Bank of Ameryca Merill Lynch.
Przechodzac do szczegolow, zakladam ze pytanie skupia sie bardziej wokol tej trzeciej specjalizacji.

Potrzebna jest po prostu przegladowa, dobrze ugruntowana wiedza z wszystkich warstw technologicznych bioracych udzial w procesie biznesowym.

  1. HW
  • architektury procesorow i ich szczegolow implementacyjnych (np. rozmiar linii cache, rozmiary L1, L2, LLC, czasy dostepu, model pamieci, asocjacyjnosc cache, stosowane techniki optymalizacyjne (np. IPC snooping, store-to-load forwarding, pipelining, prefetching).
  • znajmosc problemow zwiazanych ze speculative execution lub optymalizacjami kompilatora, np. data dependency, register spilling
  • znajomosc niskopoziomowych problemow przetwarzania wspolbieznego (false sharing, true sharing, ABA)
  • znajmosc pozostalych problemow zwiazanych z SMP, zwlaszcza protokoly cc-NUMA
  • znajomosc konfigurowalnych aspektow funkcjonowania CPU (VTx, HT, cstates, pstates)
  • znajomosc niektorych szczegolow funkcjonowania pamieci podrecznej,
  • rozwiazania wspierajace ultra low-latency networking (onload/offload, DMA/RDMA, marki takie jak SolarFlare, Infiniband, Mellanox)
  • rozwiazania do precyzyjnego pomiaru i synchronizacji czasu (PTP, GPS, Meinberg)
  • rozwiazania do przechowywania danych (np. dyski poprzez PCI-e)
  • cpu profiling (linux perf, Intel Amplifier Studio, AMD CodeXL)
  1. OS
  • znajomosc architektury *nix
  • znajomosc szczegolow implemetacyjnych kernela (do poziomu RCU, task scheduling, irq routing, mem-backed IO)
  • znajomosc podsystemu zarzadzania pamiecia, czyli wszystko zwiazane z pamiecia wirtualna (np. huge pages, propagacja PTE, TLB shootdowns, malloc() i jego implementacje)
  • znajomosc implementacji HPET (ACPI, TSC, itp) + wiedza o ich wadach i zaletach
  • umiejetnosc tuningu jadra systemu operacyjnego pod katem konkretnego profilu (kernel boot arguments (np, isolcpus, rcu_nocbs, nohz), parametry sysctl (np. numa_balancing, sched_wakeup_granularity_ns, dirty_writeback_centisecs))
  • znajomosc podsystemu /proc (wiekszosc)
  • znajomosc zawartosci /sys
  • znajmosc jezyka skryptowego opartego na sh
  • strace/ftrace/systemtap/cgroups + cala masa innych narzedzi diagnostycznych
  1. Runtime
  • znajomosc specyfikacji JVM
  • znajmosc implementacji JVM (OpenJdk/Zulu)
  • doswiadczenie w practy z roznymi implementacjami JVM i zrozumienie roznic pomiedzy nimi
  • zrozumienie JMM (jsr-133, jsr-166)
  • znajomosc algorytmow GC
  • optymalizacje JIT (C1 & C2), umiejetnosc czytania ze zrozumieniem assembly wypluwanego przez PrintAssembly
  • znajomosc i umiejetnosc czytania surowego bytecode'u + doswiadczenie w bytecode weaving (asm/cglib)
  • tooling z jdk (jhat, jmap, jstack, etc).
  • zrozumienie kodu powszechnie stosowanych klas z JDK
  1. Pozostale
  • znajomosc C/C++
  • protokoly sieciowe
  • protokoly serizalizacyjne
  • concurrency - zdolnosc do implementowania algorytmow i struktur danych, ktore sa gc-free/lock-free/wait-free/zero-copy
  • zrozumienie podstawowych zagadnien ze statystyki, matematyki wyzszej, kombinatoryki, teorii zbiorow
  • znajomosc popularnych bibliotek i ich wad (pod katem wydajnosci)
  • KDB+, 29West, TibRV
  • R, Q, Matlab
  • narzedzia (np. JProfiler, Enterprise Architect, Jira, Bamboo, Confluence, itp)
  • dobre zrozumienie (i efektywne stosowanie) zasad softare engineeringu
  • duza odpornosc na stres

To tak na szybko z glowy. Niestety nie moge poswiecic na to wiecej czasu. Mozesz znalezc jeszcze cos ciekawego w moim AMA.

Pozdrawiam
Wojtek

0

@wojciech.kudla i Ty to w wiekszosci umiales jak rekrutowales sie do low latency? Ile miales juz doswiadczenia?

0

@wojciech.kudla a myslales o nowym AMA bo to gdzies z przed 3 lat jest?;)

0
Krwawy Pomidor napisał(a):

@wojciech.kudla i Ty to w wiekszosci umiales jak rekrutowales sie do low latency? Ile miales juz doswiadczenia?

Do tej pory nie moge z czystym sumieniem powiedziec ze to "umiem". Pierwsza prace zwiazana z low latency dostalem w LMAXie po bardzo przyjemnej rozmowie rekrutacyjnej oscylujacej glownie wokol zagadnien, w ktorych wtedy w miare dobrze sie poruszalem, czyli GC tuning i skalowanie. Mialem wtedy ok 7 lat doswiadczenia, z czego ostatnie 2-3 w performance troubleshooting.

piekny sprzatacz napisał(a):

@wojciech.kudla a myslales o nowym AMA bo to gdzies z przed 3 lat jest?;)

Moze faktycznie ma to sens, bo sporo ludzi zglasza sie z pytaniami. Problem polega jednak bardziej na braku czasu.
Moj pierwszy post w tym watku zawiera zbior slow kluczy, ktory dla dociekliwej osoby, potrafiacej korzystac z wyszukiwarki moze urosnac do kilku lat studiow (per zagadnienie). Dobrym przykladem jest:

  • concurrency - zdolnosc do implementowania algorytmow i struktur danych, ktore sa gc-free/lock-free/wait-free/zero-copy
0

@wojciech.kudla jesli bedziesz mial czas to poinformuj jakos na forum o AMA;) dzieki;)

0

a możesz powiedzieć coś więcej o fx developers ?
chodzi o HFT forexowy?
Czy w tej działce chodzi o performance stricte javowy bez całej tej otoczki hardwarowej?

Dzięki z góry

0
Pijany Kot napisał(a):

a możesz powiedzieć coś więcej o fx developers ?
chodzi o HFT forexowy?
Czy w tej działce chodzi o performance stricte javowy bez całej tej otoczki hardwarowej?

Dzięki z góry

  1. FX Developers to trochę skrót myślowy z mojej strony, bo najwięcej pracuje z ludźmi z FX.
    To są dobrzy, często bardzo dobrzy Java Developerzy, którzy bardzo dobrze znają domenę. Zajmują się głównie designem i implementacja logiki biznesowej. Z takich technicznych zagadnień to mogą musieć np. zaimplementować jakiś garbage-free quote cache albo wypracować sposób na wrzucenie całej logiki w jeden wątek.

  2. Najczęściej pracuje przy FX i equities

  3. Popatrz na mój pierwszy post jeszcze raz i przeczytaj pkt 1 i 2 :-)

0

@wojciech.kudla a z javy trzeba miec bardzo dobra znajomosc core java czy JEE i frameworki? I przydaje sie znajomosc linuxa z poziomu uzytkowjika czy podstawy administracji tez?

0

@wojciech.kudla ktore firmy w polsce moga pomoc rozwinac sie w technologiach ktore wymieniles w sensie pracy? Kierunek HFT to glownie firmy z UK czy USA i gdzie sa wieksae mozliwosci rozwoju? Dzieki;)

0
piekny sprzatacz napisał(a):

@wojciech.kudla a z javy trzeba miec bardzo dobra znajomosc core java czy JEE i frameworki? I przydaje sie znajomosc linuxa z poziomu uzytkowjika czy podstawy administracji tez?

Tylko JSE. JEE nie oferuje niczego, co potrzebne byloby w typowych systemach, z ktorymi pracuje. Z kolei frameworki sa za wolne i zasmiecaja cache i sterte.

0
krwawy kwiat napisał(a):

@wojciech.kudla ktore firmy w polsce moga pomoc rozwinac sie w technologiach ktore wymieniles w sensie pracy? Kierunek HFT to glownie firmy z UK czy USA i gdzie sa wieksae mozliwosci rozwoju? Dzieki;)

Obecnie w Polsce to nie za bardzo wiem, ale dobrym miejscem zeby zaczac bedzie kazde srodowisko ktore zapewni prace z wieloma JVMami w roznych zastosowaniach i konfiguracjach. Na pewno do takich srodowisk nalezy IT w bankach czy telekomach.

0

@wojciech.kudla chce tylko zweryfikowac to co slyszalem;) czy to prawda,ze w uk jesli sie naprawde cos umie i ma >2 lata doswiadczenia to jest sie kolokwialnie mowiac zasmiecanym ofertami bo takie ssanie jest?

0
krwawy kwiat napisał(a):

@wojciech.kudla chce tylko zweryfikowac to co slyszalem;) czy to prawda,ze w uk jesli sie naprawde cos umie i ma >2 lata doswiadczenia to jest sie kolokwialnie mowiac zasmiecanym ofertami bo takie ssanie jest?

Moge mowic tylko ze swojej perspektywy. Tak, ofert dostaje sie kilka dziennie. Ale tak z 30% to smieci od junior recruiterow, ktorzy nie widza roznicy pomiedzy java a javascript.

0

@wojciech.kudla a co powiesz o outbox i clear2pay;)?

0
krwawy kwiat napisał(a):

@wojciech.kudla a co powiesz o outbox i clear2pay;)?

Z outbox przepracowalem kilka ładnych lat i sporo się tam nauczyłem. C2p to był taki mój javowy powrót do korzeni (jee), ale nie wytrzymałem za długo.
Najwięcej, w najkrótszym czasie nauczyłem się w LMAX.

0

Czyli jednym slowem najwiecej nauczysz sie zagranica;)

0
wojciech.kudla napisał(a):
Pijany Kot napisał(a):

a możesz powiedzieć coś więcej o fx developers ?
chodzi o HFT forexowy?
Czy w tej działce chodzi o performance stricte javowy bez całej tej otoczki hardwarowej?

Dzięki z góry

(...)

  1. Popatrz na mój pierwszy post jeszcze raz i przeczytaj pkt 1 i 2 :-)

A nie 3 i 4? :) chyba punkty 1 i 2 bardziej sie tyczą corowych developerow (których określiłeś "low latency/core java developers")

Sam pracuję w banku inwestycyjnym, aczkolwiek nie przy hft do ktorego mnie ciągnie. Z profili ktore opisaleś, w 100% pasowałby mi profil najbardziej związany z biznesową logiką, natomiast wszelkiego rodzaju matematyka finansowa (pricery etc) jak i hardwareowa strona, srednio mi leży...

Co trzeba/wypada wiedziec żeby dostać jakieś "juniorskie" stanowisko w hft?
I jeszcze podbijam pytanie dot. linuxów, które padło parę postów wyżej :)

0
Pijany Kot napisał(a):
wojciech.kudla napisał(a):
Pijany Kot napisał(a):

a możesz powiedzieć coś więcej o fx developers ?
chodzi o HFT forexowy?
Czy w tej działce chodzi o performance stricte javowy bez całej tej otoczki hardwarowej?

Dzięki z góry

(...)

  1. Popatrz na mój pierwszy post jeszcze raz i przeczytaj pkt 1 i 2 :-)

A nie 3 i 4? :) chyba punkty 1 i 2 bardziej sie tyczą corowych developerow (których określiłeś "low latency/core java developers")

Sam pracuję w banku inwestycyjnym, aczkolwiek nie przy hft do ktorego mnie ciągnie. Z profili ktore opisaleś, w 100% pasowałby mi profil najbardziej związany z biznesową logiką, natomiast wszelkiego rodzaju matematyka finansowa (pricery etc) jak i hardwareowa strona, srednio mi leży...

Co trzeba/wypada wiedziec żeby dostać jakieś "juniorskie" stanowisko w hft?
I jeszcze podbijam pytanie dot. linuxów, które padło parę postów wyżej :)

Faktycznie. Odpowiedzialem na 1. pytanie sadzac ze jest oderwane od pozostalych i skupialem sie na core java dev. Wszyscy ludzie zajmujacy sie HFT, ktorych znam maja co najmniej 9-10 lat doswiadczenia, wiec nie widzialem za bardzo (szeroko pojetych) juniorow.

0

@wojciech.kudla a Python jest uzywany w low latency czy tylko java i C++?

0
krwawy kwiat napisał(a):

a Python jest uzywany w low latency czy tylko java i C++?

Używa się tak samo jak traktory w wyścigach rajdowych.

0
krwawy kwiat napisał(a):

@wojciech.kudla a Python jest uzywany w low latency czy tylko java i C++?

Osobiscie nigdy nie spotkalem sie z Pythonem w takich zastosowaniach

0

Tematy z punktów 1 i 2 spoko. Sporo tez umiesz 4. Ale Javę znam tylko z widzenia;) Z tego co się orientuję w HFT jest niezastąpiona? Szkoda :(

0

@wojciech.kudla
Czy mógłby Pan powiedzieć, jak bardzo dobrym trzeba być oraz co trzeba umieć, aby dostać się na pozycję quanta do takiego banku?

3

Strasznie bawi mnie ten hajp, jaki od czasu AMA ma temat low-latency i okolic wśród początkujących, powodowany - jak sądzę - głównie zarobkami autora. Jest masa specjalizacji, w których również jest dobra kasa, a dojście do dobrego poziomu dużo bardziej osiągalne. Ciekawe czy wśród fanów motoryzacji panowałoby takie ciśnienie na bycie kierowcą rajdowym wśród osób, które właśnie nauczyły się jeździć na rowerze i robią kurs na prawo jazdy po tym jak np. Kubica ogłosił na jakimś forum, że ma zarobki rzędu kilkudziesięciu tysięcy.

Wnioskuję to po pytaniach w stylu "co trzeba umieć, żeby być X, bo bardzo chcę być X, ale właściwie nie mam pojęcia co to jest X i na czym polega praca jako X, bo gdybym wiedział to raczej orientowałbym się co trzeba umieć.

0
datdata napisał(a):

Strasznie bawi mnie ten hajp, jaki od czasu AMA ma temat low-latency i okolic wśród początkujących, powodowany - jak sądzę - głównie zarobkami autora. Jest masa specjalizacji, w których również jest dobra kasa, a dojście do dobrego poziomu dużo bardziej osiągalne. Ciekawe czy wśród fanów motoryzacji panowałoby takie ciśnienie na bycie kierowcą rajdowym wśród osób, które właśnie nauczyły się jeździć na rowerze i robią kurs na prawo jazdy po tym jak np. Kubica ogłosił na jakimś forum, że ma zarobki rzędu kilkudziesięciu tysięcy.

Zgadzam sie ze stwierdzeniem ze sa do wyboru inne specjalizacje oferujace podobny poziom zarobkow, ale nie jestem calkowicie przekonany ze osobom zadajacym pytania zalezy wylacznie na tym.

0
Vexo napisał(a):

@wojciech.kudla
Czy mógłby Pan powiedzieć, jak bardzo dobrym trzeba być oraz co trzeba umieć, aby dostać się na pozycję quanta do takiego banku?

Wiekszosc quantow ktorych znam to ludzie z co najmniej 1 doktoratem z matematyki lub fizyki. Do tego np. jakies studia podyplomowe z matematyki finansowej z dobrej uczelni (LSE, Cbg, Oxf, KC).
Z moich obserwacji wynika ze gros quant developerow to ludzie wybitni lub bardzo uzdolnieni, biegli w metodach numerycznych z mocnym backgroundem akademickim. Do tego oczywiscie nalezaloby dodac dobra znajomosc rynkow finansowych.

0

@wojciech.kudla a jak to wyglada z awansami jezeli jest sie zatrudnionym na umowe o prace a nie kontrakt? Trzeba miec studia zeby zostac project menagerem czy to wyglada jak z programistami,ze nie musi byc wyksztalcenia?

0
krwawy John napisał(a):

@wojciech.kudla a jak to wyglada z awansami jezeli jest sie zatrudnionym na umowe o prace a nie kontrakt? Trzeba miec studia zeby zostac project menagerem czy to wyglada jak z programistami,ze nie musi byc wyksztalcenia?

Od kiedy zajmuje sie ta dziedzina, pracuje wylacznie na kontrakcie. Nie mam w zwiazku z tym zadnych konkretnych doswiadczen. Z tego co zaobserwowalem pracujac w bankach, proces jest strasznie sformalizowany. Do tego stopnia, ze jesli np. ktos jest naturalnym liderem, do tego pracowity i kreatywy, nie zglosi swojej aplikacji do awansu co najmniej rok wczesniej, wtedy nie zostanie wziety pod uwage. Albo np. regulamin mowi ze z jednego zespolu/dzialu mozna awansowac tylko 1 osobe rocznie. Co z tego ze jest np. 2 lub 3 gosci odwalajacych fantastyczna robote.
Dlatego nie pcham sie w umowy o prace; to czesto korporacyjna patologia. Dla mnie lepiej dziala uczciwa stawka za uczciwa prace, bez wiklania sie w wyscigi szczurow.

1 użytkowników online, w tym zalogowanych: 0, gości: 1