칼시 API 사용법: 예측 시장 가이드

Ashley Goolam

Ashley Goolam

6 February 2026

칼시 API 사용법: 예측 시장 가이드

CFTC(미국 상품선물거래위원회) 규제를 받는 거래소에서 기관급 API를 사용하여 예측 시장을 프로그래밍 방식으로 거래할 수 있다면 어떨까요? 미국 최초의 연방 승인 예측 시장인 Kalshi는 REST, WebSocket, FIX 4.4 인터페이스를 제공하여 바로 그 일을 가능하게 합니다. 2025년 상반기에만 이 회사는 2억 달러 이상의 수익을 올렸습니다.

예측 시장은 폭발적인 인기를 얻었지만, 개발자들은 규제 인프라와 암호화폐 기반의 유연성 사이에서 선택의 기로에 놓여 있습니다. 비규제 플랫폼은 법적 회색 지대에서 운영되며, 블록체인 지갑이 필요하고, 스마트 계약 위험에 사용자를 노출시킵니다. Kalshi는 CFTC의 감독 하에 지정 계약 시장(Designated Contract Market)으로 운영됨으로써 이러한 마찰 지점을 제거합니다. Kalshi는 명목 화폐 기반 정산, 전통적인 API 패턴, 미국 금융 규제 준수를 제공합니다. 이를 통해 기관이 실제로 사용할 수 있는 거래 애플리케이션을 구축할 수 있습니다.

목차:

💡
예측 시장 통합 구축에는 REST, WebSocket, FIX 프로토콜 전반에 걸쳐 신뢰할 수 있는 API 테스트가 필요합니다. Apidog는 금융 거래 애플리케이션을 위해 특별히 설계된 시각적 API 테스트, 자동화된 문서 생성, 팀 협업 기능을 제공합니다. 신용 카드 정보 없이 Apidog를 무료로 사용하여 Kalshi API 개발을 간소화하세요.
버튼

Kalshi 아키텍처 이해

Kalshi는 자체 인증 이벤트 계약을 사용하는 중앙 집중식 거래소로 운영됩니다. 이 아키텍처를 이해하는 것이 견고한 통합을 설계하는 데 도움이 됩니다.

지정 계약 시장(Designated Contract Market) 상태

Kalshi는 CFTC 라이선스를 보유하여 미국 50개 주 전체에서 이벤트 계약을 합법적으로 제공할 수 있습니다. 주(州) 규제를 받는 스포츠 베팅과 달리 Kalshi는 연방 관할 하에 운영되어 파편화된 주 도박법을 우회합니다. 이러한 지위는 엄격한 규정 준수를 요구합니다. 모든 시장은 CFTC 검토를 거치며, 정산은 게시된 규칙집을 따르고, 거래소는 조작을 탐지하기 위한 감시 시스템을 유지합니다.

중앙 지정가 주문장(CLOB)

Kalshi는 전통적인 CLOB를 통해 주문을 매칭합니다. 매수호가와 매도호가는 지정된 가격에서 가시적인 깊이로 만납니다. 이는 분산형 거래소에서 사용되는 자동화된 시장 조성자(AMM)와 다릅니다. CLOB는 가격 투명성을 제공하고, 지정가 주문을 허용하며, 시장 조성 전략을 가능하게 합니다. 시장 조성자들은 비활동 시장에서도 타이트한 스프레드를 보장하기 위해 매일 약 35,000달러(연간 약 1,270만 달러)의 유동성 인센티브를 받습니다.

이벤트 계약 구조

각 계약은 이진 결과를 나타냅니다. '예(Yes)'는 1.00달러, '아니오(No)'는 0.00달러를 지급합니다. 가격은 0.01달러에서 0.99달러 사이에서 변동하며, 시장이 암시하는 확률을 반영합니다. 0.63달러에 거래되는 계약은 해당 이벤트가 발생할 확률이 63%임을 의미합니다. 정산은 결과 확인 후 1.00달러 또는 0.00달러로 이루어집니다.

