8월 1일의 개장
2012년 8월 1일 미국 동부시간 오전 9시 30분, 뉴욕증권거래소의 개장 종이 평소처럼 울렸습니다. 몇 초 만에 통합 시세표(consolidated tape)에는 NYSE 상장 인기 종목 154개로 주문이 흘러 들어가기 시작했고, 1분도 채 지나지 않아 그 주문들이 이상하게 움직이기 시작했습니다. 통합 시세표와 지정 마켓메이커 부스에서 일하던 스페셜리스트들의 화면에 동일한 패턴이 반복되었습니다 — 매수 호가가 채워지고 매도 호가가 체결되더니, 거의 즉시 한 틱 위로 또 다른 매수 호가가 들어오고, 또 들어오고, 또 들어오는 식이었습니다. 그 주문들은 단일 브로커-딜러 코드인 NITE에서 발신되었습니다. 미국 최대 소매 주식 마켓메이커였던 나이트 캐피털 아메리카스의 식별 코드입니다.
2012년 8월 1일 아침의 나이트는 미국 상장주식 소매 주문 흐름의 약 15~17퍼센트를 라우팅하고 있었습니다. TD 아메리트레이드, 스코트레이드, E*TRADE를 비롯한 대부분의 지역 할인 증권사의 도매 거래상대였습니다. SMARS — Smart Market Access Routing System — 는 어떤 부모 주문을 어디에 배치할지, 어떤 자식 주문을 발사할지, 부분 체결 보고가 돌아왔을 때 어떻게 행동할지를 결정하는 운영 파이프라인이었습니다. SMARS는 뉴저지의 나이트 데이터 센터에 위치한 8대의 운영 서버에 호스팅되어 있었습니다. 8월 1일 아침, 그중 7대는 NYSE의 새로운 소매 유동성 프로그램(Retail Liquidity Program)을 지원하기 위해 전주 출시된 배포본을 실행하고 있었습니다. 나머지 한 대는 그렇지 않았습니다 (US Securities and Exchange Commission, 2013).
그날 아침 나이트 캐피털 그룹 주식의 가격 움직임은 기술적 실패의 거의 순수한 기록입니다. 다른 어떤 것도 주가를 움직이지 않았기 때문입니다. 회사는 약 10.33달러로 거래 세션을 시작했고, 그날을 약 6.94달러로 마감했으며, 골드만 삭스로의 포지션 해소가 장부에 반영되고 사전 공시된 다음 날을 약 2.58달러로 마감했습니다. 8월 말까지 주가는 구제 금융의 희석을 반영하여 2.50달러 미만에서 안정화되었습니다. 그 가격 흔적의 형태는 그 어떤 내부 메모보다 시장이 수요일 아침 45분간의 사건에 대해 어떻게 생각했는지를 보여줍니다.
파워 페그와 플래그 비트의 조용한 용도 변경
근본적인 기술적 원인은 2003년 이후 운영 환경에서 사용된 적이 없는 소프트웨어 루틴의 이름을 따서 명명되었습니다. 그 이름은 파워 페그(Power Peg)였습니다. 닷컴 붕괴 직후에 작성된 원래 파워 페그의 기능은 부모 주문에 참여하여 — 일련의 자식 주문을 시장에 "고정(peg)"시키는 것이었습니다. 자식 주문들 사이에서 이동하는 가격대에 따라 자식 주문을 배치하고, 라우팅 로직의 통제된 테스트로 스스로에 대해 체결을 생성했습니다. 파워 페그에는 두 가지 두드러진 특징이 있었습니다. 첫째, 설계상 이 루틴은 누적 체결 수량을 무시했습니다. 체결되어 돌아온 자식 주문이 부모 주문의 남은 목표 수량을 감소시키지 않았습니다. 둘째, 파워 페그는 주문 구성에 있는 단일 플래그 비트로 게이팅되었으며, 원래는 내부 문서에 테스트 하니스용 "누적 수량 플래그(cumulative quantity flag)"로 명명된 매개변수의 값이었습니다 (Patterson, 2012).
2003년에 해당 플래그는 실거래에서 폐기되었습니다. 그러나 파워 페그 코드는 삭제되지 않았습니다. SMARS 코드베이스 안에 휴면 상태의 테스트 스캐폴딩으로 남겨졌습니다. 2005년에 그 플래그 비트는 용도가 변경되었습니다. 새로운 기능 — "RLPRetail" 라우팅 옵션 — 이 동일한 플래그 값에 할당되었는데, 이는 파워 페그가 다시는 호출되지 않을 것이며 기본 스캐폴딩이 정리되었을 것이라는 가정에 기반한 것이었습니다. 이런 식으로 플래그 비트를 용도 변경하는 결정은 화요일 오후 마감 압력에서는 합리적으로 보이지만, 7년 후 수요일 아침에는 치명적인 결정입니다.
2012년 7월 말 나이트는 8월 1일에 가동 예정이었던 NYSE의 소매 유동성 프로그램을 처리하기 위한 SMARS 릴리스를 준비했습니다. RLP는 작은 시장 구조 혁신이었습니다 — 소매 표시 주문이 거래소 외부 도매 마켓메이커뿐 아니라 NYSE 내부에서도 페니 미만의 가격 개선과 상호작용할 수 있도록 허용했습니다 — 그러나 나이트는 SMARS 라우팅 테이블과 주문 태깅 로직을 갱신해야 했습니다. 이 릴리스는 단일 배포로 묶여, 수석 기술자가 수요일 7월 25일부터 화요일 7월 31일까지 8대의 SMARS 서버 모두에 수동으로 설치할 예정이었습니다. 자동화된 배포 후 검증은 없었습니다. 호스트별 설치를 두 번째 엔지니어가 승인할 필요도 없었습니다. 릴리스 노트에는, 새 코드가 누적 수량 플래그를 해석하는 방식을 변경함으로써 파워 페그가 여전히 존재하는 경우 깨우게 될 것이라는 사실이 별도로 명시되지 않았습니다.
45분
아래 표의 시간별 세부 사항은 2013년 SEC의 나이트 캐피털 아메리카스에 대한 합의 명령, FINRA 조사 파일, 그리고 2012년 하반기에 브로커-딜러 기술 커뮤니티에 유포된 사후 분석 자료에서 재구성되었습니다. 시간은 2012년 8월 1일 미국 동부 일광 절약 시간입니다.
| 시간 | 사건 | 누적 손실 추정 |
|---|---|---|
| 04:30 | 장전: 나이트 기술자들이 운영 환경에서 새 RLP 라우팅 코드를 활성화. 8번째 SMARS 서버는 아직 갱신되지 않아 2003년 파워 페그 루틴을 여전히 보유 | — |
| 09:30:00 | 시장 개장. SMARS가 RLP 적격 NYSE 154개 종목에 대한 실시간 부모 주문을 수신하기 시작. 7대의 서버는 올바르게 처리. 8번째는 용도 변경된 플래그를 휴면 파워 페그 루틴의 신호로 해석 | $0 |
| 09:31 | 8번째 서버가 남은 수량을 감소시키지 않은 채 메모리상의 부모 주문에 대해 자식 주문을 발사하기 시작. 영향받은 종목의 거래량 급증. 통합 시세표에 초당 약 8,000건의 주문이 진입 | 약 1천만 달러 |
| 09:34 | 내부 손익 화면이 Wizzard Software(WZE), Reaktor(RKR) 및 일부 중형주 산업주의 비정상적 누적 매수 포지션 표시 시작. 거래 데스크 직원들이 운영 통제 센터로 에스컬레이션 | 약 3천만 달러 |
| 09:45 | 고위 리스크 관리자에 대한 최초의 확인된 에스컬레이션. 엔지니어들이 발생 상황을 검토하기 시작하나 어느 SMARS 서버가 원인인지 식별 불가 | 약 1억 1천만 달러 |
| 09:48 | NYSE-LIFFE 스페셜리스트들이 나이트에 전화하여 주문 흐름이 의도된 것인지 문의. 시장 구조팀이 거래소에 속도 제한을 요청하나 운영 절차 완료 불가 | 약 1억 3천 5백만 달러 |
| 09:55 | 나이트 엔지니어링이 시정 시도: 8번째 서버에 새 RLP 코드를 재배포하여 파워 페그를 덮어쓰기. 일관성 유지를 위해 설계된 배포 스크립트가 오히려 버그가 있는 상태를 다른 7대 서버로 전파하여 문제 확대 | 약 1억 8천만 달러 |
| 10:00 | 주문 흐름이 최고 속도로 계속됨. NYSE가 나이트 임원진에 전화하여 조치 요구. 리스크 책임자들이 SMARS 시세 데이터 구독에 대한 수동 종료 요청 시작 | 약 2억 6천만 달러 |
| 10:10 | 나이트가 SMARS로 유입되는 시세 데이터를 비활성화하는 수동 결정을 내림. 시세 갱신 없이 라우팅 엔진이 오래된 시세에 대해 새 주문을 발사하는 것을 중단 | 약 3억 6천 5백만 달러 |
| 10:15 | 마지막 자식 주문 완료. SMARS가 오프라인 전환. 포지션 장부는 80개 종목에서 약 35억 달러 매수, 74개 종목에서 31억 5천만 달러 매도, 총 약 70억 달러의 명목 비의도적 익스포저로 약 400만 건의 체결 주문 | 약 4억 1천 5백만 달러 실현 + 오픈 평가 |
45분 만에 나이트는 마켓메이킹 장부 없는 마켓메이커가 되었습니다 — 거래는 매수-매도 호가 포착이 아닌 일치하지 않는 누적이었습니다. 골드만 삭스가 다음 날 전체 포지션을 청산했을 때 실현된 손실은 세전 약 4억 4천만 달러였습니다 (Patterson, 2012; Lewis, 2014).
이후의 모든 설명에 따르면, 그 시간 동안 나이트 내부의 경험은 명료한 위기 관리는 아니었습니다. 저지 시티의 거래 플로어는 시끄럽고 점점 더 혼란스러웠습니다. 그 플로어에 있었던 한 나이트 임원은 후에 월스트리트 저널에 SMARS 팀의 첫 번째 직감이 자신들이 공격받고 있다는 것이었다고 말했습니다 — 서비스 거부 공격이나 악의적인 주문 주입이라는 것이었습니다 — 그리고 버그를 전파시킨 재배포는 8번째 서버의 파워 페그 루틴이 원인이라는 것을 아무도 아직 이해하지 못한 상태에서 수행되었습니다. 정리 작업이 상처를 더 키웠습니다.
거래상대는 골드만 삭스였습니다
8월 1일 거래 마감까지 나이트는 절대치로 약 70억 달러 상당의 포지션 장부를 보유하고 있었으며, 시가평가 손실은 이미 수억 달러 후반에 이르렀습니다. 회사의 규제 자본 — SEC와 FINRA 순자본 규정에 따른 — 은 약 3억 6천 5백만 달러였습니다. 나이트는 서류상으로, 그리고 사실상으로도 거래 세션 마감 전에 지급 불능 상태였으며, 강제 규제 정리로부터 나이트를 지킨 유일한 것은 소수의 임원진 외에는 포지션의 전체 규모를 알지 못한다는 점이었습니다. 무릎 수술 회복 중이던 코네티컷 자택에서 나이트의 최고경영자 토머스 조이스(Thomas Joyce)는 오전 11시경 전화로 그 규모를 통보받았습니다. 그는 그날 오후 저지 시티로 복귀했습니다 (Patterson, 2012).
조이스의 첫 통화는 규제 당국이나 구제 금융 제공자가 아닌 골드만 삭스 주식 데스크에 대한 것이었습니다. 골드만은 몇 시간 안에 합의된 할인 폭에 다음 날 아침 나이트의 장부에서 전체 포지션을 인수하기로 동의했습니다. 그 합의는 나이트를 파편화된 거래소에서의 강제 청산으로부터 구해냈습니다 — 이미 사건으로 무질서해진 154개 종목에서의 청산은 골드만이 받아들인 수준보다 훨씬 낮은 체결을 만들어냈을 것입니다. 4억 4천만 달러의 실현 손실은 골드만이 부과한 할인 폭을 반영합니다. 그 단일 거래상대 합의가 없었다면, 8월 2일에 보고된 손실 수치는 상당히 더 컸을 것이며 나이트는 공개적인 규제 실패 상태로 두 번째 거래 세션에 진입했을 것입니다.

