Розгортання на 7 з 8 серверів призвело до втрати 460 мільйонів доларів. 45 хвилин.
1 серпня 2012 року, 9:30 ранку за східним часом: Knight Capital, маркет-мейкер, що здійснював приблизно десяту частину всіх операцій з американськими акціями, щойно розгорнув новий код маршрутизації замовлень на семи зі своїх восьми серверів SMARS.
1 серпня 2012 року, 9:30 ранку за східним часом: Knight Capital, маркет-мейкер, що здійснював приблизно десяту частину всіх операцій з американськими акціями, щойно розгорнув новий код маршрутизації замовлень на семи зі своїх восьми серверів SMARS. На восьмому сервері все ще працює «Power Peg», код, виведений з експлуатації у 2003 році, за тим самим прапорцем, який використовує нова функція. Протягом 45 хвилин він надсилає дочірні замовлення, які ніколи не зупиняються: 4 мільйони виконань, 397 мільйонів акцій, позиції на суму близько 7 мільярдів доларів, збиток у 460 мільйонів доларів. 97 попереджувальних електронних листів надійшли до відкриття торгів. Посмертний аналіз, з власного наказу SEC: ручне розгортання, яке ніхто не перевіряв, прапорець з двома значеннями, лічильник зупинки, переміщений у 2005 році і ніколи не перевірявся повторно, аварійний вимикач, якого не існувало, і «виправлення» на живому ринку, яке зробило ситуацію гіршою. Висновок щодо виправлення: REVERT.
Читати письмову версію (англійською) ↗
Що охоплює це відео
- 27–31 липня 2012: код RLP скопійовано вручну на 7 з 8 серверів SMARS; без другого рецензента, без письмової процедури
- 1 серпня, 8:01 ранку: 97 електронних листів «Power Peg disabled» до відкриття; не призначені як сповіщення, не прочитані
- 1 серпня, 9:30–10:15: 212 замовлень перетворюються на 4 мільйони виконань у 154 акціях; $3,5 млрд довгі, $3,15 млрд короткі; $460 млн втрачено; видалення нового коду погіршує ситуацію
- 2 серпня – 19 грудня: акції −63% до $2,58, порятунок на $400 млн за $1,50/акція, злиття з GETCO; жовтень 2013: штраф SEC $12 млн, перший випадок за Правилом доступу до ринку
Перекладена стенограма
Перекладено з оригінальної англійської розповіді. Доступне аудіо та субтитри контролюються YouTube.
0:00 Торгова фірма розгортає новий код на семи з восьми серверів, а восьмий купує та продає акції на майже сім мільярдів доларів за сорок п'ять хвилин, що дуже багато, навіть для середи. 1 серпня 2012 року. Knight Capital, десята частина всіх американських торгів акціями, повідомляє про збитки в 440 мільйонів доларів. Комісія з цінних паперів і бірж пізніше налічує понад 460, штрафує Knight на дванадцять мільйонів, і сама пише посмертний аналіз: десять сторінок, нуль прикметників.
0:25 Як це відбувається, чому це можливо, і хто насправді винен. Це The Daily Diff, посмертний аналіз. 27 липня. Нью-Йоркська фондова біржа запускає програму ліквідності для роздрібної торгівлі 1 серпня, тому Knight копіює новий код на SMARS, свій маршрутизатор замовлень, кілька серверів на день, вручну. Один технік, вісім серверів, сім копій. Ніхто не перевіряє; жодне правило не зобов'язує це робити. 8:01 ранку. Внутрішня система починає надсилати співробітникам електронний лист з помилкою: Power
0:51 Peg disabled. Дев'яносто сім електронних листів до відкриття. Вони не призначені як сповіщення, тому ніхто їх не читає, що є дизайнерським рішенням з ціною. 9:30, ринок відкривається. Сім серверів працюють з новим кодом. Восьмий бачить той самий прапорець і замість цього запускає Power Peg: код, який Knight вивів з експлуатації у 2003 році і ніколи не видаляв. Він надсилає дочірні замовлення для 212 замовлень клієнтів і ніколи не зупиняється.
1:13 Чотири мільйони виконань. 397 мільйонів акцій. Рахунок холдингу перевищує ліміт у два мільйони доларів, який ні до чого не підключений. Інженери, на живому ринку, видаляють новий код з семи справних серверів, що вмикає Power Peg скрізь. Близько 10:15 це зупиняється: три з половиною мільярди довгих, три цілих п'ятнадцять сотих мільярда коротких.
1:31 Одне: умова зупинки Power Peg, лічильник, який показує, що батьківське замовлення виконано, перенесена у 2005 році і ніколи не перевірялася повторно, тому застарілий код зациклюється назавжди. Два: нова функція повторно використовує старий прапорець Power Peg, тому те саме «так» означає дві речі на двох серверах. Три: немає аварійного вимикача. Ніщо не порівнює вхідні та вихідні замовлення; ніщо не зупиняє SMARS. Монітор ризиків — це екран, за яким спостерігають люди; він не показує лімітів. git blame: прапорець, використаний повторно замість нового, мертвий код, доступний для виклику протягом дев'яти
2:00 років, і ручне розгортання без другої пари очей. Не технік. Наказ SEC ніколи не називає його, і я теж не буду. Радіус ураження: 460 мільйонів доларів, приблизно десять мільйонів на хвилину. Акції впали на 63 відсотки до двох доларів п'ятдесяти восьми, порятунок на 400 мільйонів доларів за долар п'ятдесят за акцію, злиття з Getco до Різдва. Hacker News, четвер: як це працювало 45 хвилин без втручання людини? Ні. Люди зробили це гірше.
2:25 Вердикт, посмертний аналіз: revert. Knight ніколи не пише власного посмертного аналізу; це робить регулятор, чотирнадцять місяців потому, а виправленням є штраф і злиття. Понеділок: нова функція, новий прапорець; мертвий код видаляється, а не вимикається; все, що надсилає замовлення, отримує вимикач. Надішліть мені інцидент, про який вам досі не дозволено говорити, у коментарях або за адресою the daily diff dot dev. І це diff на сьогодні.
2:48 Я Ніко з Axrisi. Зливайте відповідально.
Джерела
- 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



