밤사이
국내 시장이 닫힌 밤과 주말에도 거래되는 하이퍼리퀴드 한국 주식 perp 가격으로
① 밤사이 해외 가격과, 과거에 국내 시장이 그 방향대로 열린 비율, ② 두 시장 사이 가격 차이 거래(시세차익) 기회가 있는지 알려주는 서비스. 장 시작 가격은 사용자가 직접 가늠함
English — Bamsai prices Korean blue chips (Samsung Electronics, SK hynix, Hyundai Motor) 24/7 from their Hyperliquid perps (trade.xyz), converted to KRW at the Upbit KRW/USDC rate. While the Korean market is closed it shows the overseas price, how often past Korean opens followed it at the same stage of the US session, and the gap between the two markets net of fees, tax, FX, funding, slippage and order lag.
MCP endpoint https://bamsai.kr/api/mcp (Streamable HTTP, no key) or npm run mcp:stdio locally. Tools: predict_open, get_arbitrage, get_convergence_history, get_news, preview_pair_order (preview only, never sends orders). REST: OpenAPI, 300 requests/min per IP. MIT licensed. The rest of this README is in Korean.
핵심 정리
PRD
개요
국내 시장이 닫혀 있는 65%의 시간(넥스트레이드 포함) 동안에도 삼성전자·SK하이닉스·현대차 가격은 해외 24시간 시장에서 움직임.
이 가격을 원화로 바꿔 보여주고, 과거에 국내 시장이 그 방향대로 열린 비율과 보통 시작하는 범위를 함께 보여줌. 같은 숫자를 API·MCP로 열어 **LLM으로 자동매매 봇을 운영하는 개인 투자자(초기 타겟)**의 봇이 바로 판단에 쓰게 함. 두 시장에 자금을 둔 사용자에게는 비용 뺀 가격 차이 거래 기회를 계산해 주문 화면(출시 예정)까지 연결.
1. 해결하려는 문제
문제를 보게 된 계기 — 투자자들이 이미 하고 있던 행동
토스증권 커뮤니티, 디시 국내·해외 주식 갤러리 같은 주식 커뮤니티에서 개장 전과 주말마다 하이퍼리퀴드 가격 이야기가 계속 올라왔음. 디시에서 '하이퍼리퀴드 삼전'으로만 찾아도 2026년 2~10월 국내 주식·미국 주식·나스닥·차트 갤러리 등에 15건 넘게 나옴(글마다 조회 50~400회)
→ 사람들은 이미 이 가격을 보고 있지만 직접 환산하고, 언제 본 가격이 맞는지 모르고, 오류 가격과 구분하지 못함. 밤사이는 이 세 가지를 풀려고 시작함
문제의 크기 (2026-11-05 직접 조회)
- 국내 시장은 넥스트레이드(08:00–08:50, 15:30–20:00)를 포함해도 하루 11시간 50분, 주 약 59시간(168시간의 35%). 정규장만 보면 주 32.5시간(19%)
- 하이퍼리퀴드
xyz:SKHX(SK하이닉스) 24시간 거래대금 약 5.4억 달러, xyz:SMSN(삼성전자) 약 0.9억 달러
- 하이퍼리퀴드 상장(2026-02-20 한국 시간 새벽) 이후 국내 시장 개장 174번 중 39번이 주말·연휴 뒤 개장
2. 타겟 고객
초기 타겟의 결정의 순간 — 봇이 무엇을 보고 언제 움직이나
- 국내 주식 봇: 미국장이 닫힌 뒤(06~08시) 개장 전 포지션과 장전 주문 가격을 정할 때 (
predict_open)
- 두 시장을 함께 거래하는 봇: 가격 차이가 평소보다 벌어졌을 때 (
get_arbitrage, 비용 뺀 금액)
- 하이퍼리퀴드 perp 봇: 국내 장중에 국내 가격·투자자 동향이 바뀔 때 (원화 환산 가격, 지난 개장 기록)
확장 타겟의 결정의 순간 — 아침 8시 넥스트레이드가 열릴 때 바로 사고팔지, 기다릴지
- 보유자는 갭이 생기기 전(밤)에 팔 수 없음. 할 수 있는 결정은 '08시에 바로 거래할지, 가격이 자리 잡을 때까지 기다릴지'와 '장전 주문을 얼마에 걸지'
- 하이퍼리퀴드가 밤새 1% 넘게 움직인 날, 08~09시에 국내 가격이 하이퍼리퀴드 가격 쪽으로 가서 만난 경우가 삼성전자 72%·SK하이닉스 75%, 반대(하이퍼리퀴드가 국내 쪽으로)는 11%·10% (2026-04~11, 105·108번). 개장 직후 국내 가격이 하이퍼리퀴드 원화 가격과 크게 벌어져 있으면 그쪽으로 좁혀질 가능성이 큼
- 예: 11/6 삼성전자는 하이퍼리퀴드 07시 −9.5%, 08:00~08:10 평균 −11.9%로 과하게 시작한 뒤 10:28 −7.4%로 되돌아옴
일반 투자자 화면과 perp의 경계: 홈 카드·지난 개장 기록·소개는 국내 주식 판단까지만. 해외 perp는 국내 투자자 보호 대상이 아니라서(금융위·금감원 2026-10-16 유의사항 발표) perp 계좌가 없는 사람에게 권하지 않음. 가격 차이 거래와 perp 주문은 이미 하이퍼리퀴드를 쓰는 사용자용 별도 트랙이고, 증권 앱 버전에서는 국내 주문만 연결
주문 화면과 출시 알림 신청: 해외 가격과의 차이를 보다가 그 자리에서 주문까지 하고 싶은 사용자가 있는지 확인하려고, 종목 상세에 주문 화면(차트 | 호가 | 주문)과 출시 알림 신청(이메일)까지 만듦. 대상이 넓어지는 방향이라 핵심 범위와 나눈 별도 트랙으로 두고, 실제 주문은 보내지 않음. 주문 버튼 클릭과 알림 신청 수로 수요를 잼(H4)
3. 가설
가장 위험한 가정부터 순서대로 검증. 번호는 처음 정한 그대로 둠(GA 이벤트·실험 기록과 맞추려고).
H1은 출시 전 과거 데이터로 먼저 검증
왜 이 기준인가
- 개인 투자자는 정규장(09:00–15:30)뿐 아니라 넥스트레이드(08:00–08:50, 15:30–20:00)에서도 거래함 → '국내 시장'은 둘을 합친 08:00–20:00
- 국내가 정말 닫힌 시간은 20:00 → 다음 거래일 08:00(평일 12시간, 주말·연휴는 더 김). 이때 움직이는 건 하이퍼리퀴드뿐
- 그래서 기준 = 20:00 국내 마지막 가격, 맞힐 대상 = 08:00 국내 시장이 다시 열렸을 때 개인이 거래할 수 있는 가격
- 08:00 첫 체결 한 건은 거래가 적어 들쭉날쭉함 → 08:00~08:10 거래량 가중 평균을 씀 (아래 비교표에서 5분·10분 평균이 가장 안정적)
채점 방법
- 하이퍼리퀴드 움직임 = 08:00 직전(07:00~07:59 1시간 봉 종가, 그 시각 환율로 원화 환산) 하이퍼리퀴드 가격 ÷ 전날 20:00 국내 가격 − 1. 08:00 넥스트레이드 첫 체결이 오라클로 들어가 perp가 튀는 경우(2026-07-28)를 피하려고 08:00 직전 가격을 씀
- 국내 움직임 = 08:00~08:10 평균 가격 ÷ 전날 20:00 국내 가격 − 1
- 둘의 방향(+/−)이 같으면 '따라감'. 둘 중 하나라도 ±0.05% 안쪽이면 '거의 그대로'로 따로 표시하고 비율에서 뺌
- 조건: 그날 밤(20:00~08:00) 하이퍼리퀴드 거래대금 100만 달러 이상. 거래가 적으면 몇 건의 주문으로도 가격이 흔들려 '시장의 판단'으로 보기 어려움 (아래 근거)
거래대금 조건의 근거 (같은 기간, 세 종목 합산)
- 한 종목 안에서도 거래가 많은 밤이 더 잘 맞음: 삼성전자 78.8% → 92.6%, SK하이닉스 81.2% → 89.7% (각자 중간값 아래/위)
- 현대차는 밤사이 거래대금 중간값이 23만 달러(삼성전자 1,760만, SK하이닉스 9,700만)라 거의 모든 밤이 기준 미만
- 기준선은 백테스트에서 거래대금 구간별로 적중률을 비교해 정함 (100만 달러 미만 67.3% vs 이상 86.3%로 차이가 가장 뚜렷한 지점)
- 같은 데이터로 기준을 고르고 같은 데이터로 채점하면 성적이 실제보다 좋게 보일 수 있음 → 기준을 0~500만 달러로 바꿔도 결과가 거의 같은지 확인함 (아래 표). 숫자 하나에 기대는 결과가 아님. 앞으로 쌓이는 밤으로 계속 다시 확인
(2026-11-06 기준, 괄호는 채점한 밤 수. 하이퍼리퀴드 방향대로 열린 비율)
- 화면: 그날 밤 거래가 기준 미만으로 보이면(지금까지 밤 거래와 최근 20일 밤 거래의 중간값 중 큰 쪽) 예측 옆에 '거래 적어 덜 정확' 표시
어느 시점 가격으로 채점할지 비교 (조건 없이 전체 밤, 하이퍼리퀴드 방향대로 열린 비율)
- 기간: 2026-04-13 ~ 2026-11-05, 종목별 139번. 80% 구간·오차는 앞 20번을 학습에만 쓰고 나머지 119번으로 채점. 하이퍼리퀴드 상장은 2026-02-20(한국 시간 새벽 5시, SK하이닉스 기준)이지만, API가 1시간봉을 최근 5,000개(약 7개월)만 보관해서 08:00 가격이 있는 4월 13일부터 채점 가능. 시간이 지나면 표본이 계속 늘어남
- 이전 기준(정규장 15:30 종가 → 09:00 시가)에서는 91.2 / 90.8 / 85.5%였음. 15:30~20:00 넥스트레이드에서 이미 보이는 움직임까지 '예측'으로 쳤기 때문에 높게 나온 것 → 서비스 전제와 맞지 않아 기준을 바꿈
- 표본은 2026년 4~11월 한 시기라, 다른 장세(긴 횡보·강세장)에서도 같은지는 쌓이는 밤으로 계속 확인해야 함
다른 신호와 비교 (같은 기간·같은 채점, 조건 없이 전체 밤, 2026-11-06 계산)
- 매일 '오른다'고 찍기만 해도 맞는 비율은 52~53%(같은 기간 국내 시장이 오르며 시작한 날의 비율). 하이퍼리퀴드를 따른 85~88%와의 차이가 신호의 값
- 방향만 보면 종목 perp가 한국 지수 perp보다 낫지 않음 → 이 서비스의 가치는 '종목 perp만의 방향 예측력'이 아니라 국내가 닫힌 시간에 정해지는 가격을 종목별 원화 가격으로 보여주는 것
- 아직 못 한 비교: 코스피200 야간선물(무료 분봉 데이터 없음), 시작 가격 '크기' 오차를 신호별로 비교
- 결론: 삼성전자·SK하이닉스 통과, 현대차 판단 보류. 현대차는 하이퍼리퀴드 거래가 너무 적어 기준을 넘는 밤이 거의 없음 → 예측에 '거래 적어 덜 정확' 표시
- 화면에서도 같은 숫자를 매일 다시 계산해 공개 (H3 검증 장치)
언제 본 가격이냐: 미국장 전·중·후
밤사이 하이퍼리퀴드는 미국장(겨울 23:30~06:00, 여름 22:30~05:00 한국 시간)이 열려 있는 동안 가장 크게 움직임. 저녁 9시에 본 가격과 새벽 6시에 본 가격은 믿을 수 있는 정도가 완전히 다름.
밤의 시각별로 '그때 하이퍼리퀴드 가격을 그대로 봤다면' 다음 날 국내 시장이 그 방향으로 열렸는지 (2026-04-13~11-06 평일 밤, 종목별 108번)
- 상장(2/20)부터 4시간봉으로 본 133번도 같은 모양: 21시 49~53%, 01시 70~74%, 05시 83~86%
- 화면은 지금이 미국장 전·중·후 중 어디인지에 따라, 같은 단계에서 봤던 지난 개장일의 적중률을 보여줌 (개장일마다 한 번씩 셈. 주말 60시간이 평일 12시간보다 많이 세어지지 않게)
- 그래서 화면은 '오를 확률'처럼 앞으로를 약속하는 숫자 대신 "미국장 마감 때 하이퍼리퀴드 가격 / 지금 가격 / 과거 이 시간대엔 n%가 이 방향대로 열렸어요" 를 보여줌. 틀릴 수 있는 숫자를 확률로 포장하지 않기 위해서
- 발견 경위: 커뮤니티 첫 글(11/5 21시)에 '내일 시초가 +0.3%'를 썼는데, 새벽 미국장에서 하이퍼리퀴드가 −9.5%까지 내려가 실제 시작은 −11.9%. 저녁 숫자를 내일 가격처럼 보여준 게 문제였음
보통 시작 범위 계산법
화면의 '보통 이 안에서 시작(80% 구간)'과 지난 개장 기록 채점은 아래 순서로 계산함. API에는 예상 가격·probUp도 남아 있지만 화면에서는 쓰지 않음 (확률이 약속처럼 읽혀서). 사용자용 설명은 소개 페이지('밤사이는 이렇게 계산해요')에 있음. 모델은 일부러 단순하게 둠 (표본이 종목별 140번 남짓이라 복잡하면 과적합되고, 초보도 이해할 수 있어야 해서)
- 밤사이 차이
g = 지금 하이퍼리퀴드 가격(원화) ÷ 어제 20:00 국내 가격 − 1
- 예상 움직임
μ = α + β × g
- β = 과거 개장에서 국내가 하이퍼리퀴드 움직임을 평균 몇 배 따라갔는지. 1(그대로 따라감) 쪽으로 당겨서 급락일 몇 번에 흔들리지 않게 함
- α = 하이퍼리퀴드와 상관없이 생기는 평균 차이 (거의 0)
- 불확실성
σ = √(과거 예측이 빗나간 폭² + β² × 하이퍼리퀴드 시간당 변동성² × 장 열리기까지 남은 시간)
- 빗나간 폭은 평일 밤 / 주말·연휴를 따로 계산 (주말이 더 큼)
- 남은 시간이 길수록 하이퍼리퀴드가 더 움직일 수 있으니 범위를 넓힘
- 결과
- 예상 가격 = 어제 20:00 가격 × (1 + μ)
probUp(API 전용, 화면에는 안 씀) = 정규분포에서 0보다 클 확률 Φ(μ / σ)
- 예상 범위(80% 구간) = μ ± 1.28σ. 10번 중 8번은 이 안에서 시작하도록 잡은 범위
- 검증: 그날 이전 데이터로만 2~4를 계산해 그날 결과와 비교 (walk-forward). 미래 정보가 섞이지 않음
예시: SK하이닉스, 2026-11-04 아침 (실제 채점과 같은 방식: 11월 3일까지 137번 개장으로 맞춘 계수 α −0.22%, β 0.875, 평일 밤 σ 1.36%)
- 지금(11/5) 기준 계수는 α −0.24%, β 0.88, σ 1.37%로 매일 조금씩 바뀜. 예시는 그날 아침 실제로 썼을 계수로 계산함 (서버 채점 값 +2.7289%와 일치)
4. 검증 지표
North Star: 밤사이 API·MCP를 호출한 주간 외부 호출자 수 (초기 타겟)
→ 선정 이유: 초기 타겟의 봇이 밤사이 숫자를 실제 판단에 쓰고 있다는 가장 직접적인 신호. 한 번 붙여 보고 마는지, 매주 다시 부르는지가 핵심
- 정의: 실제로 데이터를 가져간 호출(REST
/v1 조회, MCP 도구 호출)만 남기는 GA 이벤트 api_data_call의 주간 고유 호출자. 연결 확인(initialize·tools/list), 목록 사이트 점검, 오류 응답, 우리 쪽 확인 호출은 제외
- 호출자 구분: IP와 User-Agent를 비밀 값과 섞은 해시(
caller_id, 2026-11-07부터). IP 원문은 GA로도 로그로도 남기지 않음. 같은 망에서 같은 도구를 쓰면 한 명, IP가 바뀌면 두 명으로 셀 수 있는 근사값. 그 전 기록은 User-Agent로만 구분돼 사람 수를 알 수 없음
- 신규·재사용자: 그날 처음 본
caller_id면 신규, 이전 날에 본 적 있으면 재사용자
- 보조: 개장 전(06~08시)
predict_open 호출 수, 2주 연속 호출한 호출자 비율
- 유입: 2026-11-06 공식 MCP Registry(
io.github.eddyParkGG/bamsai)와 Glama에 등록(원격 연결 kr.bamsai/bamsai A등급, 소스 빌드 검사 통과한 서버 eddyParkGG/bamsaikr B등급), awesome-mcp-servers·awesome-remote-mcp-servers 목록에 추가 PR 제출(자동 검사 통과, 관리자 머지 대기). 로컬 프로세스로 붙이는 클라이언트용 stdio 실행(npm run mcp:stdio) 지원
확장 타겟 지표: 미국장이 닫힌 뒤 국내 시장 시작 전(06:00~08:00)에 밤사이 가격을 실제로 본 주간 사용자 수
→ 선정 이유: H2(습관)와 H1(하이퍼리퀴드 신호)이 둘 다 맞아야 오르는 숫자. 06시 이후가 하이퍼리퀴드 가격이 가장 정확한 시간대(위 표)이고, 08시에 넥스트레이드가 열리기 전 판단하는 순간이라 이 시간대만 셈
- 정의: GA
prediction_view 이벤트 중 kst_window = preopen(06:00~08:00 KST)인 고유 사용자. 홈·종목 페이지에 들어왔을 뿐인 page_view는 세지 않음
- 측정 상태: 2026-11-06에 GA 맞춤 측정기준(
kst_window 등)을 등록해 그날부터 측정 가능. 그 전 데이터로는 계산할 수 없음
- 다음 단계에서 이어 볼 것: 같은 사용자의 주간 재방문률, (주문 출시 후) 개장 직후 주문 전환
확장 타겟 첫 실험: 커뮤니티 게시
판단 규칙
- 개장 전 재방문 15% 이상 → 개장 전 알림(웹 푸시) 바로 개발. 알림이 리텐션을 더 올릴 여지가 큼
- 5~15% → 메시지(A/B 중 나은 쪽)와 게시 시각을 바꿔 1회 재실험
- 5% 미만 → '매일 보는 습관' 가설 기각. 주말·연휴 갭 리포트처럼 이벤트성 콘텐츠로 방향 전환
- A/B는 채널 간 차이보다 메시지 차이를 먼저 봄 (채널은 2개뿐이라 비교 의미가 약함)
주의할 점
- 커뮤니티 홍보 금지 규정: 정보 공유 형식(주말 갭 수치 + 그래프 캡처)으로 쓰고 링크는 1개만
- 특정 종목 매수·매도 권유 문구 금지 (유사투자자문 오해 방지)
출시 후 지표 (실험 통과 시)
가드레일 (나빠지면 바로 멈춤)
- 예측 오차 3%p 이상인 날의 비율 (오라클 이상, 상한가·하한가 날 포함)
- 주문 버튼 클릭 중 하이퍼리퀴드·레버리지 5배 이상 비중 (
order_submit의 market, leverage)
- 홈에서 들어와 종목 상세 주문까지 간 비율 (초보의 고위험 상품 유입 감시)
5. 해결 방법
종목 상세 차트
- 두 시장 캔들/라인 겹침, 시장별 on/off, 시장별 거래량
- 배경색으로 국장 개장(정규장·넥스트레이드)·휴장(하이퍼리퀴드만 거래) 구분, 일봉 포함
- 하이퍼리퀴드 일봉은 국내 거래일과 같은 저녁 8시~저녁 8시 기준으로 다시 묶음 (거래소 일봉은 UTC 하루라 13시간 어긋남)
- 가격 차이 패널: 장중은 진하게, 휴장 중(직전 종가 대비)은 연하게. 하이퍼리퀴드 상장일 세로선
- 따라간 정도 패널: 하이퍼리퀴드가 1% 이상 움직인 날, 그 움직임을 국내 시장이 몇 % 따라 시작했는지 막대로 (100 점선 = 같은 만큼)
- 보조 패널(거래량·가격 차이·따라간 정도·펀딩비·RSI·MACD)마다 제목과 물음표 설명, 지표를 켜면 자동으로 붙음
- 휴장 중에는 보통 시작 범위(점선 2개), 시세차익이 생기면 그 가격에 '시세차익 내기' 버튼
- 뉴스 말풍선 (하루 1건, 출처 확인된 것만) → 누르면 요약과 원문 링크
- 이동평균, 그물망, 볼린저, 일목균형, VWAP, RSI, MACD, 펀딩비
따라간 정도 지표 ('지난 개장 기록' 표·차트·API 공통)
따라간 정도 = 08:00~08:10 국내 움직임 ÷ 밤사이 하이퍼리퀴드 움직임. 100%면 그대로 따라 시작. 차트에는 하이퍼리퀴드가 1% 이상 움직인 날만 표시 (작은 움직임은 비율이 의미 없음)
만난 지점 = 08:00~09:00 동안 두 가격이 만난 위치. 0이면 하이퍼리퀴드가 국내 쪽으로, 1이면 국내가 하이퍼리퀴드 쪽으로 이동
가격 차이 거래 (화면 이름 '시세차익')
- 전제: 하이퍼리퀴드 지갑(USDC)과 국내 증권 계좌에 미리 자금을 둔 상태. 원화를 USDC로 바꿔 옮기는 시간은 거래 순간에 들지 않음
- 방법: 두 가격 차이가 평소보다 벌어졌을 때 비싼 쪽을 팔고 싼 쪽을 산 뒤, 차이가 평소 수준으로 돌아오면 둘 다 정리
- 성격: 무위험 차익이 아니라 평소 차이로 돌아온다는 데 거는 거래(통계적 차익). 같은 순간에 사고팔아 확정되는 이익이 아님
- 아직 반영 못 한 위험: 차이가 언제 좁혀질지 모름(펀딩비는 1시간 보유로 가정), 양쪽에 자금을 묶어 두는 부담
순차익 = |가격 차이 − 평소 차이| − 슬리피지 − 주문 간 시차 비용 − 주식 수수료·세금 − perp 수수료 − 환전 비용 − 보유 중 펀딩비
- 두 시장 가격 차이는 0으로 돌아가지 않고 '평소 수준'에서 움직임. 정규장 시간 월별 중간값이 2026년 9월 약 −0.7~+0.1%, 10월 +0.9~1.0%, 11월 +0.5% (세 종목 비슷)
- 그래서 평소 차이 = 최근 5거래일 정규장 1시간 가격 차이의 중간값으로 두고, 지금 차이가 평소보다 더 벌어진 만큼만 기회로 봄. 처음에는 0을 기준으로 계산해서, 평소 수준인 날에도 '1천만원 기준 약 17,000원 남아요'로 보였던 문제를 고침
- 화면 목록은 두 경우만: 비용을 빼고 남으면 '+N원', 아니면 '아직 시세차익 기회가 없어요'. 이유(평소 수준·비용이 더 큼·주식 매도 필요)는 차트 위 설명에서 봄
- 호가 기준 체결가: 1천만원(
notionalKrw)만큼 하이퍼리퀴드는 매수 호가를, 국내는 매도 호가를 쌓아 평균 체결가를 계산. 중간 가격과의 차이가 슬리피지. 보이는 호가로 다 못 채우면 '호가 잔량이 부족해 최대 N만원까지'로 표시하고 채울 수 있는 금액으로 계산
- 주문 간 시차: 두 주문은 동시에 체결되지 않음. 최근 60분 1분 변동성 × √(시차/60초), 시차 기본 3초(
lagSec)
- 오라클이 튀는 순간에도 숨기지 않고 실제 호가 그대로 계산 (그 가격에 실제로 체결되므로). 대신 추가 급변 시 청산 위험이 큼
- 개인은 주식 공매도가 어려워서 perp가 쌀 때(주식 매도 필요)는 기회로 세지 않음
- 모든 비용은 API 파라미터로 바꿀 수 있음
6. 주요 결정과 이유
7. GTM
- 메시지: "장 열리기 전에 먼저 보세요" (가격 정보가 아니라 '시간'을 파는 서비스)
- 훅 콘텐츠: 연휴 끝 개장 전날 "연휴 동안 해외에서 삼성전자 -3.7%, 내일 장 시작 가격은?" (2026-10-18 주말 사례처럼 큰 갭이 생기는 날이 가장 강한 획득 시점)
- 증권사 입장에서의 가치: 해외 perp로 빠져나가는 수요를 '국내 주식 장 시작 가격 판단' 쪽으로 되돌림. 주문은 국내 주식으로 연결
검색·AI 검색 유입 (SEO · GEO · llms.txt)
장 시작 전 "삼성전자 야간 시세", "하이닉스 장전", "하이퍼리퀴드 삼성전자"를 검색하거나 AI에게 묻는 사람이 그대로 들어오게 함
8. 다음 액션 (개선 포인트 아이디어)
- 예측시장: "월요일 장 시작 가격 +2% 이상?" 같은 질문에 사용자 예측을 받아 모델과 비교 (포인트 기반, 현금 없음)
- 개장 전 알림 (웹 푸시 / 카카오 알림톡)
- 개인 주문 이벤트 실시간 구독 (토스증권
personal:order 웹소켓)
- 예측 대상 확대: 지금은 가격만 보여주는 코스피200·EWY·KORU·ADR에도 국내 비교 기준을 만들어 예측 적용 (예: 코스피200 선물·ETF 시세)
- 오라클 가격 괴리 방어 (2026-07-28 사례는 한계 메모 참고)
- 밤사이 가격·적중률: 08:00 직후처럼 오라클 기준이 바뀌는 시각에는 순간 가격 대신 거래량 가중 평균을 씀. 호가 중간값·표시 가격·오라클 가격의 차이가 기준을 넘거나 체결 수가 극히 적은 급변 구간은 '가격 불안정'으로 표시하고, EWY·코스피200 perp 방향과 크게 다르면 경고. 급변 구간이 일정 시간 이상 이어질 때만 숫자에 반영
- 시세차익: 숨기지 않고 하이퍼리퀴드 실제 호가로 그대로 계산함(그 가격에 실제로 체결되므로). 대신 '오라클 이상 구간: 추가 급변 시 청산 위험' 경고와 낮은 레버리지 안내를 붙이고, 국내 쪽은 호가 잔량이 있는 가격만 씀
- 자동 시세차익용 안전장치: 사용자의 AI 에이전트가
get_arbitrage로 감시하다 직접 띄운 서버(본인 키)의 페어 주문 API로 실행하는 흐름은 지금도 가능함. 빠진 것은 안전장치라, 주문 API에 1회·하루 금액 한도, 레버리지 상한, 국내 장 마감 전 청산 규칙, 승인 대기 모드를 추가
AI 활용 과정
Claude Code(Opus 5.5)와 대화하며 기획부터 배포까지 진행
AI로 만든 것과 제품 안의 계산은 다름
- AI는 개발 도구로만 씀: 리서치, 데이터 검증, 백테스트 코드 작성·분석, 구현, QA
- 화면과 API의 숫자는 전부 실제 시세 데이터로 통계 계산이 만듦. 서비스 실행 중에 LLM API를 부르지 않고, LLM이 금융 수치를 만들거나 바꾸지 않음
실행 방법
GA4 설정
가설별 실험 계획·결과 기록과 GA 이벤트·파라미터 전체 목록(어느 화면에서 언제 보내는지)은 docs/experiments/에 정리함
- Google Analytics → 관리 → 속성 만들기 → 웹 스트림 추가 → 측정 ID(
G-…) 복사
- Vercel 환경변수
VITE_GA_ID에 넣고 재배포
- 관리 → 맞춤 정의에 등록
- 이벤트 범위:
kst_window, asset, from, market, tab, mode, side, api_path, caller, mcp_call
- 사용자 범위:
first_source, first_content
- 주요 이벤트(전환):
launch_notify_signup, order_submit, model_explain_open
- 탐색 → 코호트 탐색: 코호트 =
first_source, 재방문 조건 = page_view 중 kst_window = preopen
- 커뮤니티 글 링크 예시:
https://bamsai.kr/?utm_source=dc_stock&utm_medium=community&utm_campaign=bamsai_test1&utm_content=smsn_thu_A
사용한 외부 API
구조
테스트와 장애 대응
운영하며 고친 것 (시스템)
배포 후 실제로 돌려 보며 찾은 문제와 고친 방법. 숫자는 Fly 서버 로그와 직접 측정 기준.
한계 메모
- 국내 시세 이용 조건: 토스증권 오픈 API 약관(제3조 ③)은 시세를 "개인투자자 본인의 매매 목적에 한하여" 쓰고 제3자 제공·배포·상업적 활용을 하지 않도록 정함. 공개 사이트로 국내 시세를 보여주는 이 프로토타입은 이 조건을 넘을 수 있음. 실제로 출시한다면 증권사가 이미 계약한 정식 시세(코스콤 등 시세 제공업체)를 써야 함. 무료 공공 출처(KRX Open API, 공공데이터포털 금융위 주식시세)는 일별·T+1 데이터라 저녁 8시 넥스트레이드 종가와 아침 8:00~8:10 분봉을 대신할 수 없음
- 하이퍼리퀴드 한국 주식 perp와 오라클: 2026년 2월 상장 후 거래가 성장세(SK하이닉스 perp 월 거래대금 3월 1.2억 달러 → 10월 70억 달러, 시장 상황에 따라 월별 변동. 11/6 기준 trade.xyz 주식 perp 전체 24시간 거래대금 약 96억 달러). 다만 perp 가격은 오라클(기초 시장이 열려 있을 땐 외부 체결가, 닫혀 있을 땐 자체 계산 가격)에 묶여 있음. 2026-07-28 08:00 넥스트레이드 프리마켓에서 SK하이닉스 1주가 하한가(127만 2천 원, −29.99%)에 체결되자 이 가격이 오라클에 들어가 perp가 17.9% 급락했고, 약 5,700만 달러의 롱이 청산됨(보도 기준). 거래가 얇은 시점의 체결 하나로 청산을 일으키고 반대편에서 이익을 내는 것이 구조적으로 가능하다는 뜻(국내에서는 시세조종에 해당할 수 있음). 밤사이의 비교 시점(08:00)과 같은 시각이라, 비교 가격은 08:00 직전(07:59) 가격을 씀. 다음 단계로 급변 구간 표시와 거래량 가중 평균 가격으로 보정(8. 다음 액션)
- 토스증권 API는 그룹별 초당 한도(캔들 20, 현재가 15, 지수 캔들 5 등)가 있어 서버가 그룹마다 한도 아래로 줄 세움. 몰리면 국내 시세 갱신이 잠깐 늦어질 수 있음
- 시세차익의 호가 잔량은 받아 오는 호가 단계까지만 반영(보이지 않는 잔량은 모름). 주문 간 시차 비용은 변동성 기반 근사값
- 토스증권 API는 허용 IP에서만 호출 가능. 서버 IP가 고정이어야 함
- 토스증권 토큰은 새로 발급하면 이전 토큰이 바로 무효 → 서버는 한 대(한 프로세스)로 운영
- 토스증권은 동시호가 예상체결가를 주지 않아 개장 직전 예상가는 perp 기준만 표시
- 서버 메모리 캐시라 인스턴스가 바뀌면 백테스트를 다시 계산함 (첫 요청 수 초)
- 하이퍼리퀴드 API는 간격별로 최근 캔들 5,000개만 보관 → 08:00 가격이 필요한 1시간봉은 약 7개월치. 그래서 채점 기간이 2026-04-13부터이고, 서버가 매일 쌓으면 길어짐
- 넥스트레이드 08:00 직후는 거래가 적어 10분 평균도 가끔 튈 수 있음. 현대차처럼 거래가 적은 종목은 영향이 더 큼
- 투자 권유가 아닌 참고 정보. 해외 perp는 국내 투자자 보호 대상이 아님