ClickHouse BUILD 시리즈

움직임을 지켜본다.
이유를 설명한다.

두 시간 동안 공개 예측 시장 데이터를 여러분의 ClickHouse Cloud 서비스로 스트리밍하고, 1분 단위 중간가 시계열을 삽입 시점에 유지하고, 마켓 동향 대시보드를 배포합니다 — 그리고 그 움직임이 넓어진 스프레드와 함께 왔는지, 빨라진 거래와 함께 왔는지 말할 수 있게 됩니다.

2h30 · 실습모듈 9개마켓 5개 · 토큰 10개공개 API · 지갑 불필요

트레이딩 튜토리얼이 아닙니다. 실시간 데이터 문제입니다.

공개 예측 시장은 진짜로 실시간이고, 진짜로 지저분하고, 무료로 읽을 수 있는 흔치 않은 데이터셋입니다. 이 워크숍은 공개 Gamma, CLOB, Data API만 사용합니다: 어느 단계에서도 지갑도, 입금도, 주문도, Polymarket 시크릿도 없습니다.

흥미로운 부분은 피드 자체가 아니라, 그 피드가 여러분의 설계에 무엇을 요구하는가입니다. WebSocket은 빠르지만 내구성 있는 로그가 아니므로, 컬렉터는 조용해지거나 멈춘 소켓을 감지하고, 다시 연결하고, 저하 상태에서는 공개 CLOB 오더북을 폴링합니다. 별도의 루프가 5초 겹침 구간에서 결정적 ID로 거래를 대조하므로, 같은 거래가 두 번 도착해도 한 번만 남습니다.

모든 테이블은 여러분이 실제로 실행할 쿼리에 맞춰 키를 잡습니다 — 시간 버킷을 먼저 두고, 그다음에 그룹으로 묶는 토큰이나 condition — 그리고 1분 단위 중간가 시계열은 대시보드를 새로 고칠 때마다 다시 계산하지 않고 삽입 시점에 유지합니다.

하드코딩된 토큰 ID시작 시 Gamma 디스커버리
로그처럼 쓰는 WebSocket멈춤 감지, 재연결, REST 폴백
새로 고칠 때마다 재계산삽입 시점의 1분 OHLC
그냥 움직인 가격스프레드·신선도·거래량 맥락

가지고 돌아가는 것

마칠 때 전부 돌아가고 있습니다.

여러분의 ClickHouse Cloud 서비스 위에서, 공개 API가 데이터를 넣어줍니다. 로컬에서 도는 것은 상태 없는 Docker 컨테이너 하나뿐입니다.

01

쿼리에서 출발한 데이터 모델

ClickHouse Cloud의 여섯 객체: markets, price_ticks, trades, 그 위의 FINAL 뷰, 1분 단위 집계, 그리고 그 materialized view — UInt256 토큰 ID, 정확한 소수, enum으로 타입을 잡습니다.

02

피드를 버텨내는 컬렉터

하트비트와 멈춤 감지, 재연결, 저하 상태에서의 CLOB REST 오더북 폴백, 그리고 degraded가 실패가 아니라 정직한 상태로 드러나는 헬스 엔드포인트.

03

추측이 아니라 대조한 거래

결정적 ID를 쓰는 5초 겹침 공개 거래 루프, 그리고 그 뒤를 받치는 두 번째 안전망 ReplacingMergeTree.

04

삽입 시점의 1분 OHLC

argMin, argMax, min, max, count 상태를 담는 AggregatingMergeTree, 짝이 되는 Merge 함수로 마무리 — 그리고 읽은 행 수를 원본 스캔과 비교합니다.

05

답할 수 있는 네 가지 질문

현재 확률, 5분 변동 상위, 스프레드와 신선도, 그리고 거래량 속도 — 그래서 움직임에 헤드라인 대신 확신이나 의심이 붙습니다.

+

Cloud 대시보드

Polymarket market pulse — 1분 단위 라인 차트를 포함한 다섯 개의 저장된 쿼리, 전부 ClickHouse Cloud 콘솔에서 만듭니다. 로컬 대시보드 제품은 없습니다.

코스 · 실습 2h30

아홉 개 모듈, 순서대로.

