CHAPTER 17 / INTRODUCTION
17장 도입. 실거래에서 무엇이 달라지는가
백테스트와 실거래의 차이를 신호, 주문, 체결 기록으로 나누어 추적합니다.
17장. Live Trading Systems(실거래 시스템)초급 학습 노트
수익률 차이를 조사하기 전에 같은 판단을 했는지 확인한다
장 마감 뒤 한 상장지수펀드를 사기로 한 전략을 운영한다고 하자. 과거 기록을 재생했을 때는 다음 날 개장에 매수했다. 실거래 장부에는 개장 10분 뒤 체결이 찍혔다. 운영자는 먼저 신호가 만들어진 시간과 브로커가 주문을 받은 시간을 맞춰 본다. 주문이 늦게 도착했다면 그 사이 가격이 움직인 만큼 과거 실험과 거래 결과가 달라진다.
같은 시각에 같은 자료를 넣었는데 주문이 달라진다면 Technical Divergence(기술적 불일치)가 생긴 것이다. 과거 쪽과 실거래 쪽이 같은 주문을 만들었어도 실제 시장의 체결 가격과 수수료는 실험의 가정과 다를 수 있다. 거래를 정확히 재현했는데 예측 자체가 더 이상 잘 맞지 않는다면 학습 이후 시장이 변했거나, 과거 자료에 우연히 잘 맞은 전략을 선택했을 가능성도 살펴야 한다. 각각 확인할 기록이 다르다.
- 전날 장 마감마감 가격을 받은 뒤 매수 신호를 계산한다.
- 다음 날 개장과거 재생에서 매수가 체결됐다고 가정한 시점이다.
- 개장 10분 뒤실거래 장부에 매수 체결이 기록됐다.
브로커의 주문 접수 시각을 함께 읽으면 제출이 늦었는지, 접수 뒤 체결을 기다렸는지 구분할 수 있다.
매수 의도가 보유량으로 바뀌는 과정
전략은 목표 비중을 정한다. 실행 시스템은 계좌의 현재 보유량을 읽고 매수 수량을 계산해 브로커에 제출한다. 브로커가 주문을 접수한 뒤 실제로 일부만 체결되면, 계좌에는 체결된 수량만 늘고 나머지 주문은 계속 살아 있을 수 있다. 프로그램이 이런 차이를 기록해야 다음날 정확한 보유량에서 다시 시작할 수 있다.
- 연구와 운영을 연결한다. 같은 판단 코드를 과거 재생과 실시간 데이터에 연결한다.
- 실행 경로를 정한다. 필요한 상품과 주문을 취급하는 브로커, 직접 거래소 또는 관리형 플랫폼을 비교한다.
- 주문을 추적한다. 접수·체결·취소 기록을 이어 붙이고 끊겼던 연결을 복구한 뒤 계좌를 대조한다.
- 배포 전에 검증한다. 원자료부터 주문까지 어떤 단계에서 값이 처음 달라졌는지 찾아낸다.
- 노출을 단계적으로 늘린다. 모의 환경과 소액 실거래에서 확인할 항목을 나누고 이상 시 중단 경로를 준비한다.