Um deploy para 7 de 8 servidores perdeu US$ 460 milhões. 45 minutos.
1º de agosto de 2012, 9h30 ET: A Knight Capital, a formadora de mercado responsável por cerca de um décimo de todas as negociações de ações nos EUA, acaba de implantar um novo código de roteamento de pedidos em sete de seus oito servidores SMARS.
1º de agosto de 2012, 9h30 ET: A Knight Capital, a formadora de mercado responsável por cerca de um décimo de todas as negociações de ações nos EUA, acaba de implantar um novo código de roteamento de pedidos em sete de seus oito servidores SMARS. O oitavo ainda executa o "Power Peg", código aposentado em 2003, por trás da mesma flag que o novo recurso reutiliza. Por 45 minutos, ele envia ordens filhas que nunca param: 4 milhões de execuções, 397 milhões de ações, cerca de US$ 7 bilhões em posições, uma perda de US$ 460 milhões. 97 e-mails de aviso chegaram antes da abertura. Post-mortem, da própria ordem da SEC: o deploy manual que ninguém revisou, a flag com dois significados, o contador de parada movido em 2005 e nunca retestado, o kill switch que não existia e a "correção" em um mercado ao vivo que piorou a situação. Veredito sobre a correção: REVERT.
Leia a edição escrita (Inglês) ↗
O que este vídeo aborda
- 27 a 31 de julho de 2012: código RLP copiado manualmente para 7 de 8 servidores SMARS; sem segundo revisor, sem procedimento escrito
- 1º de agosto, 8h01: 97 e-mails de "Power Peg desativado" antes da abertura; não projetados como alertas, não lidos
- 1º de agosto, 9h30–10h15: 212 pedidos se tornam 4M execuções em 154 ações; US$ 3,5 bilhões long, US$ 3,15 bilhões short; US$ 460 milhões perdidos; desinstalar o novo código piora a situação
- 2 de agosto – 19 de dezembro: ações −63% para US$ 2,58, resgate de US$ 400 milhões a US$ 1,50/ação, fusão com a GETCO; outubro de 2013: multa de US$ 12 milhões da SEC, primeiro caso da Regra de Acesso ao Mercado
Transcrição traduzida
Traduzido da narração original em inglês. Áudio e legendas disponíveis são controlados pelo YouTube.
0:00 Uma empresa de trading implementa um novo código em sete dos oito servidores, e o oitavo compra e vende quase sete bilhões de dólares em ações em quarenta e cinco minutos, o que é muito, mesmo para uma quarta-feira. Primeiro de agosto de 2012. A Knight Capital, um décimo de todas as negociações de ações nos EUA, relata uma perda de 440 milhões de dólares. A SEC mais tarde contabiliza mais de 460, multa a Knight em doze milhões, e escreve o próprio post-mortem: dez páginas, zero adjetivos.
0:25 Como acontece, por que é possível e quem realmente leva a culpa. Este é The Daily Diff, post-mortem. 27 de julho. A Bolsa de Valores de Nova York lança um programa de liquidez de varejo em 1º de agosto, então a Knight copia o novo código para o SMARS, seu roteador de pedidos, alguns servidores por dia, manualmente. Um técnico, oito servidores, sete cópias. Ninguém verifica; nenhuma regra diz que alguém tem que verificar. 8h01. Um sistema interno começa a enviar e-mails à equipe com um erro que diz: Power
0:51 Peg desativado. Noventa e sete e-mails antes da abertura. Eles não são projetados como alertas, então ninguém os lê, o que é uma decisão de design com um preço. 9h30, o mercado abre. Sete servidores executam o novo código. O oitavo vê a mesma flag e executa o Power Peg em vez disso: código que a Knight aposentou em 2003 e nunca deletou. Ele envia ordens filhas para 212 ordens de clientes e nunca para.
1:13 Quatro milhões de execuções. 397 milhões de ações. Uma conta de custódia excede seu limite de dois milhões de dólares, que não está conectada a nada. Os engenheiros, em um mercado ao vivo, desinstalam o novo código dos sete servidores bons, o que liga o Power Peg em todos os lugares. Por volta das 10h15, ele para: três bilhões e meio long, três bilhões e cento e cinquenta milhões short.
1:31 Um: a condição de parada do Power Peg, o contador que diz que a ordem pai está preenchida, é movida em 2005 e nunca retestada, então o código aposentado roda infinitamente. Dois: o novo recurso reutiliza a antiga flag do Power Peg, então o mesmo sim significa duas coisas em dois servidores. Três: sem kill switch. Nada compara ordens de saída com ordens de entrada; nada paralisa o SMARS. O monitor de risco é uma tela observada por humanos; ele não mostra os limites. git blame: uma flag reutilizada em vez de uma nova, código morto invocável por nove
2:00 anos, e um deploy manual sem um segundo par de olhos. Não o técnico. A ordem da SEC nunca o nomeia, e eu também não o farei. Raio de impacto: 460 milhões de dólares, aproximadamente dez milhões por minuto. Ações caíram 63 por cento para dois dólares e cinquenta e oito centavos, um resgate de 400 milhões de dólares a um dólar e cinquenta centavos por ação, uma fusão com a Getco até o Natal. Hacker News, quinta-feira: como ele funcionou 45 minutos sem intervenção humana? Não funcionou. Os humanos pioraram a situação.
2:25 Veredito, post-mortem: REVERT. A Knight nunca escreve seu próprio post-mortem; o regulador o faz, quatorze meses depois, e a solução é uma multa e uma fusão. Segunda-feira: novo recurso, nova flag; código morto é deletado, não desativado; tudo que envia ordens ganha um botão de desligar. Envie-me o incidente sobre o qual você ainda não tem permissão para falar, nos comentários, ou em the daily diff dot dev. E essa é a diferença de hoje.
2:48 Eu sou o Niko da Axrisi. Merge com responsabilidade.
Fontes
- SEC Administrative Order, Release No. 34-70694 (Oct 16, 2013), In the Matter of Knight Capital Americas LLCwww.sec.gov
- SEC press release 2013-222, "SEC Charges Knight Capital With Violations of Market Access Rule"www.sec.gov
- Knight Capital Group 8-K, Aug 2, 2012 (the $440M statement)www.sec.gov
- Knight Capital Group 8-K, Aug 6, 2012 (the $400M convertible preferred)www.sec.gov
- Knight / GETCO merger announcement, Dec 19, 2012www.sec.gov
- NYT DealBook, "Knight Capital Says Trading Glitch Cost It $440 Million" (Aug 2, 2012)archive.nytimes.com
- Hacker News, Aug 2, 2012 (73 points)news.ycombinator.com
- Hacker News, "The $440M software error at Knight Capital" (294 points)news.ycombinator.com



