공정 엔지니어의 AI 엔지니어로의 성장 기록

비전공자의 바이브 코딩/일상 & 기초

클로드코드(Claude Code)로 코인 자동매매 프로그램 만들기 : #1. 계획 수립 및 PRD

ai-process-engineer 2026. 5. 16. 15:39

PRD_1_MVP_Portfolio.txt
0.01MB

계획 수립과 PRD 작성하기
— 아이디어에서 MVP 설계까지

코인 직접 투자를 하다 보면 누구나 한 번쯤 겪는다. 오를 것 같아 못 팔고, 내릴 것 같아 못 사는 그 심리적 함정을. 이성이 아니라 감정이 매매를 결정하는 순간들이 반복되면서, 규칙 기반의 자동매매 시스템이 필요하다는 결론에 이르렀다. 아래에 거래소 선택부터 기술 스택 확정, 첫 번째 PRD 작성까지의 과정을 정리했다.

01 왜 자동매매인가

코인 시장은 24시간 열려 있다. 사람이 직접 보기엔 너무 긴 시간이고, 보고 있어도 감정이 개입하면 의미가 없다. 손실이 나면 본전 심리에 물타기를 하고, 수익이 나면 욕심에 매도 타이밍을 놓친다. 이 패턴을 끊으려면 사람이 아니라 규칙이 매매를 결정해야 한다.

핵심 — 자동매매의 목적은 수익 극대화가 아니다. 감정을 제거하고, 사전에 정한 규칙대로만 실행하는 것이다. 그래야 전략의 성과를 데이터로 측정할 수 있다.

규칙 기반 매매가 자리를 잡으면 백테스팅이 가능해진다. 과거 데이터에 전략을 돌려보고 성과를 수치로 확인한 뒤 실전에 적용하는 흐름이 만들어진다. 감과 직관이 아니라 데이터가 판단 기준이 된다.

02 거래소 선택: Korbit

원래 거래하던 Korbit을 그대로 선택했다. 플랫폼을 새로 익히는 비용을 없애기 위해서다. 기술적으로도 선택에 무리가 없었다.

  • REST API 문서 품질 국내 거래소 중 API 문서가 잘 정리되어 있고, 엔드포인트별 요청/응답 스펙이 명확하다.
  • HMAC-SHA256 인증 표준적인 서명 방식으로 구현이 복잡하지 않다. API Key + Secret으로 서명을 생성하는 방식이다.
  • 공개/인증 API 분리 시세·캔들은 인증 없이, 잔고·주문·체결은 인증 후 호출하는 구조가 명확하게 구분되어 있다.

주의할 점이 하나 있다. Rate Limit이 초당 9회이기 때문에 요청 사이에 0.11초 딜레이를 반드시 넣어야 한다. 여러 코인을 동시에 폴링할 때 이 부분을 놓치면 요청 차단이 발생한다.

03 기술 스택 결정

복잡한 데스크탑 앱 대신 브라우저에서 어디서든 접근할 수 있는 웹 기반으로 방향을 잡았다. 별도의 디자인 시안 없이, 평소 마음에 들었던 금융 관련 화면을 캡처해서 Claude에게 넘기는 방식으로 UI 방향을 설정했다.

레이어 기술 포트
Frontend Next.js 16 + React 19 + TypeScript + Tailwind CSS 3000
Backend FastAPI + Python + async/await 8000
Database PostgreSQL (SQLAlchemy ORM, asyncpg)
Exchange Korbit REST API (HMAC-SHA256)

백엔드를 FastAPI + Python으로 선택한 이유는 하나다. 이후 추가할 알고리즘 계산, 머신러닝 모델 연동, 데이터 분석 라이브러리를 모두 Python 생태계에서 처리할 수 있기 때문이다.

04 1단계 범위 결정: MVP 우선

처음부터 전체를 만들려다 실패하는 경우가 많다. 자동매매 알고리즘, 백테스팅, 손익 분석은 모두 2단계로 미뤘다. 1단계에서 목표한 것은 딱 세 가지다.

  1. 01 전체 화면 레이아웃 구성 — 좌우 2분할 구조. 좌측 Portfolio, 우측 Control Panel.
  2. 02 Korbit API 연동 — 시세 조회, 잔고 조회, 캔들 데이터 수신.
  3. 03 Portfolio 페이지 — 보유 코인 현황(현재가, 매수 단가, 평가손익)을 실시간으로 표시.

05 PRD: 화면 구성과 기능 목록

PRD(Product Requirements Document)를 작성하고 Claude에게 넘겼다. 화면 레이아웃은 ASCII 아트로 표현했다. 말로 설명하는 것보다 구조가 훨씬 명확하게 전달된다.