계약은 정확한 정산 조건을 명시합니다. 이벤트 정의, 권위 있는 데이터 출처, 그리고 해결 방법론을 포함합니다. 예를 들어, "1월에 CPI가 3.5%를 초과할까?"라는 계약은 정확한 미국 노동통계국(Bureau of Labor Statistics) 발표 자료와 계절 조정 해석 방법을 명시합니다.

오라클 및 정산

Kalshi는 거래소 직원이 운영하는 중앙 집중식 오라클을 사용합니다. 결과는 공식 출처(정부 보고서, 신뢰할 수 있는 데이터 제공업체 또는 확립된 뉴스 기관)를 기반으로 해결됩니다. 정산은 일반적으로 이벤트 종료 후 몇 시간 내에 완료됩니다. 이 중앙 집중식 모델은 분산화보다 속도와 명확성을 우선시하며, CFTC 감독이 책임감을 제공합니다.

kalshi

인증 및 설정

Kalshi의 인증은 계정 대시보드에서 생성된 개인 키를 사용하는 RSA 서명 요청이 필요합니다. 이는 API 호출에 대한 암호화 검증을 제공합니다.

환경 설정

Kalshi는 두 가지 환경을 제공합니다:

항상 데모 환경에서 먼저 개발하세요. 두 환경은 기능적으로 동일하지만, 데모 시장은 유동성이 시뮬레이션될 수 있습니다.

API 키 생성

Kalshi 대시보드의 설정 → API로 이동하세요. 새 키 쌍을 생성합니다:

  1. "API 키 생성"을 클릭합니다.
  2. API 키 ID(kalshi_prod_ 또는 kalshi_demo_로 시작)를 저장합니다.
  3. 개인 키를 즉시 다운로드하세요. Kalshi는 다시 표시하지 않습니다.
  4. 파일 권한(chmod 600)으로 개인 키를 보호합니다.

개인 키는 RSA-PSS 서명을 사용합니다. Kalshi는 서명을 자동으로 처리하는 공식 SDK를 제공하거나, 표준 암호화 라이브러리를 사용하여 수동으로 구현할 수 있습니다.

SDK 설치

Kalshi는 Python(동기 및 비동기) 및 TypeScript용 공식 SDK를 제공합니다:

# Python 동기
pip install kalshi-python-sync

# Python 비동기  
pip install kalshi-python-async

# TypeScript/Node.js
npm install @kalshi/sdk

Go 및 기타 언어용 커뮤니티 SDK도 존재하지만, 공식 SDK는 가장 신뢰할 수 있는 서명 구현과 타입 안전성을 제공합니다.

kalshi sdk

수동 인증 (SDK 없이)

사용자 지정 서명을 구현하는 경우 다음 흐름을 따르세요:

import requests
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import padding
import base64
import json
from datetime import datetime, timezone

class KalshiAuth:
    def __init__(self, api_key_id, private_key_path):
        self.api_key_id = api_key_id
        with open(private_key_path, "rb") as key_file:
            self.private_key = serialization.load_pem_private_key(
                key_file.read(),
                password=None
            )
        self.base_url = "https://api.kalshi.com/v1"
    
    def sign_request(self, method, path, body=None):
        # 타임스탬프 생성
        timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.%fZ")[:-3] + "Z"
        
        # 서명할 문자열 빌드
        string_to_sign = f"{timestamp}{method}{path}"
        if body:
            string_to_sign += json.dumps(body, separators=(',', ':'))
        
        # RSA-PSS로 서명
        signature = self.private_key.sign(
            string_to_sign.encode('utf-8'),
            padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=32),
            hashes.SHA256()
        )
        
        return {
            "KALSHI-ACCESS-KEY": self.api_key_id,
            "KALSHI-ACCESS-TIMESTAMP": timestamp,
            "KALSHI-ACCESS-SIGNATURE": base64.b64encode(signature).decode('utf-8'),
            "Content-Type": "application/json"
        }
    
    def request(self, method, path, body=None):
        url = f"{self.base_url}{path}"
        headers = self.sign_request(method, path, body)
        
        if method == "GET":
            response = requests.get(url, headers=headers)
        elif method == "POST":
            response = requests.post(url, headers=headers, json=body)
        elif method == "DELETE":
            response = requests.delete(url, headers=headers)
        
        return response.json()

