Quant Trading Bot Devlog

Read in English

"[260912] 킬스위치 오발 - 계좌 구분값 누락이 부른 실거래 정지 위험"

정보용 모의 틱이 실계좌 킬스위치와 같은 이름공간을 공유하면서, 무관한 계좌 잔고로 계산한 가짜 손실이 월요일 실거래를 막을 뻔했습니다.

무관한 계좌 잔고가 실계좌 킬스위치를 건드렸다

오늘 아침 자동매매 킬스위치(새 창)가 실계좌 쪽에서 오발했습니다.

원인은 정보용으로만 돌리는 모의 시뮬레이션 틱이었습니다. 이 틱은 실거래에 관여하지 않고, 장중에 참고용 랭킹을 계산해서 알려주기만 하는 용도입니다.

문제는 이 모의 틱이 라운드를 실행할 때 "어느 계좌 소속인지"를 나타내는 구분값을 넘기지 않았다는 점입니다.

구분값이 비어 있으면 기본값이 실계좌 쪽 값으로 정해져 있었습니다. 그래서 이 모의 틱이 실계좌와 같은 킬스위치 이름공간을 그대로 공유해버렸습니다.

더 나쁜 건 이 모의 틱이 잔고를 계산할 때 쓰는 계좌가, 실계좌와는 전혀 무관한 예전에 쓰던 소액 계좌였다는 점입니다.

그 무관한 계좌의 잔고를 실계좌 쪽 누적 고점과 비교해버리면서, 시스템은 실계좌가 하루 만에 절반 가까이 손실을 본 것으로 오판했습니다.

당연히 실제로는 그런 손실이 없었습니다. 비교 대상 자체가 틀렸을 뿐입니다.

이 오판으로 킬스위치가 발동했고, 신규 매수와 매도가 전부 정지됐습니다.

오늘은 주말이라 장이 없어서 당장 피해는 없었습니다. 하지만 그대로 뒀다면 다음 거래일 실거래가 통째로 막힐 뻔했습니다.

수선 방향

수선은 그 모의 틱에 별도의 구분값을 명시적으로 지정해서, 실계좌 이름공간과 완전히 분리하는 방식으로 처리했습니다.

오발된 킬스위치 표시는 지우고, 관련 프로세스를 재시작해서 정상 상태로 되돌렸습니다.

같은 사고가 다른 곳에서도 재발할 수 있다고 보고, 앞으로 이 계좌 구분값을 다루는 코드에는 항상 명시적으로 값을 지정하기로 규칙을 남겨뒀습니다. 기본값에 기대면 실계좌와 뒤섞일 위험이 있다는 게 이번에 확인된 부분입니다.

그래픽카드 드라이버 불일치도 하나 있었다

오늘 새벽엔 운영체제 자동 업데이트가 그래픽카드 드라이버의 일부만 업그레이드하면서 유저스페이스와 커널모듈 버전이 어긋나는 문제도 있었습니다.

이 때문에 드라이버가 곧바로 인식 불가 상태에 빠졌습니다. 마침 진행 중이던 야간 분석 작업 하나가 대체 경로로 대신 처리됐는데, 다행히 그 전에 원래 계획된 작업 자체는 이미 끝나 있어서 실질적인 영향은 없었습니다.

오늘은 장이 없는 날이라 당장 실거래 리스크는 없었지만, 다음 야간 작업 때 같은 방식으로 다시 실패할 위험이 있어서 통제된 재부팅으로 바로 처리했습니다.

재부팅 후 드라이버 버전 일치와 관련 서비스들의 정상 기동을 확인했습니다. 별도로 로그인 시 그래픽카드 조명을 끄는 부수 기능 하나가 실패 상태인 걸 발견했는데, 급한 문제는 아니라서 나중에 필요하면 다시 들여다보기로 했습니다.