어떤 특정 종목의 거래 이력을 보고할 때, 그 거래 이력의 청산 여부도 필수적인 항목에 포함되는데요,,
보고 양식에 청산이 2가지로 분류가 되더라구요.
중도청산: 만기 전에 포지션 싹 비움
부분청산: 만기 전에 포지션의 일부만 정리
이번에 주어진 태스크는 단순히 <청산>으로 분류되던,
기존의 선물 거래들의 분류를 세분화 시켜주는 것이었습니다..
필요한 건,, 거래 시점의 포지션 정보인데,, 이게 테이블이 따로따로 되어 있더라구요;;
즉,
개별 거래에 대한 테이블 하나 · · · · · · · · · · · · · · · A
그 거래의 정보를 한 데 모아놓은 테이블 하나 · · · · B
예를 들어,
[제가] [삼성전자] [매수]를 [2024년 8월 23일자]로 5번 했다면,
A에는 5개의 행이 생기는 것이고
B에는 1개의 행이 생기는 것이죵
여기까진 어쨌든 그렇게 막 어려운 건 없는데,,
문제 발생 1
대충 테이블 A에서 이렇게 정보가 기입되어 있다면 정말 판단하기 쉬웠겠죠..
날짜 | 주체 | 종목 | 거래 구분 | 거래 수량 | 포지션 잔고 수량 |
20240823 | ㅁㅁ펀드 | 삼성전자선물 | 매수 | 5 | 5 |
20240823 | ㅁㅁ펀드 | 삼성전자선물 | 전매도 | 2 | 3 |
20240823 | ㅁㅁ펀드 | 삼성전자선물 | 전매도 | 3 | 0 |
(이건 정말 단순화한 테이블이고요,, 거래식별자라든가 다른 기타 필요한 부대 정보가 보통은 포함되어 있습니다..)
이걸 보면
아하.. 그럼 2번 행의 거래는 부분청산으로, 3번 행의 거래는 중도청산으로 분류하면 되겠다..!

라고 할수 있는 거죠 ㅎㅎ
그런데 만약,
저기 테이블 A에 [포지션 잔고 수량] 속성이 없고,
테이블 B에 값들이 합산 되어 있다면 어떻게 할 것 입니까,,
게다가, 테이블 A에 늦게나마 추가하려 한다고 해도,
이미 저 테이블에 데이터를 집어 넣는 파이프라인이 너무 복잡해,
고작 청산 구분을 위해 손대는 것은 빠꾸 먹을 가능성이 높다면 또 어떻게 하시렵니까;;
문제 해결1
그래서 B의 값을 갖고 와서 A의 데이터를 발생시점 순서대로 역할 수 있도록 로직을 재설계했습니다. 🤷🏻♂️
이게 말은 쉽게 하는데,,
생각보다 예외 케이스가 뜨문뜨문 있어서 ㅎㅎ
그거 다 잡아주느라 개발부터 테스트까지 좀 시간이 걸렸었네요,,
아래 그림 참고 하시면 됩니다.
테이블 A
날짜 | 순번 | 주체 | 종목 | 거래 구분 | 거래 수량 |
20240823 | 1 | ㅁㅁ펀드 | 삼성전자선물 | 매수 | 5 |
20240823 | 2 | ㅁㅁ펀드 | 삼성전자선물 | 전매도 | 2 |
20240823 | 3 | ㅁㅁ펀드 | 삼성전자선물 | 전매도 | 3 |
테이블 B
날짜 | 주체 | 종목 | 포지션 잔고 수량 |
20240823 | ㅁㅁ펀드 | 삼성전자선물 | 0 |
테이블 A에서 자기로부터 후위 순서 거래의 거래 수량과
테이블 B의 포지션 잔고 수량을 조합하여
거래 직후, 당시 포지션 수량을 역산하는 것입니다..
순번 2 시점의 거래를 구하면,
[테이블 B에서의 잔고 수량] + [테이블 A 순번 2보다 후위의 거래 수량] = 0 + 3 = 3
3이 남았으므로 부분청산으로 분류!
마찬가지로, 순번 3 시점의 거래를 구하면,
[테이블 B에서의 잔고 수량] + [테이블 A 순번 3보다 후위의 거래 수량] = 0 + 0 = 0
0이 남았으므로 중도청산으로 분류!
이렇게 되는 것입니다..
문제 발생2
그런데 여기서 예상치 못한 문제가 발생하는데,
한번의 거래로 포지션 전환을 하는 케이스는 위에 나온 방식의 적용이 어렵습니다..
이렇게 반대 전환을 하나로 퉁치게 되는 경우가 있더라구요;;
어디서 데이터를 가져오냐에 따라 이런 예외가 있을 수 있는 것 같습니당 😌
예를 들어,
처음에 매수 포지션으로 수량 5개를 들고 있었다면,
이후 전매도 거래가 10개 들어왔을 때, (이게 되는 건가 원래?)
매수 포지션 5개는 청산되고, 매도 포지션 5개로 전환이 되는 것이죠,,
이게 맞는지 검증은 따로 하지 않긴했는데,
전매도 5개, 매도 5개 이렇게 들어와야 되는 건지,
한 번의 반대 매매로 포지션 전환까지 자동으로 되는 건지,
이 부분은 일단 냅두기로 했습니다..
이것도 뭐 거래 항목을 분할하면 되긴하는데, 뭔가 일이 커질 것 같아서,, ㅎㅎ
데이터 출처 별로 이렇게 양식이 다를 수도 있어서,,
처음 도입 시기부터 그런 양식을 통일하고 잘 기록 해두는 게 중요하겠네요..
끝.
'회사생활' 카테고리의 다른 글
[시스템 운영 기록] 하드코딩 최소화를 위한 접근법 (0) | 2025.02.13 |
---|---|
[JavaScript] html2pdf를 사용하면서 겪은 margin 설정 문제 (1) | 2024.08.31 |
[Window] 폰트 자동 다운로더 개발 (0) | 2024.08.11 |