
문제 제기: 테스트가 실계좌 잔고를 읽으면 무슨 일이 생기나

자동매매나 백테스트, 전진검증(walk-forward)을 만들 때 흔히 저지르는 실수가 있다. 실행 권한만 분리하고 자본 기준은 실제 계좌를 그대로 참조하는 것이다. "어차피 주문은 안 나가니까 괜찮다"고 생각하기 쉽다.
하지만 가상 자동매매가 실계좌 잔고를 참조하면 포지션 크기 계산이 운영 계좌 상태에 종속된다. 실계좌 잔고가 오르내릴 때마다 테스트의 가상 성과와 위험 규모가 함께 흔들린다는 뜻이다.
왜 위험한가: 재현성과 위험 규모가 무너진다

실제 개발 과정에서 국내주식 dry-run 자동매매를 추가하며 확인한 점은 이렇다. 가상 포지션 크기를 실계좌 잔고 기준으로 계산하면 다음 문제가 생긴다.
- 재현 불가: 같은 전략을 같은 시점에 돌려도, 실계좌 잔고가 달라지면 가상 결과가 달라진다. 검증 결과를 신뢰하기 어려워진다.
- 위험 규모의 종속: 가상 매매의 위험 크기가 운영 계좌 상태에 묶여, 테스트가 독립적인 실험이 아니게 된다.
- 성과·위험의 종속: 가상 성과와 위험 규모가 운영 계좌 상태에 종속되어, 계좌 상황이 바뀌면 검증 조건 자체가 흔들린다.
실행 권한(주문을 낼 수 있는가)뿐 아니라 자본 기준(어떤 잔고로 크기를 계산하는가)까지 분리해야 재현 가능한 전진검증이 된다는 것이 핵심 교훈이었다.
확인 절차: 자본 기준이 분리됐는지 검증하는 법
테스트 자동화가 실계좌와 제대로 분리됐는지 다음 순서로 확인할 수 있다.
- 1. 플래그 분리 확인: 가상 실행과 실주문 실행을 서로 다른 플래그로 나눴는지 코드에서 직접 확인한다. 하나의 스위치가 두 경로를 모두 켜지 않아야 한다.
- 2. 자본 출처 추적: 가상 포지션 크기 계산식이 참조하는 잔고 변수가 무엇인지 따라간다. 별도의 dry-run 자본만 참조하는지 검증한다.
- 3. 실계좌 값 변조 테스트: 실계좌 잔고 값을 (테스트 환경에서) 크게 바꿔본다. 가상 결과가 그대로 유지되면 분리가 잘 된 것이다.
- 4. 승인 경로 확인: 실주문에는 별도 승인 단계(예: 메신저 승인, 이중 옵트인)가 남아 있는지 확인한다.
체크리스트
- 가상 실행과 실주문 실행 플래그를 물리적으로 분리했는가?
- 가상 포지션 크기가 실계좌가 아닌 별도 dry-run 자본만 참조하는가?
- 실계좌 잔고를 바꿔도 가상 검증 결과가 재현되는가?
- 실주문에 승인·이중 옵트인 같은 되돌릴 여지가 있는 관문이 있는가?
- AI가 "분리되어 있다"고 답하면, 코드와 실제 동작으로 재확인했는가?
- 작은 테스트 케이스를 직접 실행해 자본 출처를 눈으로 확인했는가?
적용 예시
국내주식 dry-run 자동매매를 예로 들면, 다음과 같이 분리할 수 있다.
- 가상 자동 실행 플래그와 실주문 자동 실행 플래그를 각각 둔다.
- 가상 포지션 크기는 별도로 설정한 dry-run 자본(예: 임의로 정한 가상 자본금)만 기준으로 계산한다.
- 실주문 경로에는 기존의 메신저 승인과 이중 옵트인을 그대로 유지한다.
이 구조에서는 실계좌 잔고가 어떻게 변하든 가상 검증의 조건이 고정되므로, 전략 결과를 반복 재현하고 비교할 수 있다. 이 방식은 자동매매뿐 아니라, 외부 상태를 참조하는 모든 테스트 자동화(사용량 기반 과금, 재고 연동 로직 등)에도 일반화해 적용할 수 있다.
한계와 주의사항
자본 기준을 분리한다고 해서 검증 결과가 실제 운영 성과를 보장하는 것은 아니다. dry-run은 어디까지나 실행 전 확인 수단이며, 시장 상황·체결 지연·수수료 등 실제 환경 요인은 별도로 고려해야 한다.
또한 여기서 소개한 절차는 특정 개발 경험에서 얻은 원칙을 일반화한 것이다. 시스템 구조에 따라 분리 방식과 승인 단계는 달라질 수 있으므로, 각자 환경에서 작은 테스트로 검증한 뒤 적용하기를 권한다. 어떤 방법도 손실이나 성과를 보장하지 않는다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'실전 원칙' 카테고리의 다른 글
| AI에게 규칙을 지시서로 맡길 때와 훅으로 강제해야 할 때 (0) | 2026.08.09 |
|---|---|
| 예측 기능을 만들었다면 연결보다 적중률 집계가 먼저다 (0) | 2026.08.09 |
| AI 자동화에 사람 검수 단계를 반드시 넣어야 하는 이유 (0) | 2026.08.04 |
| 여러 시스템을 다듬다 공통 매니저를 만든 이유 (0) | 2026.07.28 |
| 자동화가 아무것도 안 할 때, 조건부터 완화하면 안 되는 이유 (0) | 2026.07.28 |