첫 자동매매는 안전 코어에서 시작됐다

첫 자동매매는 안전 코어에서 시작됐다의 핵심 문제와 해결 흐름을 보여주는 rio-trading-agent Episode 1 개념 이미지

작성자

카테고리:

프로젝트:

자동매매 프로젝트라고 하면 보통 매수·매도 주문부터 떠올리게 됩니다. 그런데 rio-trading-agent의 초기 기록은 조금 달랐어요.

저장소에서 확인되는 첫 변화는 실제 거래소 주문 기능이 아니라, “페이퍼 트레이딩 안전 코어와 테스트를 추가한다”는 내용이었습니다. 커밋 제목 그대로입니다. 주문을 넣는 코드보다 먼저, 주문을 넣어도 되는지 판단하는 경계를 만들기 시작한 셈이에요.

다만 프로젝트를 시작하게 된 개인적인 계기까지 저장소 기록에 남아 있는 것은 아닙니다. 수동 매매의 어떤 반복 작업이 불편했는지, 왜 처음부터 페이퍼 트레이딩을 택했는지, 당시 어떤 기준을 가장 중요하게 봤는지는 이 자료만으로 단정할 수 없습니다.

확실하게 말할 수 있는 출발점은 있습니다. 초기에는 실거래 주문이 아니라, 페이퍼 거래를 기록하는 흐름 안에 안전 규칙과 테스트를 함께 두었다는 점입니다.

rio-trading-agent Episode 1에서 문제 발견부터 초안 검토까지 이어지는 작업 흐름 도식
문제 발견 후 AI와 논의하고, 구현한 뒤 draft에서 다시 확인하는 흐름.

현재 README에 정리된 구조를 보면 페이퍼 매수는 바로 기록되지 않습니다. 먼저 risk_guard.can_place_order()를 통과해야 하고, 허용된 마켓도 KRW-BTC와 KRW-ETH로 제한되어 있습니다. 페이퍼 매도 역시 아무 기록이나 남기는 방식이 아니에요. 보유 포지션이 없거나, 보유 수량보다 많이 팔려고 하면 차단됩니다.

이 흐름을 아주 단순하게 그리면 이렇습니다.

시장 데이터 → 위험 검사 → 페이퍼 거래 기록

rio-trading-agent Episode 1에서 초안 검토 후 수정 또는 WordPress draft로 이어지는 판단 흐름 도식
초안은 바로 공개하지 않고, 근거와 문맥을 다시 확인한 뒤 draft 상태로 넘긴다.

핵심은 가운데 단계입니다. 거래 기록을 남기는 것보다 먼저, 이 거래가 조건을 통과했는지를 확인합니다. 아, 자동매매인데 주문보다 검사가 먼저예요.

며칠 뒤에는 페이퍼 트레이딩용 일일 손실 가드도 추가됐습니다. 현재 날짜의 페이퍼 거래를 기준으로 열린 포지션의 미실현 손익을 계산하고, 손실이 설정된 한도에 도달하면 신규 페이퍼 매수를 막는 구조입니다. 가격 조회에 실패한 경우에도 당일 포지션이 있다면 신규 매수를 차단하도록 문서에 적혀 있습니다.

여기서 중요한 건 이 규칙들이 실제 손실이나 사고를 막았다고 말할 수 있다는 뜻은 아니라는 점입니다. 그런 운영 결과는 제공된 기록에서 확인되지 않습니다. 다만 코드와 문서의 초기 방향은 분명합니다. “일단 주문을 보내고 보자”가 아니라, 페이퍼 환경에서 허용 범위와 차단 조건을 먼저 코드로 고정하는 쪽이었습니다.

첫 단계의 범위도 그 정도로 잡혀 있습니다. 시장을 제한하고, 매수 전 위험 검사를 거치고, 일일 손실 기준을 넘으면 신규 진입을 막고, 보유량을 넘는 매도를 허용하지 않는 것. 거창한 전략보다 거래가 기록되기 전에 지켜야 할 선을 만드는 작업에 가까웠어요.

그래서 이 프로젝트의 시작을 한 문장으로 정리하면 이렇습니다.

실제 주문을 자동화하기 전에, 주문처럼 보이는 행동도 안전 규칙 안에서만 기록되도록 만드는 것.

그 다음 단계에서는 이 안전 코어 위에 자동매매 판단을 얹을 때, 판단과 주문 실행을 한꺼번에 묶지 않고 어떻게 나눠 검증했는지를 다루게 됩니다. 처음부터 실거래로 뛰어들지는 않았다는 흐름이 이어집니다.

이 프로젝트의 글

이 글과 같은 프로젝트의 기록을 이어서 보려면 프로젝트 태그를 선택해 주세요.