layout — ASCII
┌─────────────────────┬──────────────────────┐
│   Portfolio Panel   │    Control Panel     │
│  (보유 코인 현황)   │   (자동매매 관리)    │
│                     │                      │
│ - 보유 현금         │ - 코인 추가/삭제     │
│ - 코인별 카드       │ - 자동매매 ON/OFF    │
│   · 현재가          │ - 각종 설정 버튼     │
│   · 매수 단가       │                      │
│   · 평가손익        │                      │
│   · 미니 차트       │                      │
│   · 자동매매 여부   │                      │
└─────────────────────┴──────────────────────┘

주요 기능 목록은 다음과 같이 정리했다.

  • 보유 코인 현황 매수 총 금액, 현재 평가금액, 매수 단가, 현재 단가, 수익률을 카드 형태로 표시.
  • 자동매매 적용 코인 선택 거래량 상위 20개 리스트를 팝업으로 표시. 이미 적용된 코인은 선택 불가 처리.
  • Start.bat / Stop.bat 프론트엔드 + 백엔드 서버를 동시에 시작하거나 종료하는 배치 파일.

06 첫 번째 바이브코딩 프롬프트

Claude에게 전달한 첫 번째 프롬프트다. 구현 방식보다 무엇을 만들어야 하는지, 어떤 UI 구조인지를 먼저 설명했다. 알고리즘은 제외하고 UI와 API 연동만 먼저 만들어달라고 요청했다.

prompt — 1차 요청
# 전달한 프롬프트
코인 매매 거래소 : Korbit
기술스택 : NEXT.js + python + CSS wind 로 구성, 웹기반 UI 제공

UI : 화면을 좌우 2분할
> 좌측: 보유 코인들의 현황 (시세추이, 매수 총 금액, 총 보유 금액, 매수 단가, 현재 단가)
> 우측: 옵션 설정

주요 기능:
> 자동매매 적용 코인 선택: 거래량 상위 20개 리스트, 이미 반영된 항목은 선택 불가
> 자동매매 설정: 알고리즘 선택, 적용 금액/주기 변경, 기간 설정, 손익 분석
> 서버 자동 시작/종료 배치 파일 (Start.bat, Stop.bat)

"자동 매매 알고리즘"을 제외한 모든 UI를 구성하고,
"자동 매매 알고리즘"은 제안해줘
바이브코딩 팁 — 첫 프롬프트에서 범위를 명확히 제한하는 것이 중요하다. "전부 만들어줘"보다 "이것은 제외하고, 이것만 먼저 만들어줘"가 결과물의 품질을 높인다.

07 결과물: 디렉토리 구조

첫 번째 프롬프트 결과로 아래 구조가 생성됐다. 백엔드와 프론트엔드가 src/ 아래에 나란히 위치하는 모노레포 구조다.

directory — 프로젝트 구조
Coin_Automatic_Trade_System/
├── Start.bat / Stop.bat          # 서버 시작/종료
├── src/
│   ├── backend/
│   │   ├── main.py               # FastAPI 진입점
│   │   ├── korbit_client.py      # Korbit API 클라이언트
│   │   ├── db_pg/
│   │   │   ├── models.py         # ORM 테이블 정의
│   │   │   └── pipeline.py       # upsert/log 함수
│   │   ├── routers/
│   │   │   ├── market.py         # 시세, 캔들
│   │   │   ├── trading.py        # 잔고, 체결 내역
│   │   │   ├── auto_trade.py     # 자동매매 CRUD
│   │   │   └── analysis.py       # 백테스트, 손익
│   │   └── services/
│   │       ├── auto_trade_service.py  # 알고리즘 구현
│   │       └── scheduler_service.py  # 30초 폴링 루프
│   └── frontend/
│       ├── app/page.tsx           # 메인 대시보드
│       └── components/
│           ├── PortfolioPanel.tsx # 좌측: 보유 현황
│           ├── ControlPanel.tsx   # 우측: 자동매매 관리
│           └── modals/            # 각종 팝업 모달
└── docs/

30초마다 실행되는 스케줄러가 핵심이다. 폴링 주기로 Korbit API를 호출하고, 알고리즘 시그널을 생성한 뒤 조건이 충족되면 주문을 실행한다. 이 흐름이 시스템 전체의 뼈대를 이룬다.

스케줄러 실행
캔들 조회
시그널 생성
조건 체크
주문 실행
Summary

감정을 제거하고 규칙으로 매매하겠다는 목표로 시스템 설계를 시작했다. Korbit REST API, Next.js + FastAPI 스택을 선정하고, 자동매매 알고리즘을 제외한 UI와 API 연동만을 1단계 목표로 삼아 PRD를 작성했다. 바이브코딩으로 첫 번째 프롬프트를 던지자 디렉토리 구조가 생성됐고, 30초 폴링 기반의 스케줄러 뼈대가 만들어졌다. 2편에서는 이 뼈대 위에 실제 매매 전략들을 얹는 과정을 다룬다.