» »

Kaj je šlo narobe v Knight Capitalu

Kaj je šlo narobe v Knight Capitalu

Pogled nihanja tečaja na milisekundni skali kaže početje pobeglega algoritma.

Slo-Tech - Eden izmed najbolj spektakularnih primerov uporabe zanič programske kode je lanska katastrofa na newyorški borzi, ki podjetje Capital Knight skorajda pahnila v bankrot. Tedaj je njihov program oddal na borzo ogromno količino naročil, ki so povzročila divje nihanje tečajev delni, Knight Capital pa izpostavile trgu za skoraj osem milijard - v najslabšem trenutku so imeli za približno štiri milijarde dolgih (lastniških) pozicij v delnicah in prav toliko kartkih pozicij (dolžniških) pozicij v drugih delnicah. Ko se je katastrofa končala, so posledice postale jasne. Knight Capital je v manj kot uri ustvaril 460 milijonov dolarjev izgube.

Vsem je bilo jasno, da je za katastrofo kriva programska koda, a ni bilo jasno, kaj točno je šlo narobe. Ameriški regulator trga vrednostnih papirjev (SEC) je objavil podrobno poročilo preiskave, ki opisuje dogajanje. Razlog za napako je človeški faktor, in sicer programska napaka in odsotnost postopkov za zagotavljanje kakovosti in preverjanje.

Newyorška borza je tedaj zagnala nov program RLP (Retaily Liquidity Program). Knight Capital je seveda pripravil svojo programsko opremo za RLP. Težave so ležale v programu SMARS, ki posreduje naročila. SMARS deluje kot vmesnik med trgovalno platformo, ki jo Knight Capital nudi svojim strankam, in borzo. SMARS zbira naročila strank in jih v paketno posreduje na trg. V SMARS-u so zato morali popraviti nekaj kode, da bi delovala z RLP, česar so se lotili površno.

Pobrisali so del skorajda devet let stare kode, ki ni bila več v uporabi. Potem so uporabili zastavico za klicanje nove kode, ki je predhodno klicala staro kodo. Problem sega v letu 2005, ko so program nekoliko spremenili (prestavili so štetje naročil), zaradi česar stara funkcija ni več pravilno delovala. Toda ker so jo nehali uporabljati v letu 2003, tega ni nihče ugotovil. Če bi jo pobrisali, bi bilo vse pod nadzorom.

Nov program so naložili na sedem strežnikov, medtem ko ga na osmega niso. Ko je potem vmesnik za RLP stekel na osmem strežniku, je v resnici klical staro funkcijo, ki pa je sedaj delovala napačno zaradi sprememb iz leta 2005. Ker so prestavili ravno štetje naročil, je program v neskončnosto oddajal naročila. Podrobnejši opis je v SEC-ovem poročilu, tule pa je povzetek.

SEC je ugotovil, da je bila napaka posledica slabih praks v podjetju. Spremembe in naloge se niso nikjer centralno beležile, ampak je vsak program popravil, kar je moral, ne da bi vodili evidenco. Nedopustno je, da so na računalnike lahko naložili program dveh različnih verzij, pa tega ni noben nadzor opazil pred zagonom.

Poleg tega je Knight Capital počel še nekaj stvari, ki niso dovoljene. Tak primer je gola kratka prodaja (naked shorting), kakor imenujemo oddajanje prodajnih naročil za delnice, ki jih nimamo v lasti. Če pred poravnavo takega naročila delnic ne priskrbimo, prodaja ne steče (failure to deliver). To je prepovedano, ker taka ponudba zavaja in tišči ceno dol. Normalne kratke prodaje, kjer si delnice spodobimo, jih potem prodamo, in nato kupimo nazaj po nižji ceni, seveda ni problematična.

6 komentarjev

||_^_|| ::

Še premalo so popušili..

cegu ::

Tele zadeve z elektronsko borzo me spoinjajo na Trainer iz Age of Ampires, kjer si dobil 10x več golda kot pa bi moral :). Dokler ni vse zaštekal.

BALAST ::

Normalne kratke prodaje, kjer si delnice spodobimo, jih potem prodamo, in nato kupimo nazaj po nižji ceni, seveda ni problematična.


Kako to ni problematično? Sposodim si tvoje zobe, jih razbijem in potem poceni kupim? :P
"You may fool all the people some of the time;
you can even fool some of the people all the time;
but you can't fool all of the people all the time."

Isotropic ::

na lj borzi tut obicajno shortanje ni dovoljeno

Zgodovina sprememb…

carota ::

Sorry za butasto vprašanje, a mi lahko nekdo razloži kaj pomeni: "Potem so uporabili zastavico za klicanje nove kode, ki je predhodno klicala staro kodo."? Ne štekam kaj je ta "zastavica".

Verjetno jim je ali zmanjkalo časa za testiranje in še privarčevali so na QA. :8)

ender ::

carota: po angleško je to flag (v osnovi je šlo za nekaj takega: if (flag) { nova_funkcija(); } else { stara_funkcija(); }, pri čemer na 8. strežniku zastavica ni bila nastavljena).

Menda so na 8. strežnik povsem pozabili, in se je zgodilo celo to, da so pogasnili ostale strežnike, nakar je vsa naročila prevzel 8., in so denar izgubljali še hitreje.
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Kaj je šlo narobe v Knight Capitalu

Oddelek: Novice / Znanost in tehnologija
65393 (4039) ender
»

Visokofrekvenčno trgovanje počasi jenja

Oddelek: Novice / Znanost in tehnologija
237698 (5342) BaToCarx
»

Facebookova javna ponudba delnic še vedno buri duhove

Oddelek: Novice / Ostale najave
225369 (3933) nekikr
»

Incident Knight Capital in slaba programska oprema, ki poganja svet

Oddelek: Novice / Znanost in tehnologija
4714580 (11487) Poldi112
»

Malomaren test algoritma povzročil pol milijarde dolarjev škode na borzi

Oddelek: Novice / Znanost in tehnologija
4411190 (8763) McHusch

Več podobnih tem