LabHub
배우기 러닝패스 코스

자본시장과 결제 · 주문이 나가기 전에 거는 위험 한도 · 실습

자리 수를 하나 더 친 주문은 어디서 막히는가

LabHub 에서 이어서 보기

목표

주문 스트림에 단일 주문 한도·가격 대역·제한 종목·중복·누적 노출·킬 스위치를 한 겹씩 얹어 보고, 누적을 갱신하는 시점과 점검의 순서가 결과를 어떻게 바꾸는지 숫자로 확인합니다.

왜 중요한가

체결된 뒤에 찾아내는 것과 나가기 전에 막는 것은 다른 일입니다. 나간 주문은 이미 시장에 있고 되돌리는 값은 그대로 손실입니다. 그래서 점검은 주문 경로 위에 놓입니다. 그런데 점검은 켜 두는 것만으로 되지 않습니다. 거부된 주문까지 누적 한도에 넣으면 실제 노출이 한도의 절반인 사람이 막히고, 기준가가 없는 종목을 통과로 두면 점검이 있는 이유가 사라집니다. 보류를 거부로 세면 킬 스위치가 엉뚱한 자리에서 켜지고, 차단 상태를 메모리에만 두면 재시작 한 번에 풀립니다. 이 실습은 그 함정을 하나씩 직접 만들어 보고 숫자로 확인합니다.

단계

1. python3/root/risk/dataorders.jsonl·limits.json·limits_tight.json·refprice.csv·restricted.txt·accounts.csv 를 만듭니다.
2. 단일 주문 한도(수량·금액)만 걸어 /root/risk/single.csv 를 만듭니다.
3. 가격 대역 점검을 더해 /root/risk/band.csv 를 만듭니다. 기준가가 없는 종목은 보류입니다.
4. 제한 종목과 중복 주문 점검을 더해 /root/risk/screen.csv 를 만듭니다.
5. 계좌·데스크 누적 노출 한도를 더해 /root/risk/exposure.csv 를 만들고, 거부된 주문까지 누적에 넣는 잘못된 구현이 막았을 주문을 /root/risk/naive_blocked.csv 에 적습니다.
6. 킬 스위치를 더해 /root/risk/final.csv 를 만들고 차단 상태를 /root/risk/killswitch.json 에 남깁니다.
7. 가격 대역 점검을 앞으로 당긴 순서로 다시 돌려 /root/risk/order_compare.csv/root/risk/order_compare.json 에 차이를 적습니다.
8. 사유별 통계를 /root/risk/stats.json 에, 한도를 조인 설정과의 비교를 /root/risk/tuning.json 에 적습니다.

참고

단계 8개

  1. 주문 스트림과 한도 정의 만들기
  2. 단일 주문 한도 걸기
  3. 가격 대역과 기준가 없는 종목
  4. 제한 종목과 중복 주문 걸러 내기
  5. 누적 노출 한도와 잘못된 구현 비교하기
  6. 킬 스위치를 올리고 상태를 파일로 남기기
  7. 점검 순서를 한 자리 바꿔 다시 돌리기
  8. 사유별 통계와 한도를 조인 설정의 비교