CHAPTER 17 / SECTION 07
17.7 시작 검사와 비상 중단을 실거래에 적용하기
시작 조건, 중단 단계, 재시작 안전장치와 단계적 배포의 기준을 연결합니다.
시작 조건을 통과한 뒤 첫 주문을 연다
아침에 서버가 실행 중이지만 어제 종가만 보이고, 브로커에는 전날 프로그램이 기록하지 못한 미결 주문이 남아 있다고 하자. 그 상태에서 새 주문을 내면 오래된 시세로 수량을 잡고 같은 종목을 두 번 살 수 있다. Preflight Check(시작 전 검사)는 첫 신호를 받아도 되는 상태인지 다음 항목을 자동으로 확인한다.
- 서버·네트워크·시세·데이터베이스·감시 서비스가 응답하고 필요한 시세가 최신인지 본다.
- 로그인한 계좌가 의도한 모의 또는 실계좌인지, 상품 거래와 시세 권한이 있는지 확인한다.
- 보유량·현금·미결 주문을 브로커 기록과 대조한다. 지난 대사 이후 발생한 야간 체결과 수동 주문을 설명할 수 있어야 한다.
- 장 운영 시간, 거래 제한, 시장의 거래 정지와 가격 갱신 여부를 확인한다.
- 종목과 주문 한도, 손실 기준, 비상 제어 권한을 읽어 의도한 설정과 맞춘다.
필수 검사 하나라도 실패하면 주문을 닫은 상태로 유지한다. 운영자는 어떤 검사에서 어떤 계좌와 시각을 기준으로 실패했는지 시작 보고서에서 확인한다.
이상 상황의 범위에 따라 중단 수단을 고른다
| 상황 | 조치 | 조치 후 확인 |
|---|---|---|
| 신호가 평소와 다르게 나옴 | 새 신호를 중지 | 기존 주문의 진행과 체결 |
| 주문 로직이나 라우팅이 의심됨 | 미결 주문의 취소 요청 | 취소 확인과 그사이 체결 |
| 보유 위험을 계속 감당하기 어려움 | 포지션을 청산해 노출을 줄임 | 청산 체결과 남은 잔량·위험 |
| 상태 손상 또는 시스템 장애 | 프로세스와 연동 자동화 중단 | 브로커에 남은 주문과 보유량 |
Kill Switch(비상 중단 장치)는 운영자가 미리 시험한 명령이나 버튼으로 작동시킨다. 전략 엔진이 멈춰도 브로커 화면이나 별도 제어 경로에서 취소할 수 있어야 한다. 거래가 정지되거나 연결이 끊긴 상태에서는 청산 요청을 했더라도 보유량이 즉시 줄지 않는다. 마지막 확인은 실제 체결과 계좌 상태다.
한도를 주문 직전에 적용하고 재시작 후에도 기억한다
전략이 15만 원 주문을 냈는데 주문 한도가 10만 원이라면 SafeBroker 같은 안전 연결부에서 브로커에 전달하기 전에 차단한다. 같은 위치에서 종목별 평가액 한도, 일일 손실 한도, 허용 상품과 주문 속도를 검사할 수 있다. 종목마다 마지막 가격 막대의 수신·관측 시각을 추적한다. 허용된 경과 시간이 5분인데 마지막 가격이 8분 전이면 해당 가격으로 주문을 만들 수 없도록 한다.
일일 손실 차단은 같은 거래일에 재시작해도 계속 걸려 있어야 한다. 차단 상태와 손실 집계를 저장하고 연결 복구 때 읽는다. 마지막 저장 이후 체결될 수 있으므로 시작할 때 보유량과 미결 주문을 브로커 기록과 다시 대조한다. 차이가 있으면 새 사이클을 보류하고 운영자가 원인과 기준 장부를 확인한 뒤 해제한다.
ml4t-live status는 저장된 일일 손실, 중단 상태, 보유량과 대기 주문을 확인하는 데 쓴다. ml4t-live shadow는 실시간 이벤트로 같은 위험 검사를 실행하면서 가상 체결을 사용한다. 외부 감시기는 정상 수신, 첫 자료 대기, 장중 시세 침묵, 정상적인 장 마감, 브로커 단절을 다른 상태로 받아 대응한다. 장이 닫혀 가격이 멈춘 것과 장중 데이터 장애를 구분해야 한다.
ETF 재학습 경계와 주문 결과를 따로 기록한다
새 운영 구간이 시작되기 전에 21거래일 뒤 수익률을 정답으로 사용한다고 하자. 운영 첫날 전까지 21거래일 뒤 종가를 확인할 수 있는 행만 학습에 넣는다. 마지막 학습 행을 단순히 전 거래일로 잡으면 정답이 운영 구간에 걸친다. 어떤 거래일 달력으로 특성 마감일과 정답 확정일을 산정했는지 학습 기록에 남긴다.
바스켓의 종목별 결과도 의도, 제출 시도, 접수, 실패로 나눠 저장한다. 예를 들어 5종목이 목표이고 3종목의 제출을 시도해 2종목이 접수되고 1종목이 거부됐다면, 5종목의 거래를 완료했다고 보고할 수 없다. 접수한 2종목도 체결 여부를 따로 읽는다. 전송 없이 연습한 실행은 의도만 기록하며 감시기는 실패와 미시도를 구별한다.
모의 운영에서 소액 실거래로 옮긴다
- 그림자·모의 운영실시간 신호, 모의 주문 흐름과 일일 대사를 확인한다.
- 소액 실거래실제 체결가·수수료·보유량과 경보 작동을 확인한다.
- 단계적 증액새 크기에서 체결 지연과 가격 충격을 다시 측정한다.
Shadow Mode(그림자 모드)는 실시간 입력으로 주문 의도를 만들지만 실제 주문은 보내지 않는다. 모의 계좌는 모의 브로커에 제출해 접수·대사 경로를 시험한다. 여러 세션에서 예상한 흐름이 반복되면 일부 자금으로 실거래를 시작한다. 주문 크기가 커질수록 호가를 더 많이 소진하거나 완료 시간이 길어질 수 있어 증액할 때도 운영 지표를 다시 확인한다.
상품과 계좌에 적용되는 지역별 제약을 확인한다
미국의 Market Access Rule(시장 접근 규칙, SEC Rule 15c3-5)은 적용 대상 브로커가 주문을 시장에 보내기 전에 위험을 통제하도록 한다. Financial Industry Regulatory Authority(금융산업규제기구, FINRA)의 Rule 3110은 회원사의 감독 의무를 다룬다. 증거금 계좌의 일중 거래 조건은 브로커가 적용하는 전환 일정과 계좌 유형을 함께 확인한다. Pattern Day Trader(빈번한 당일매매 계좌, PDT) 기준의 기존 체계에서 포지션 위험을 반영하는 Intraday Margin(장중 증거금) 체계로 옮기는 동안 브로커별 적용 시점이 다를 수 있다.
유럽연합의 Markets in Financial Instruments Directive II(금융상품시장지침, MiFID II) 제17조 관련 체계에서는 적용 대상 투자회사의 위험 한도, 주문 전 통제, 시스템 복원과 비상 취소를 다룬다. 개인이 브로커를 통해 자기 자금으로 거래하는 경우와 고객 자금을 운용하는 경우에는 적용 범위가 달라질 수 있다. 인도에서는 개인 자동 거래에도 브로커를 통한 절차와 거래소 식별 요건이 적용될 수 있어 상품·접속 방식별 조건을 확인한다.
상품 거래 허용 여부, 브로커의 자동 접속 지원, 거래세·시장 이용료, 레버리지·증거금 조건을 시작 전에 확인한다. 예를 들어 높은 회전율의 전략은 거래마다 세금이 붙으면 작은 가격 우위를 모두 쓸 수 있다. 무기한 계약 거래 권한이 없는 계좌라면 현물로 바꾸기 전에 원래 전략의 매도 노출과 펀딩 수익을 다시 평가해야 한다.
가동 후에는 전략을 계속 실행할 근거를 감시한다
운영팀은 검증 때 저장한 입력 분포, 예측, 체결 비용과 손실 범위를 실거래 기록과 비교한다. 가격 자료가 끊기면 운영 장애에 대응하고, 시세는 정상인데 모델 입력이 학습 당시와 크게 달라지면 신호와 시장의 관계를 재검토한다. 경보는 거래를 줄이거나 중단할 조건과 연결하고, 새 모델은 검증과 통제된 배포를 거친다.