자동매매 개발에서 코드가 오류 없이 실행되었다는 사실과, 의도한 거래가 이루어졌다는 사실은 각각 확인해야 한다. 그 사이에는 자료를 읽고, 목표를 계산하고, 주문을 보내고, 실제 계좌를 대조하는 과정이 있다.

예를 들어 목표가 1개라는 계산이 맞아도 일부만 체결되거나 같은 주문이 두 번 나가면 계좌는 달라진다. 확인할 것은 계산의 정답과 실행의 결과를 잇는 기록이다.

자동매매의 재현성은 신호의 일치에서 시작해, 의도한 목표와 실제 계좌의 차이를 설명하는 데까지 이어진다.

1. 처음 달라진 단계를 찾는다

예를 들어 같은 전략을 두 환경에서 계산했는데 목표 비중이 다르게 나왔다고 하자. 두 코드가 오류 없이 끝났더라도, 외부 자료를 어느 날짜의 정보로 사용했는지부터 대조해야 한다.

최종 수익률이나 거래 횟수가 비슷해도 날짜별 판단은 다를 수 있다. 같은 전략이라는 설명을 확인하려면 입력 자료와 기준 시각, 계산값, 신호, 목표 비중을 차례로 비교해야 한다.

검산은 최종 잔고보다, 두 경로가 처음 달라지는 지점부터 시작하는 편이 원인을 좁히기 쉽다. 나중에 수정된 자료와 당시 실제로 받은 자료도 구분해 보관한다. 두 자료를 바꿔 쓰면 당시 판단을 재현하는 작업이 달라진다.

2. 값이 없다는 것과 목표가 0이라는 것은 다르다

새 명령이 없는 상태와 목표 포지션이 0인 상태는 다르다. 새 명령이 없다는 기록 하나로 실제 계좌가 비어 있다고 판단할 수도 없다.

관찰한 상태

먼저 확인할 것

유효한 새 목표가 0이다

적용 시각과 범위를 확인하고 그 목표에 맞춘다

이번 주기에 새 명령이 없다

마지막 유효 목표와 사전에 정한 유지 규칙을 확인한다

계산을 마치지 못했다

오류·자료 부족을 확인하고 신규 실행 허용 여부를 판단한다

오래된 목표가 도착했다

최신 목표를 덮어쓸 수 있는지 시각과 순서를 확인한다

신호 일치에서 실제 계좌 수량까지 대조합니다 — 새 목표 0·새 명령 없음·계산 실패·오래된 목표를 다른 상태로 처리합니다.

목표값과 함께 계산 시각, 자료의 기준 시각과 유효 범위를 남기면 의미를 대조하기 쉬워진다. 상태를 한 단어로 줄일수록 서로 다른 상황을 같은 행동으로 바꿀 위험이 커진다.

3. 주문을 보낸 뒤의 수량도 전략에 포함된다

가상 예시로 목표가 1개이고 0.3개가 체결되었으며, 나머지 0.7개의 주문이 아직 살아 있다고 하자. 보유량만 보고 0.7개를 추가 주문하면 두 주문이 모두 체결되었을 때 목표를 초과할 수 있다.

응답을 받지 못한 주문도 처리 여부를 확인해야 한다. 전송이 실패했을 수도 있지만, 거래가 이루어진 뒤 응답만 오지 않았을 수도 있다. 이 상태를 곧바로 미실행으로 취급하면 중복 주문으로 이어질 수 있다.

목표와 실제 포지션의 차이를 계산할 때는 보유량, 대기 주문과 누적 체결을 함께 설명해야 한다. 취소를 요청한 뒤에도 처리 도중 추가 체결이 있었는지 확인한다. 이 예시는 특정 거래소의 주문 규격을 설명하는 것이 아니라 검증할 질문을 보여 준다.

4. 재시작 뒤에는 의도와 현실을 다시 맞춘다

프로그램이 멈춰 있는 동안에도 주문이 체결되거나 다른 경로의 거래가 발생할 수 있다. 마지막 저장 상태만으로 새 주문을 결정하면 실제 계좌와 어긋날 수 있다.

복구할 때는 실제 포지션, 대기 주문, 최근 체결과 잔고를 내부 기록에 연결한다. 실제 계좌는 현재의 노출을 보여 주고, 내부 기록은 전략의 의도를 설명한다. 계좌에 존재하는 모든 거래가 그 전략의 의도였다고 가정해서는 안 된다.

그다음 재개 조건을 정한다. 설명되지 않는 주문이 남아 있는지, 자료가 최신인지, 위험을 계산할 수 있는지를 확인한다. 프로그램이 켜졌다는 표시와 거래를 다시 시작해도 되는지는 별개의 점검 결과다.

5. 검증 결과에 정확한 이름을 붙인다

  • 과거 계산의 일치: 같은 확정 자료에서 같은 결과가 나왔는가.

  • 실시간 관측: 그때 들어온 자료로 같은 판단을 재현할 수 있는가.

  • 실행 검증: 주문과 체결, 실제 포지션을 설명할 수 있는가.

  • 성과 평가: 기간·입출금·비용·위험을 맞춘 결과는 어떠한가.

각 단계는 다른 증거를 남긴다. 과거 결과가 같았다는 사실만으로 실시간 체결까지 검증했다고 확대할 수는 없다. 개발 기록을 공개할 때도 무엇을 확인했고 무엇이 남아 있는지 이 이름에 맞춰 적어야 한다.