# 사용법
kalshi = KalshiAuth(
    api_key_id="kalshi_prod_abc123",
    private_key_path="~/.kalshi/private_key.pem"
)

# 시장 정보 가져오기
markets = kalshi.request("GET", "/markets")
print(markets)

서명 문자열은 타임스탬프, HTTP 메서드, 경로, 그리고 JSON 본문(존재하는 경우)을 결합합니다. SHA-256을 사용하는 RSA-PSS는 요청이 계정에서 시작되었음을 암호화 방식으로 검증합니다.

토큰 기반 세션

초기 인증 후, 후속 요청을 위해 세션 토큰을 얻습니다:

# 세션 토큰을 얻기 위해 로그인
login_response = kalshi.request("POST", "/log_in")
session_token = login_response["token"]

# 후속 요청에 토큰 사용 (30분 유효)
headers = {
    "Authorization": f"Bearer {session_token}",
    "Content-Type": "application/json"
}

토큰은 30분마다 만료됩니다. 지속적인 세션을 유지하기 위해 만료 전에 자동 갱신 로직을 구현하세요.

전문가 팁Apidog

코어 API 엔드포인트

Kalshi의 REST API는 리소스 유형별 논리적 엔드포인트 구조를 가진 표준 규칙을 따릅니다.

시장 데이터 (공개)

사용 가능한 시장 검색:

curl "https://api.kalshi.com/v1/markets" \
  -H "Content-Type: application/json"

특정 시장 세부 정보 가져오기:

curl "https://api.kalshi.com/v1/markets/INXCHI-25JAN31-T69.5" \
  -H "Content-Type: application/json"

티커 형식은 계약 세부 정보를 인코딩합니다: INXCHI-25JAN31-T69.5는 2025년 1월 31일에 만료되는 인플레이션/시카고 연준 국가 활동 지수 시장을 나타내며, 임계값은 69.5입니다.

오더북 깊이 쿼리:

curl "https://api.kalshi.com/v1/markets/INXCHI-25JAN31-T69.5/orderbook" \
  -H "Content-Type: application/json"

응답은 매수 및 매도 수준과 수량을 반환하여 주문을 하기 전에 유동성을 평가할 수 있도록 합니다.

Apidog의

거래 운영 (인증됨)

매수 주문 제출:

order = kalshi.request("POST", "/orders", {
    "market_id": "INXCHI-25JAN31-T69.5",
    "side": "yes",
    "order_type": "limit",
    "price": 6500,  # 0.65달러 (센트 단위)
    "quantity": 100,  # 계약 수
    "client_order_id": "my-strategy-001"  # 선택적 추적 ID
})

Kalshi 가격은 센트 단위입니다 (1 = 0.01달러). 6500의 지정가 주문은 0.65달러 또는 더 좋은 가격으로 체결됩니다.

미결 주문 취소:

kalshi.request("DELETE", f"/orders/{order['id']}")

미결 주문 목록 보기:

curl "https://api.kalshi.com/v1/orders" \
  -H "Authorization: Bearer $SESSION_TOKEN"

포트폴리오 및 계정

계정 잔액 확인:

curl "https://api.kalshi.com/v1/portfolio/balance" \
  -H "Authorization: Bearer $SESSION_TOKEN"

포지션 검색:

curl "https://api.kalshi.com/v1/portfolio/positions" \
  -H "Authorization: Bearer $SESSION_TOKEN"

포지션 엔드포인트는 마지막 거래 가격을 기준으로 미실현 손익을 포함하여 모든 시장의 현재 보유량을 반환합니다.