SEC가 막 작성한 규칙
나이트의 실패는 SEC가 2010년에 최종 확정하고 2011년에야 완전히 발효되었으며 2012년에 걸쳐 단계적으로 시행된 규칙을 위반했습니다. 규칙 15c3-5 — 시장 접근 규칙(Market Access Rule) — 은 거래소 또는 대체 거래 시스템에 대한 접근을 제공하는 모든 브로커-딜러가 그 접근의 재무적, 규제적, 운영적 리스크를 관리하기에 충분한 거래 전 리스크 통제 및 감독 절차를 유지하도록 요구했습니다. 이 규칙은 잘못된 주문 입력에 대한 통제를 명시적으로 고려했습니다. 이는 2010년 5월의 플래시 크래시에 대한 직접적인 대응으로 작성되었으며, 플래시 크래시 사건 기록에서 추적된 구조적 개혁의 규제적 보완책이었습니다. 나이트의 배포 체제 — 수동적이며, 문서화되지 않았고, 자동화된 검증과 두 번째 서명이 없는 — 는 그 기준을 충족하지 못했습니다 (US Securities and Exchange Commission, 2013).
2013년 10월 16일 SEC의 집행 명령, 릴리스 번호 70694는 규칙 15c3-5에 따라 제기된 최초의 조치였습니다. 그 명령은 나이트가 소프트웨어 배포를 안내하는 서면 절차를 갖지 못했고, 운영과 유사한 환경에서 새 RLP 코드의 적절한 테스트를 수행하지 않았으며, 통합 시세표에 도달하기 전 잘못된 주문을 탐지할 자동화된 프로세스가 없었고, 알고리즘이 비정상적으로 작동할 때 엔지니어링 직원이 고위 리스크 관리에 관여할 수 있는 문서화된 에스컬레이션 절차가 없었다는 이유로 규칙을 위반했다고 판정했습니다. 그때까지 KCG 홀딩스로 운영되던 나이트는 사실관계를 인정하거나 부인하지 않은 채 1,200만 달러의 벌금을 납부했습니다. 그 명령은 짧습니다 — 13페이지 — 그러나 적절한 거래 전 리스크 통제 체계가 포함해야 할 분류를 비정상적으로 직접적으로 다룹니다 (US Securities and Exchange Commission, 2013).
같은 해 발표된 자동화 거래에 대한 별도의 CFTC-SEC 공동 자문은 그 교훈을 자산 클래스와 거래소에 걸쳐 일반화했습니다. 변경 관리, 소스 코드 버전 관리, 배포 승인, 자동화된 운영 환경 검증, 그리고 오작동 징후가 보일 때 외부로 나가는 주문 흐름을 중지시킬 수 있는 "킬 스위치"의 설계 및 테스트에 대한 기대치를 설정했습니다 (CFTC-SEC Joint Advisory Committee, 2013). 그 자문은 규칙의 효력은 없었지만 이후 FINRA 검사팀이 브로커-딜러의 기술 거버넌스를 평가하는 기준이 되었습니다.
15억 달러 회사를 주말 동안 재자본화한 방법
2012년 8월 2일 거래 마감까지 나이트의 주식은 사건 이전 가치의 약 75퍼센트를 잃었습니다. 시가총액은 두 세션 동안 약 15억 달러에서 약 2억 9천만 달러로 떨어졌습니다. 4억 4천만 달러의 실현 손익 충격은 규제 자본보다 컸습니다. 재자본화 없이는 며칠 안에 나이트가 청산소 마진콜을 충족하지 못할 것이었습니다. 8월 3일 아침부터 주말 내내 전략적 투자자와 경쟁 기업으로 구성된 컨소시엄이 비상 자본 조달을 협상했습니다 (Lewis, 2014).
거래는 2012년 8월 6일에 마감되었습니다. 나이트는 제프리스, 블랙스톤, 게트코, 스티펠, TD 아메리트레이드 및 스티븐스 인크의 소규모 참여로 구성된 그룹에 4억 달러의 전환 우선주를 발행했습니다. 전환 조건은 기존 주주를 약 73퍼센트 희석시켰습니다. 새로운 전환주 보유자들은 이사회 대표권과 명확한 지배 경로를 가졌습니다. 시카고에 기반을 둔 고빈도 거래 기업이자 도매 마켓메이킹에서 나이트의 경쟁자였던 게트코의 투자는 전략적으로 가장 의미 깊은 것이었습니다. 3개월 안에 게트코는 나이트와의 합병을 발표했으며, 2013년 7월에 KCG 홀딩스를 형성하는 합병이 완료되었습니다. KCG는 2017년 4월까지 운영되었으며, 또 다른 HFT 뿌리의 기업인 비르추 파이낸셜이 KCG를 14억 달러 현금에 인수하여 2012년 8월 1일의 배포가 작동시킨 기업의 궤적이 마무리되었습니다.
그 후 업계가 구축한 것
절차상의 교훈은 빠르게 확산되었습니다. 나이트 사건 이후 12개월 안에 주요 브로커-딜러들은 소프트웨어 릴리스 프로세스를 재정비했습니다. 자동화된 배포 전 검증 — 모든 운영 호스트의 실행 구성을 예상 매니페스트와 비교하는 검사 — 이 표준이 되었습니다. 대부분의 브로커-딜러는 단일 트리거로 FIX 엔진 수준에서 외부로 나가는 주문 흐름을 비활성화할 수 있는 문서화된 킬 스위치 절차를 수립했으며, 분기별로 감사를 받았습니다. 여러 회사들은 두 번째 엔지니어의 서명 없이는 단일 기술자가 운영 환경에 코드를 배포할 수 없도록 배포 권한을 분리했습니다. 이는 결제 백오피스에서 오랫동안 요구되었으나 그때까지 프런트오피스 엔지니어링에서는 부분적으로 부재했던 사안 원칙(four-eyes principle)을 반영하는 합의입니다.
거래소들은 회원사 수준의 오류 주문 통제를 추가하여, 2010년 플래시 크래시 여파에서 구축된 종목별 상한-하한 제한 체계를 보완했습니다. FINRA는 알고리즘 거래 시스템 설계, 운영 코드의 인벤토리 유지, 알고리즘 개발 수명 주기의 연례 독립 검토 요구 사항, 그리고 운영 코드의 모든 변경을 공식 감독 사건으로 문서화하는 것을 다루는 기술 감독 지침을 발표했습니다. 감사인들은 브로커-딜러의 재무 및 운영 검사에 코드 배포 거버넌스를 포함시키기 시작했습니다.
회사 간 대응은 고르지 않았습니다. 2014년 SEC 검사관의 직원 검토는 검사받은 브로커-딜러의 약 60퍼센트가 규칙과 일치하는 문서화된 릴리스 절차를 시행했다는 것을 발견했습니다. 활발한 전자 마켓메이킹 사업을 보유한 도매 회사들이 곡선을 앞서갔고, 상당한 고빈도 익스포저가 없는 기관 증권회사들은 뒤처졌습니다. 나이트 사건이 촉발시킨 감독 구조는 계속 다듬어지고 있으며, 나이트 여파를 관통한 정책 흐름들은 LIBOR 스캔들, 베어링스의 붕괴, 그리고 2008년 금융위기의 더 광범위한 운영 리스크 교훈의 구조적 서사에도 나타납니다.
시장 구조 진단으로서의 45분
나이트 캐피털 사건을 읽는 가장 시사하는 방식은 Reg-NMS 이후의 미국 주식 시장에 의도치 않게 실시된 스트레스 테스트로 보는 것입니다. 그 테스트의 결과는 묵직했습니다. 통합 시세표는 400만 건의 비의도적 주문을 운영 실패 없이 흡수했습니다. 거래소 매칭 엔진은 멈추지 않았습니다. 청산 인프라는 모든 거래를 청산했습니다. 결제 프로세스는 분쟁 없이 T+3에 완료되었습니다. 시장 구조는 거래소와 인프라 계층에서 견고했으며, 그것은 같은 해의 다른 아침이었다면 위안이 되는 것으로 읽힐 수도 있었던 방식이었습니다.
그 구조가 흡수하지 못한 것은 단일 회원사의 주문 생성 로직의 실패였습니다. 아키텍처는 시장 접근 제공자가 의도하지 않은 주문을 보내지 않을 책임이 있다는 가정 위에 구축되어 있었습니다. 단일 회사에서 그 가정이 무너지자, 나머지 아키텍처는 그 결과로 발생한 주문이 체결되기 전에 잡아낼 본질적 메커니즘이 없었습니다. 거래소는 NITE 주문을 보았고, 매수-매도 호가 규칙에 대해 검증했으며, 그것을 매칭시켰습니다. 폭주하는 알고리즘을 탐지할 수 있는 브로커-딜러와 매칭 엔진 사이의 두 번째 필터는 없었습니다 — 오직 브로커-딜러 자체의 거래 전 통제만 있었고, 나이트는 그것을 유지하지 못했습니다. 그 간극이 구조적 교훈이었고, 그것이 규칙 15c3-5가 닫도록 설계된 간극이었습니다.
시점에는 작은 아이러니가 있습니다. 나이트 사건의 45분은 SEC의 시장 접근 규칙이 다루기 위해 작성된 2010년 5월 플래시 크래시의 지속 시간과 거의 정확히 일치했습니다. 그 규칙은 2012년 8월 1일 아침에 효력을 발휘하고 있었습니다. 나이트는 아직 그것을 준수하지 못했습니다.
토머스 조이스는 8월 3일 월스트리트 저널에 공식 입장을 표명했습니다. "우리는 소프트웨어 문제의 결과로 비교적 큰 손실을 입었습니다"라고 그는 말했습니다. 그는 파워 페그를 지목하지 않았습니다. 그는 결코 지목하지 않았습니다. 회사의 후속 공시는 그 사건을 "NYSE 상장 증권에 대한 특정 주문 라우팅에 영향을 미친 기술적 문제"로 설명했는데, 그 표현은 운영적 사실을 포착하지만 루틴을 명명하지는 않습니다. 2013년 SEC 명령은 2003년부터 8년 후 누군가가 적절한 플래그 비트를 뒤집기를 기다려 온 휴면 코드를 이름으로 식별한 최초의 공개 문서입니다.
Historical records 우리의 방법론 자세히 보기.