Programmeerfout kost bank 150.000 dollar

2 november 2011
Een dubbelklik op een button in het gebruikersinterface heeft grote problemen bij de New York Stock Exchange veroorzaakt, en levert de bank Credit Suisse een boete van 150.000 dollar op. Oorzaak: een slecht ontworpen en niet geteste aanpassing van een geautomatiseerd handelssysteem.

Het incident vond ruim 2 jaar terug plaats. Op 14 november 2007 leek de New York Stock Exchange ’s middags doelwit te zijn geworden van een denial of service aanval (DoS). De systemen werden overspoeld met opdrachten, waardoor enkele systemen bevroren. Door die problemen werd de handel in 975 beursfondsen geraakt.

Uit het onderzoek naar dit incident, dat afgelopen november werd afgerond en pas deze week openbaar werd, blijkt dat er van een DoS-aanval geen sprake was. Een onhandig ontworpen interface van een systeem van de bank Credit Suisse was de oorzaak van de storing.

Credit Suisse behoort tot het selecte groepje zakenbanken dat ook voor eigen rekening handelt in aandelen en obligaties. Daarbij wordt onder meer gebruikgemaakt van een computerprogramma waarmee men probeert munt te slaan uit kleine fluctuaties in aandelenkoersen. Dat programma is in staat om op basis van vooraf ingestelde parameters in milliseconden met koop- en verkoopopdrachten te reageren op koersinformatie van de New York Stock Exchange (NYSE).

Een van de ontwikkelaars van de bank dacht, kennelijk op eigen houtje, dat het een goed idee was om dat systeem wat gebruiksvriendelijker te maken. Hij verrijkte de SmartWB geheten applicatie met de mogelijkheid om de parameters door beurshandelaren te laten wijzigen terwijl het systeem bezig was opdrachten te genereren; dat was daarvoor niet mogelijk. Bij zo’n wijziging van de parameters werden de reeds verzonden maar nog niet uitgevoerde opdrachten geannuleerd.

Dat interface was echter niet goed doordacht, en kennelijk ook niet getest. Om een parameter te wijzigen, moest een handelaar namelijk het aantal basispunten waarmee de waarde van een parameter moest worden gewijzigd, invullen in een invoerveld. Via pijltjestoetsen naast dat veld kon dan aangegeven worden of de parameter met dat getal verhoogd of verlaagd moest worden. Die pijltjestoetsen zetten de opdracht ook meteen in werking, zonder om een bevestiging van de actie te vragen.

Op 13 november 2007 gebeurde wat onvermijdelijk een keer moest gebeuren: een handelaar die een parameter had gewijzigd, klikte per ongeluk tweemaal op een pijltjestoets. Dat werd door SmartWB geïnterpreteerd als twee verschillende wijzigingen. De eerste batch met opdrachten werd daardoor afgebroken en vervangen door een tweede batch. En dat afbreken had desastreuze gevolgen: de systemen van Credit Suisse en NYSE raakten daardoor in een loop, omdat de NYSE-systemen annuleringsopdrachten kregen voor transacties die nooit waren ontvangen. Dat liep snel uit de hand.

In feite ging het maar om 7 onuitvoerbare annuleringsopdrachten. De SmartWB-applicatie bleef die echter verzenden, omdat het geen bevestiging kreeg van de systemen van NYSE. NYSE reageerde tot het sluiten van de beurs op 13 november met 405.000 berichten, dat er een annuleringsopdracht was ontvangen voor een niet-geplaatste order. Maar zo’n tegenbericht kon SmartWB kennelijk niet verwerken, en de stroom berichten werd door de beheerders van Credit Suisse ook niet opgemerkt. SmartWB bleef intussen de systemen van NYSE bestoken met annuleringsopdrachten voor deze 7 transacties. Dat aantal was aan het eind van 14 november 2007 opgelopen tot 600.000.

De storing die dit uitlokte vertraagde de handel in de 7 beursfondsen waar de onderbroken opdracht van Credit Suisse betrekking op had, en dwong de NYSE om 131.000 opdrachten die in de wachtrij waren blijven steken, te schrappen. Toch heeft het incident geen blijvende gevolgen gehad voor de beurshandel of de koers van afzonderlijke aan de NYSE genoteerde aandelen, oordeelt de NYSE. Desondanks tilt de directie van NYSE er zwaar genoeg aan om Credit Suisse een boete op te leggen van 150.000 dollar, wegens ‘het achterwege blijven van toereikend toezicht bij de ontwikkeling, uitrol en het gebruik van een eigen algoritme, daarbij inbegrepen het nalaten om procedures te implementeren om wijzigingen in die algoritmes te monitoren.’

Lees meer over
Reactie toevoegen