하나의 흐름, 처음부터 끝까지: 마켓을 찾고, 모델링하고, 스트리밍하고, 집계하고, 움직임을 설명하고 배포합니다.

  1. 00

    설치

    15분

    macOS 또는 WSL 2의 Ubuntu를 준비하고, clickhousectl과 ClickHouse 클라이언트를 설치하고, Cloud 서비스를 만들고, 프리플라이트가 READY를 출력하게 만듭니다.

  2. 01

    Gamma에 가장 활발한 활성 마켓을 물어보고, condition ID와 outcome 토큰 ID가 왜 서로 다른 것인지 배웁니다.

  3. 02

    마켓·틱·거래 테이블을 그것들이 처리할 필터에 맞춰 타입까지 잡아 만들고, 1분 단위 중간가 집계와 그 materialized view도 함께 만듭니다.

  4. 03

    컬렉터를 시작하고, 헬스 계약을 읽고, 행이 Cloud에 들어오는 것을 확인합니다 — 피드가 막히거나 조용할 때를 위한 검증된 폴백으로 픽스처 모드도 함께.

  5. 04

    집계 상태를 마무리하고, 읽은 행 수를 원본과 비교하고, 예약된 갱신 작업 없이 최신 분이 앞으로 나아가는 것을 확인합니다.

  6. 05

    네 개의 명시적 쿼리: 현재 확률, 어느 outcome이 가장 많이 움직였는지, 스프레드가 넓은지 호가가 낡았는지, 그리고 거래량이 가속했는지.

  7. 06

    다섯 쿼리를 정확한 이름으로 저장하고, 네 개의 현재 상태 뷰와 1분 단위 라인 차트로 Polymarket market pulse를 조립합니다.

  8. 07

    ClickHouse Agent에 실시간 테이블을 주고 움직임을 감지하게 한 뒤, 스프레드·신선도·거래량을 근거로 조사하게 하고, 결정적 SQL로 그 판정을 심판하고 무엇을 틀렸는지 기록합니다.

  9. 08

    마지막 증명 쿼리를 남기고, 컬렉터를 멈추고, 이미 스트림으로 발행하는 프로덕션 릴레이를 위해 ClickPipes로 가는 경로를 그립니다.

기본은 자율 진행입니다. 모든 모듈이 시작점을 명시하고 스스로 실행할 수 있는 완료 확인으로 끝납니다. live, 신선한 REST 타임스탬프가 붙은 degraded, 그리고 fixture는 모두 유효한 교육 상태입니다 — 강사 트랙은 지금 강의실이 어느 상태인지 알려주고, 픽스처 데이터를 라이브라고 부르는 일은 절대 없습니다.

참가 전에

누구를 위한 것이고, 무엇을 준비할까.

대상 참가자

  • 실시간 피드를 대시보드 뒤에 처음 붙여보는 엔지니어
  • “저 숫자가 왜 움직였나요?”라는 질문을 받아봤고 추측이 아니라 쿼리를 원하는 분
  • 집계를 다시 계산할지, 삽입 시점에 유지할지 고민하는 팀
  • SQL, 터미널, Docker가 익숙하면 충분 — 시장 데이터 배경은 필요 없습니다

준비물 사전 준비

  • macOS 노트북, 또는 Docker Desktop WSL 연동이 켜진 WSL 2의 Ubuntu
  • 경로에 잡힌 Docker, Git, Python 3
  • 서비스 생성, SQL 실행, 쿼리 저장, 대시보드 생성 권한이 있는 ClickHouse Cloud 조직과 API 키
  • Polymarket에서 받아야 할 것은 없습니다: 디스커버리, 호가, 거래 모두 공개 읽기입니다

진행 방식 형식

  • 아홉 모듈 100% 실습 — 모든 명령과 쿼리는 복사·붙여넣기
  • 자율 진행 또는 진행자 주도, 각 모듈을 그대로 따라가는 강사 트랙 포함
  • 데이터베이스는 ClickHouse Cloud 하나뿐 — 어느 단계에서도 로컬 ClickHouse 서버는 돌지 않습니다
  • 조용한 시장은 정상이므로, 픽스처 모드는 즉흥 대응이 아니라 미리 검증되어 있습니다

이 워크숍이 아닌 것 범위

  • 트레이딩이 아닙니다. 지갑, 입금, 주문, 포지션, 투자 조언 없음 — 공개 시장 데이터만
  • 브로커 연습이 아닙니다. 컬렉터가 직접 씁니다. Kafka를 넣으면 작은 피드를 분산 시스템처럼 보이게만 할 뿐이고, ClickPipes가 정답이 되는 지점은 모듈 07에서 다룹니다
  • 전략이 아닙니다. 호가 중간가는 최우선 매수·매도 호가에서 나온 지표적 확률이며, 체결 가능한 가격이 아닙니다
  • 로컬 스택이 아닙니다. 상태 없는 컨테이너 하나가 수집하고, 나머지는 모두 ClickHouse Cloud에 있습니다

움직임을 지켜볼 준비 되셨나요?

Docker가 있는 노트북과 ClickHouse Cloud 조직을 가져오세요. 실시간 피드, 삽입 시점에 유지되는 1분 단위 집계, 그리고 어떤 공개 마켓에도 돌려볼 수 있는 마켓 동향 대시보드를 들고 돌아갑니다.

2h30아홉 개 모듈, 각각 스스로 실행할 수 있는 확인으로 끝납니다.
1분중간가 OHLC를 새로 고칠 때마다 재계산하지 않고 삽입 시점에 유지합니다.
0Polymarket 자격 증명: 디스커버리, 호가, 거래는 모두 공개 읽기입니다.
KO