거래 내역 가져오기:

curl "https://api.kalshi.com/v1/portfolio/fills" \
  -H "Authorization: Bearer $SESSION_TOKEN"

체결은 타임스탬프, 가격, 지불된 수수료를 포함하여 체결된 주문을 나타냅니다.

정산 및 해결

만료된 시장의 정산 상태 쿼리:

curl "https://api.kalshi.com/v1/markets/INXCHI-25JAN31-T69.5/settlement" \
  -H "Authorization: Bearer $SESSION_TOKEN"

해결 후, 이긴 계약은 주당 1.00달러가 귀하의 계좌에 입금되고, 진 포지션은 0.00달러로 정산됩니다.

kalshi api docs

WebSocket을 이용한 실시간 데이터

REST 폴링은 지연을 발생시킵니다. Kalshi의 WebSocket API는 실시간 오더북 업데이트, 거래 실행 및 시장 상태 변경을 스트리밍합니다.

WebSocket 연결

const WebSocket = require('ws');

const ws = new WebSocket('wss://api.kalshi.com/v1/ws', {
  headers: {
    'Authorization': `Bearer ${sessionToken}`
  }
});

ws.on('open', () => {
  console.log('Kalshi WebSocket에 연결되었습니다.');
  
  // 특정 시장의 오더북 업데이트 구독
  ws.send(JSON.stringify({
    type: 'subscribe',
    channels: ['orderbook:INXCHI-25JAN31-T69.5']
  }));
});

ws.on('message', (data) => {
  const message = JSON.parse(data);
  
  switch(message.type) {
    case 'orderbook_update':
      console.log('오더북 변경됨:', message.data);
      break;
    case 'trade':
      console.log('거래 체결됨:', message.data);
      break;
    case 'market_status':
      console.log('시장 상태:', message.data);
      break;
  }
});

// 연결 유지를 위한 하트비트
setInterval(() => {
  ws.send(JSON.stringify({ type: 'ping' }));
}, 30000);

WebSocket 연결은 타임아웃을 방지하기 위해 주기적인 하트비트(30초마다)가 필요합니다. 프로덕션 애플리케이션을 위해 자동 재연결 로직을 구현하세요.

구독 채널

사용 가능한 채널은 다음과 같습니다:

효율적인 데이터 스트리밍을 위해 단일 메시지에서 여러 채널을 구독하세요.

Apidog의
Apidog로 API 테스트하기
Apidog로 API 테스트하기
버튼

개발자를 위한 Kalshi vs Polymarket

두 플랫폼 모두 예측 시장 API를 제공하지만, 아키텍처는 서로 다른 사용 사례에 적합합니다.

규제 현황

Kalshi는 CFTC 규제를 받는 지정 계약 시장(Designated Contract Market)으로 운영됩니다. 이는 미국 사용자에게 법적 명확성을 제공하지만, KYC/AML 규정 준수를 요구하며 42개 주(애리조나, 일리노이, 매사추세츠, 메릴랜드, 미시간, 몬태나, 뉴저지, 오하이오 제외)로 접근을 제한합니다.

Polymarket은 최근 QCX LLC 인수를 통해 CFTC 승인을 받았으며, No-Action Letter와 함께 DCM 라이선스를 보유하고 있습니다. 현재 전면 출시 대기 중인 미국 내 제한적인 가용성으로 국제적으로 운영됩니다. 이전에 등록 없이 운영하여 140만 달러의 벌금을 부과받았습니다 (2022년 1월).

기술 아키텍처

Kalshi는 오프체인 주문 매칭과 법정 통화 USD 정산을 사용하는 중앙 집중식 인프라를 사용합니다. API 접근은 전통적인 패턴을 따릅니다: HTTPS를 통한 REST, 스트리밍을 위한 WebSocket, 기관 거래를 위한 FIX 4.4. 응답 시간은 밀리초 단위입니다.

Polymarket은 폴리곤 블록체인에서 하이브리드 CLOB 아키텍처로 운영됩니다. 오프체인 주문 매칭, Conditional Tokens Framework를 통한 온체인 정산. 통합을 위해서는 블록체인 상호작용이 필요합니다: EIP-712 서명된 주문, 스마트 계약 호출, USDC 거래. 정산 확정은 블록체인 확인(초에서 분 단위)을 요구합니다.

인증 모델

Kalshi는 API 키를 사용한 RSA-PSS 서명 요청, 30분마다 만료되는 토큰 기반 세션을 사용합니다. 안전한 개인 키 저장 및 암호화 서명이 필요합니다.

Polymarket은 블록체인 지갑 서명(MetaMask, WalletConnect)을 사용합니다. 사용자는 자신의 폴리곤 주소를 제어하는 개인 키로 주문에 서명합니다. 세션 토큰은 없으며, 모든 거래에 새로운 서명이 필요합니다.

정산 통화

Kalshi는 은행 송금, ACH, 직불 카드, PayPal, Apple Pay, Google Pay를 통해 USD로 정산합니다. 최소 인출액은 일반적으로 10달러입니다. 처리 시간은 ACH의 경우 1-3영업일, 전신환의 경우 더 빠릅니다.

Polymarket은 폴리곤 블록체인에서 USDC로 정산합니다. 해결 즉시 정산되지만, 암호화폐 지갑과 온램프/오프램프 인프라가 필요합니다. 인출 시 가스 수수료가 적용됩니다.

API 프로토콜

Kalshi는 세 가지 프로토콜을 제공합니다:

Polymarket은 다음을 요구합니다:

사용 사례 권장 사항

Kalshi를 선택하는 경우:

Polymarket을 선택하는 경우:

통합 복잡성

Kalshi 통합은 기본 시장 데이터 및 거래 기능의 경우 2-4주가 소요되며, REST API 경험이 있다고 가정합니다. 친숙한 HTTP 패턴은 학습 곡선을 줄여줍니다.

Polymarket 통합은 생산 준비 스마트 계약 시장의 경우 3-6개월이 소요되며, 보안 감사(5만 달러 - 20만 달러 예산), 오라클 통합 및 유동성 부트스트래핑을 포함합니다. 블록체인 전문 지식이 필수적입니다.

비용 구조

Kalshi는 예상 수익을 기준으로 거래 수수료를 부과합니다(0.7-3.5%, 평균 0.8%). API 접근은 무료이며, 거래 수수료만 지불합니다. ACH 출금 수수료는 없습니다.

Polymarket은 핵심 시장에서 0.01%의 테이커 수수료를 부과하며, 블록체인 거래에 대한 가스 수수료가 발생합니다. 일부 시장에서는 수수료가 없지만, 네트워크 비용은 적용됩니다.

결론

Kalshi의 API는 친숙한 REST 및 WebSocket 프로토콜을 통해 예측 시장에 대한 규제된 접근을 제공합니다. RSA 서명 요청으로 인증하고, 중앙 지정가 주문장을 통해 이벤트 계약을 거래하며, 전통적인 은행 업무를 통해 USD로 정산합니다. CFTC 감독은 미국 애플리케이션에 대한 법적 준수를 보장하며, 2억 달러의 수익률은 기관의 실행 가능성을 입증합니다.

데모 환경에서 통합 패턴을 테스트하는 것으로 시작하세요. 운영 환경으로 이동하기 전에 적절한 키 관리 및 요청 서명을 구현하십시오. 낮은 지연 시간이 필요한 실시간 애플리케이션에는 WebSocket 스트리밍을 사용하십시오. 30분 토큰 만료를 모니터링하고 지속적인 작업을 위해 갱신 로직을 구현하십시오.

Apidog로 오늘 시작하세요. Kalshi API 엔드포인트를 몇 초 만에 가져오고, 아무런 설정 없이 예측 시장 전략을 테스트해보세요.

버튼

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요