foxnail

클로드님과 함께한 퀀트 구현 과정과 중간 의견 수렴

2026. 06. 21  ·  퀀트

시스템 아키텍처
시스템 아키텍처 — 화면(React)은 도메인(Spring Boot)이 소유한 안전선을 렌더만 하고, 무거운 계산은 Python 퀀트 엔진이 맡는다. (클릭하면 확대)

한 달여를 설계만 했다. 그리고 이번엔 — 구현으로 들어갔다. 설계만 있던 R1 MVP를 하루 만에 실제로 잇고(R1 전구간), 매매 루프를 닫고(R2), 전략까지 고를 수 있게(쏠림 대응) 만들었다. 클로드와 함께한 그 과정과, 중간중간 패널 의견을 수렴한 기록이다.

1. 구현 — “각 조각은 섰지만 안 이어진” 상태에서 출발

시작점은 솔직히 어수선했다. 퀀트 코어(Python)·백엔드(Spring)·프런트(React)가 각자는 도는데 서로 연결되지 않은 상태였다. 오늘 한 일은 그 사이를 진짜로 잇는 것:

백엔드 도커 빌드·기동
프런트↔백엔드 계약 정합
퀀트 REST 브리지
DB 영속(quant_db·Flyway)
실계좌 발급
자동/수동 매수
보유 종합
정직성 리포트

특히 “각자는 도는데 연결하면 깨지는” 통합 갭의 정체는 프런트와 백엔드가 서로 다른 계약이었다는 점 — 단순 설정 문제가 아니라 계약을 맞추는 일이었다. 결과적으로 지금은 명령 한 줄(docker compose)로 엔진·백엔드·프런트 세 컨테이너가 함께 뜬다. 온보딩 → 매수(자동/수동) → 보유 → 매도까지 브라우저에서 라이브로 돈다.

중요한 건 “됐다”가 아니라 “정말 도는가”였다. 컴파일만 통과한 걸 ‘완료’라 하지 않고, 도커로 빌드·기동하고, DB에 적재되고, 재시작해도 살아있고, 안전선이 실제로 위반 주문을 막는지 — 매 단계 실행으로 확인했다.

2. 중간 의견 수렴 — 혼자 정하지 않았다

매매 화면과 전략 방향처럼 “무엇이 옳은가”가 걸린 결정은, 한 사람이 정하지 않았다. 투자 대가·전문가 패널(시스템·금융·UX·리스크 관점)이 각자 의견을 내고 → 충돌을 정리하고 → QA로 검증하고 → 설계에 반영한 뒤 다시 QA하는 — 토론·수렴 절차를 거쳤다. (패널 구성원은 비공개)

이 절차에서 끝까지 지킨 원칙은 둘이었다. 안전선 우회 0(어떤 결정도 손절·종목당 한도·생존 레짐·과적합 게이트를 끄지 못함)과 정직성(가짜 결과·가짜 실시간·가짜 통과를 만들지 않음). 예컨대 ‘가치주처럼 보이지만 실제로는 균등배분’인 전략은 — 오인을 부르므로 내보내지 않았다.

3. 오늘 하루의 상태전이도(STD)

오늘 구현된 시스템을 하나의 상태전이도로 정리했다. 사용자·계좌·매매의 수명주기 — 그리고 모든 전이가 안전선 게이트를 통과한다는 점이 핵심이다.

오늘 구현 상태전이도
상태전이도 — 온보딩→계좌발급→전략선택→안전선 게이트→체결/차단/절단→보유→매도. 어떤 경로도 안전선을 우회하지 않는다. (클릭하면 확대)

4. R2 — 매매 루프를 닫고, 정직성을 더하다

수동 매도

매수만 있던 루프를 닫았다. 보유 수량 내에서만, 거래세 포함, 고정% 익절 버튼은 없다(과매매·쏠림 유도 차단). 위험 축소(매도)는 비상정지 중에도 허용.

과적합 차단(PBO)

전략의 과적합 확률을 실제 CSCV로 계산한다. 가짜 0이 아니라 — 현재 토이 전략은 PBO가 높게(과적합) 나오며, 그 사실을 숨기지 않고 그대로 보여준다.

양도세 모의

국내 상장 소액주주는 양도소득세 비과세(거래세만) — 현행 세법대로 정직하게 0으로 표기. 대주주·해외는 다음 단계.

평가 기준일 투명화

‘최신 캐시 기준’ 같은 모호한 말 대신 실제 평가 기준일을 노출. 실시간이 아닌 건 실시간이 아니라고 적는다.

5. 전략을 고를 수 있게 — 쏠림 위험에 대응

지금 시장은 소수 종목 쏠림이 심하고, 그건 위험하다. 그래서 모멘텀(추세) 외의 방향도 고를 수 있게 했다 — 어떤 전략을 골라도 안전선·손절·한도·과적합 게이트는 똑같이 지나간다. 전략은 ‘후보와 비중을 제안’만 바꿀 뿐이다.

추세추종 (기본·보수)

생존 레짐 위 상승 종목을 적립.

평균회귀

과매도일 때만 매수 — 추격(쏠림)의 반대.

저변동성 동일가중

변동성 낮은 종목을 동일가중 — 쏠림 완화·분산.

진짜 가치주 (다음 단계)

저평가(재무: PER·PBR·배당)는 재무 데이터 수집 후. 지금 흉내 내지 않는다.

솔직한 한계도 적어둔다. 지금 종목군 자체가 소수 대형주라 — 행동(평균회귀·저변동성)으로 쏠림을 줄일 뿐, 근본 분산은 종목을 넓혀야 하고 그건 데이터가 더 필요하다.

6. 변동사항 정리 · 남은 일

오늘 바뀐 것: 설계뿐이던 R1이 단일 명령으로 도는 시스템이 됐고, R2(매도·과적합·세무·평가) + 전략 선택까지 올라갔다. 회귀 안전망(브라우저 클릭관통 e2e·백엔드/퀀트 테스트)도 함께 깔았다. 모든 변경은 안전선과 정직성을 지킨 채로.

  • 실시간 시세·실주문/실계좌 — 현 시대 데이터·증권사 API 키가 필요(다음 단계)
  • 진짜 가치주 전략 — 재무 데이터 수집 후
  • 근본 분산 — 종목군(유니버스) 확대
  • 대주주 양도세 정밀화 · 운영 자동화

빠른 길이 아니라 정확한 길로. 설계가 추적까지 무결하게 섰기에, 구현도 무엇을 바꾸든 그 파급을 잡아낼 수 있다. 아직 개발 중이지만 — 오늘, 시스템이 실제로 숨을 쉬기 시작했다.

공유하기