Kalshi API の使い方:予測市場ガイド

Ashley Goolam

Ashley Goolam

6 2月 2026

Kalshi API の使い方:予測市場ガイド

CFTC(米国商品先物取引委員会)規制下の取引所で、機関投資家向けのAPIを利用して予測市場をプログラムで取引できたらどうでしょうか?米国で最初に連邦政府から認可された予測市場であるKalshiは、REST、WebSocket、FIX 4.4インターフェースを提供し、まさにそれを実現しています。2025年上半期だけでも、同社は2億ドル以上の収益を上げています。

予測市場の人気は爆発的に高まっていますが、開発者は規制されたインフラと暗号ネイティブな柔軟性の間で選択を迫られています。規制されていないプラットフォームは法的なグレーゾーンで運営され、ブロックチェーンウォレットを必要とし、スマートコントラクトのリスクにユーザーを晒します。Kalshiは、CFTCの監督下で指定契約市場として運営され、法定通貨ベースの決済、従来のAPIパターン、および米国の金融規制への準拠を提供することで、これらの摩擦点を排除します。これにより、機関投資家が実際に利用できる取引アプリケーションを構築できます。

目次:

💡
予測市場の統合には、REST、WebSocket、FIXプロトコルを横断する信頼性の高いAPIテストが必要です。Apidogは、視覚的なAPIテスト、自動化されたドキュメント生成、金融取引アプリケーション向けに特別に設計されたチームコラボレーション機能を提供します。Kalshi API開発を効率化するために、Apidogを無料で試してみてください—クレジットカードは不要です。
button

Kalshiのアーキテクチャを理解する

Kalshiは、自己認証型イベント契約を持つ集中型取引所として運営されています。このアーキテクチャを理解することは、堅牢な統合を設計するのに役立ちます。

指定契約市場(DCM)ステータス

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%を超えるか?」という契約では、労働統計局の正確なリリースと、季節調整をどのように解釈するかが指定されます。

オラクルと決済

Kalshiは、取引所スタッフが運営する集中型オラクルを使用しています。結果は、公式情報源(政府報告書、信頼できるデータプロバイダー、確立されたニュース機関)に基づいて解決されます。解決は通常、イベント終了後数時間以内に完了します。この集中型モデルは、分散化よりも速度と明確さを優先し、CFTCの監督が説明責任を提供します。

kalshi

認証とセットアップ

Kalshiの認証には、アカウントダッシュボードで生成された秘密鍵を使用したRSA署名付きリクエストが必要です。これにより、APIコールの暗号化による検証が提供されます。

環境セットアップ

Kalshiは2つの環境を提供しています。

常にデモ環境で最初に開発してください。環境は機能的には同じですが、デモ市場では流動性がシミュレートされている場合があります。

APIキーの生成

Kalshiダッシュボードの「Settings」→「API」に移動します。新しいキーペアを作成します。

  1. 「Generate API Key」をクリックします
  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"

Fillsには、タイムスタンプ、価格、支払われた手数料を含む約定済み注文が含まれます。

決済と解決

期限切れ市場の決済状況を照会します。

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

解決後、勝利した契約は1株あたり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の
Testing APIs With Apidog
ApidogでAPIをテストする
button

開発者にとってのKalshiとPolymarketの比較

両プラットフォームは予測市場APIを提供していますが、そのアーキテクチャは異なるユースケースに対応しています。

規制状況

KalshiはCFTC規制下の指定契約市場(DCM)として運営されています。これにより、米国のユーザーにとって法的明確性が提供されますが、KYC/AMLコンプライアンスが義務付けられ、アクセスは42州(アリゾナ州、イリノイ州、マサチューセッツ州、メリーランド州、ミシガン州、モンタナ州、ニュージャージー州、オハイオ州を除く)に制限されます。

Polymarketは最近、QCX LLCの買収を通じてCFTCの承認を得て、ノーアクションレター付きのDCMライセンスを保有しています。現在、国際的に運営されており、本格的な展開を待って米国での利用は限定的です。以前、登録なしでの運営により140万ドルの罰金を科されました(2022年1月)。

技術アーキテクチャ

Kalshiは集中型インフラを使用し、オフチェーンでの注文照合と法定通貨USDでの決済を行います。APIアクセスは従来のパターンに従います。HTTPS上のREST、ストリーミング用のWebSocket、機関投資家向け取引用のFIX 4.4です。応答時間はミリ秒単位で計測されます。

PolymarketはPolygonブロックチェーン上で運営されており、ハイブリッドCLOBアーキテクチャを採用しています。オフチェーンでの注文照合と、条件付きトークンフレームワークを介したオンチェーン決済です。統合にはブロックチェーンとのインタラクションが必要です。EIP-712署名付き注文、スマートコントラクトコール、USDC取引などです。決済の最終性にはブロックチェーンの確認(数秒から数分)が必要です。

認証モデル

KalshiはAPIキーを使用したRSA-PSS署名付きリクエストを使用し、トークンベースのセッションは30分で期限が切れます。安全な秘密鍵の保管と暗号署名が必要です。

Polymarketはブロックチェーンウォレット署名(MetaMask、WalletConnect)を使用します。ユーザーはPolygonアドレスを制御する秘密鍵で注文に署名します。セッショントークンはなく、各トランザクションには新しい署名が必要です。

決済通貨

Kalshiは、銀行振込、ACH、デビットカード、PayPal、Apple Pay、Google Payを介してUSDで決済します。最低引き出し額は通常10ドルです。処理時間はACHで1〜3営業日、電信送金ではより迅速です。

PolymarketはPolygonブロックチェーン上でUSDCで決済します。解決後すぐに決済されますが、暗号ウォレットとオンランプ/オフランプインフラが必要です。引き出しにはガス料金がかかります。

APIプロトコル

Kalshiは3つのプロトコルを提供しています。

Polymarketが必要とするもの:

ユースケースの推奨事項

Kalshiは以下の場合に選択してください:

Polymarketは以下の場合に選択してください:

統合の複雑さ

Kalshiの統合は、REST APIの経験がある場合、基本的な市場データと取引機能で2〜4週間かかります。馴染みのあるHTTPパターンにより、学習曲線が短縮されます。

Polymarketの統合は、セキュリティ監査(5万〜20万ドルの予算)、オラクル統合、流動性ブートストラップを含め、本番対応のスマートコントラクト市場には3〜6ヶ月かかります。ブロックチェーンの専門知識は必須です。

コスト構造

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エンドポイントを数秒でインポートし、ゼロ設定で予測市場戦略のテストを開始してください。

button

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる