LabHub
배우기 러닝패스 코스

자본시장과 결제 · 체결 취소와 정정, 그리고 장부 상쇄 · 실습

취소 통지가 두 번 들어와 포지션이 반대로 넘어갔다

LabHub 에서 이어서 보기

목표

이미 나간 체결에 대한 취소·정정 통지를 원 체결에 이어 붙이고, 원 장부를 지우는 대신 상쇄 기록을 더해 새 장부를 만듭니다. 포지션을 다시 계산해 이미 나간 보고와 대조하고, 같은 통지를 두 번 받아도 장부가 같은지 확인한 뒤 재보고 대상과 정정 보고서를 냅니다.

왜 중요한가

체결 원장은 이미 여러 곳으로 흘러 나간 자료입니다. 그 한 줄을 조용히 고쳐 쓰면 어제 나간 보고와 오늘 보는 원장이 어긋나고, 어긋난 이유는 어디에도 남지 않습니다. 그래서 금융 장부는 뒤에 씁니다. 취소는 부호가 반대인 상쇄 기록을 더하는 일이고, 정정은 상쇄한 뒤 고쳐진 값으로 다시 쓰는 일입니다. 어려운 것은 이 규칙 자체가 아니라 가장자리입니다. 통지가 없는 체결을 가리킬 수도 있고, 같은 통지가 재전송으로 두 번 올 수도 있고, 이미 취소된 체결에 정정이 올 수도 있습니다. 하나만 놓쳐도 포지션이 반대로 넘어가고, 그 사실은 대개 다음 날 보고가 틀린 뒤에야 드러납니다.

단계

1. python3/root/bust/datafills.jsonl·notices.jsonl·position_report.csv·rules.json 을 만듭니다.
2. 통지를 도착 순서대로 읽어 판정을 /root/bust/notice_match.csv 에 적습니다.
3. 적용할 취소를 상쇄 기록으로 더해 /root/bust/ledger_bust.jsonl 을 만듭니다.
4. 정정을 상쇄와 재기장으로 더해 /root/bust/ledger_final.jsonl 을 만들고 주문별 평균 단가를 /root/bust/order_avg.csv 에 냅니다.
5. 포지션을 다시 계산해 /root/bust/position_diff.csv 에 어긋난 종목만 적습니다.
6. 같은 통지 스트림을 두 번 흘려 넣어 /root/bust/ledger_twice.jsonl/root/bust/idem.json 을 만듭니다.
7. 보고 시각 뒤에 도착한 통지를 모아 /root/bust/rereport.csv 를 만듭니다.
8. 변경 하나하나의 출처를 /root/bust/trace.csv 에, 전체 요약을 /root/bust/report.json 에 적습니다.

참고

단계 8개

  1. 체결 원장과 취소·정정 통지, 포지션 보고 만들기
  2. 통지와 원 체결을 이어 붙여 판정하기
  3. 취소를 상쇄 기록으로 더해 새 장부 만들기
  4. 정정을 반영하고 평균 단가 다시 내기
  5. 포지션을 다시 계산해 기존 보고와 대조하기
  6. 같은 통지를 두 번 받아도 장부가 같은지 시험하기
  7. 보고 뒤에 도착한 통지를 재보고 대상으로 모으기
  8. 정정 보고서와 변경 추적표 쓰기