여러 거래소에 흩어진 김치프리미엄을 실제로 체결할 수 있는 금액 기준으로 보고 싶다는 의뢰였습니다.
호가 깊이까지 반영한 스프레드를 여러 명이 함께 실시간으로 보는 웹 서비스로 만들었습니다.
매매를 대신 실행하지는 않는 모니터링 도구입니다.
플랫폼
FastAPI, Next.js 14 PostgreSQL, redis (AWS)
특징
14거래소 실시간 호가 체결가능 스프레드
유형
코인 차익 모니터링 웹서비스 (자동매매 아님)
제작 기간
약 6~8주
납품한 웹서비스의 메인 화면(로컬에서 목 데이터로 렌더). 어느 거래소에서 사서 어디로 보내 팔면 호가 깊이 기준으로 몇 %가 남는지 열마다 실시간으로 갱신됩니다 (수치는 예시)
01배경과 고객 요구사항
고객은 국내외 여러 거래소의 김치프리미엄(김프)을 한 화면에서 실시간으로 보고 싶어 했습니다.
조건이 하나 붙었습니다. 화면에 뜬 차익이 실제로 체결돼야 한다는 것이었습니다.
무료 김프 사이트는 대부분 거래소의 대표 가격, 그러니까 최우선 호가나 마지막 체결가만 비교합니다.
그런데 조금만 큰 금액을 넣으려 해도 호가가 얕아서 화면의 스프레드와 실제 체결가가 크게 벌어집니다.
"1% 차익이라길래 들어갔는데 막상 담아 보니 남는 게 없더라"는 것이 고객의 가장 큰 불만이었습니다.
그래서 요청은 이랬습니다. 호가 깊이를 누적해서 실제로 체결 가능한 금액별 스프레드를 보여 줄 것.
그 계산 과정을 사용자가 직접 열어 확인할 수 있을 것. 그리고 여러 운영진이 같은 화면을 공유하고 방송으로도 내보낼 수 있도록
도메인과 HTTPS를 갖춘 상용 웹 서비스로 안정적으로 돌아갈 것.
02구현 방식
국내 4곳과 해외 10곳, 총 14개 거래소의 실시간 호가를 WebSocket으로 동시에 받아
체결 가능한 스프레드를 계산하고, 이를 여러 사용자가 웹 화면에서 실시간으로 보는 구조로 설계했습니다.
국내는 업비트, 빗썸, 코인원, 코빗 네 곳, 해외는 바이낸스, 바이비트, OKX 등 열 곳의 호가창을 상시 구독합니다.
사는 거래소의 매도호가와 파는 거래소의 매수호가를 호가 깊이만큼 누적해서 금액별 평균 체결단가를 구하고, 차익이 가장 커지는 지점을 찾습니다.
대시보드는 해외에서 국내로, 국내에서 해외로, 같은 지역 안에서 옮기는 경우를 세 열로 나눠 코인별 스프레드를 정렬과 색으로 보여 줍니다.
코인을 누르면 어떤 호가를 얼마씩 담아 그 스프레드가 나왔는지 계산 과정(Trace)을 전부 볼 수 있습니다.
사용자가 정한 규칙에 맞는 기회는 텔레그램으로 알리고, 코인별 네트워크의 입금과 출금 가능 여부도 함께 확인합니다.
지킨 원칙은 하나입니다. 표시된 거래 가능 금액만큼 실제로 주문하면 표시된 스프레드가 그대로 나와야 합니다.
그래서 사용자가 정한 금액(예를 들어 50만 원, 조정 가능)을 호가창 깊이에 실제로 채워 보고
그때의 평균 단가로 스프레드를 냅니다. 화면의 숫자와 실제 체결 사이의 괴리가 여기서 없어집니다.
이 서비스는 매매를 자동으로 실행하지 않습니다. 주문 API는 건드리지 않고
시세와 입출금 데이터만 읽어서 지금 어디서 어디로 옮기면 얼마나 남는지를 보여 줍니다.
03해결한 기술 난제
호가 깊이 기반 실체결 스프레드와 대규모 실시간 운영
어려운 부분은 두 군데였습니다. 먼저 실제 체결 가능한 스프레드입니다. 최우선 호가나 마지막 체결가를 비교하는 무료 서비스와 달리
호가 깊이를 금액만큼 누적해 차익이 최대가 되는 지점을 찾아 표시하고, 그 계산 과정을 Trace로 전부 공개합니다.
다음은 규모입니다. 14거래소 수천 개 코인의 호가를 끊김 없이 처리하려고 코인별로 프로세스를 나눠 총 27개 컨테이너로 돌립니다.
화면이 버벅이지 않고 재부팅 없이 하루 종일 돌아가야 쓸 수 있는 제품이기 때문입니다.
시스템 구성. 14거래소 호가 수신, 실체결 스프레드 계산, 실시간 웹 대시보드와 이를 받치는 토큰 판별, 체인 판별, 인증 서브시스템 (27컨테이너)행을 누르면 호가를 몇 단계까지 먹어야 그 금액이 체결되는지가 그대로 보입니다. 실제 체결 가능한 차익이라고 말하는 근거입니다
사용자가 정한 금액을 매수와 매도 호가창에 실제로 채워 평균 체결단가를 구합니다. 깊이가 모자라면 일부만 계산한 결과를 보여 주지 않고 아예 뺍니다. 실현할 수 없는 차익이 화면에 뜨지 않게 하려는 것입니다.
티커가 같다고 같은 코인은 아닙니다. 컨트랙트 주소, CoinGecko ID, 이름 순서로 실제 같은 토큰인지 판별해서 이름만 같은 다른 코인이 짝지어지는 사고를 막았습니다.
네트워크 이름은 거래소마다 제각각입니다. 같은 컨트랙트를 쓰는 네트워크끼리 하나로 묶되, 주소가 같아도 체인이 다른 예외는 세 겹의 검사로 걸러 냈습니다. 그래서 전송이 안 되는데 차익처럼 보이는 조합은 표에 나오지 않습니다.
거래소 연결이 살아 있는지와 코인별 호가가 얼마나 오래됐는지를 따로 판정합니다. 거래가 뜸한 코인의 멀쩡한 호가가 오래 안 바뀌었다는 이유로 버려지던 문제가 이렇게 풀렸습니다.
아이디와 비밀번호에 더해 기기 등록과 IP 허용 목록으로 외부 유출을 막습니다. 승인받지 않은 기기는 관리자가 승인할 때까지 접속이 대기됩니다.
호가 수신과 계산을 코인별로 나눠 27개 컨테이너에서 병렬로 돌립니다. 이미지 하나를 여러 역할에 같이 써서 배포와 롤백이 간단합니다.
04주요 기능
거래소별 입출금 가능 여부 행렬. 막힌 네트워크로 계산된 차익은 표에서 빠집니다
14거래소의 수천 개 코인을 호가 깊이 기준 스프레드로 실시간 정렬하고, 차익이 가장 큰 지점을 위쪽에 요약합니다.
해외에서 국내, 국내에서 해외, 같은 지역 안 이동을 세 열로 나눠 비교합니다.
Trace 창에서 사용한 호가, 담은 금액, 평균가, 스프레드 계산을 그대로 봅니다. 무료 서비스와 결과가 다르면 바로 원인을 추적할 수 있습니다.
코인과 거래소별 입금, 출금 가능 여부와 서로 맞는 네트워크를 표로 확인합니다.
최소 스프레드, 최소 체결가능액, 거래소와 코인 숨김 같은 필터와 관심종목, 알림음을 사용자마다 저장합니다.
텔레그램 알림은 사용자별 조건에 맞는 기회를 일정 간격을 두고 보냅니다.
관리자 패널에서 사용자, IP 규칙, 접속 중인 세션, 기기 승인, 입출금 조회 전용 API 키, 티커 정보를 관리합니다.
05제작 과정 (약 6~8주)
1~2주차에는 기반과 인증을 만들었습니다. FastAPI와 Next.js 14, PostgreSQL, Redis를 세우고 로그인, 세션, IP 허용 목록, 기기 등록, 관리자 패널 뼈대까지 올렸습니다.
3~4주차는 거래소 연결과 계산 엔진입니다. 14거래소 WebSocket 연결부를 직접 만들고 심볼과 네트워크 이름을 통일한 다음, 환율과 호가 깊이 누적 스프레드 엔진, Trace 검증을 붙였습니다.
5~6주차에 화면을 만들었습니다. 행이 많아도 버티는 3열 실시간 화면, Trace 창, 텔레그램 규칙 알림, 입출금 매트릭스, 관심종목이 이때 들어갔습니다.
7~8주차는 안정화와 배포였습니다. 27컨테이너로 프로세스를 나누고 장시간 연속 가동 테스트를 했으며, 무료 서비스와 결과를 대조해 검증한 뒤 도메인과 HTTPS로 상용 배포하고 인수인계했습니다.
※ 본 사례는 과거 고객 요구사항을 익명 처리하여 재구성한 것이며, 수익률과 수익금은 공개하지 않습니다.
알고랩은 데이터 모니터링과 시각화 프로그램 제작 서비스이며, 종목 추천, 투자 자문, 수익 보장 서비스가 아닙니다.
본 서비스는 시세와 차익 정보를 표시하는 모니터링 도구로 매매를 자동 실행하지 않습니다.
거래소 간 차익거래는 환율, 수수료, 전송지연, 입출금 중단, 체결 실패 등으로 손실이 발생할 수 있으며, 가상자산 투자는 원금 손실 위험이 있습니다.
실시간 데이터 화면이 필요하신가요
이미 구상해 둔 것이 있어도, 아직 생각뿐이어도 괜찮습니다.
어떤 데이터를 어떻게 보고 싶으신지 상담에서 들려주세요.