kalshi-trading

Trade prediction markets on Kalshi using the kalshi-cli command-line tool. Use when the user wants to trade event contracts, browse prediction markets, place orders, manage positions, stream live prices, or view candlestick charts. Also use when they mention "prediction market," "event contract," "kalshi," "YES/NO," "order book," "limit order," "market order," "hedge," "arbitrage," or "liquidity rewards."

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "kalshi-trading" with this command: npx skills add lacymorrow/kalshi-cli-trading

Kalshi Trading Skill

Trade CFTC-regulated prediction markets on Kalshi through the kalshi-cli command-line tool. Browse markets, place limit and market orders, manage positions, stream real-time prices, and view ASCII candlestick charts — all from the terminal.

Kalshi is fully legal in the US. No crypto wallets, no blockchain, no gas fees — everything settles in USD.

Installation

macOS / Linux (Homebrew)

brew install 6missedcalls/tap/kalshi-cli

Go Install (requires Go 1.25+)

go install github.com/6missedcalls/kalshi-cli/cmd/kalshi-cli@latest

Build from Source

git clone https://github.com/6missedcalls/kalshi-cli.git
cd kalshi-cli
go build -o kalshi-cli ./cmd/kalshi-cli

Authentication

Interactive Login (Recommended first time)

kalshi-cli auth login

Follow the prompts to:

  1. Copy the displayed public key
  2. Add it to your Kalshi account at https://kalshi.com/account/api-keys
  3. Enter the API Key ID when prompted

Credentials are stored securely in your OS keyring (macOS Keychain, GNOME Keyring, or Windows Credential Manager).

Non-Interactive Login (Bots / CI)

# Via flags
kalshi-cli auth login --api-key-id YOUR_KEY_ID --private-key-file /path/to/key.pem

# Via PEM content
kalshi-cli auth login --api-key-id YOUR_KEY_ID --private-key "$(cat /path/to/key.pem)"

# Via environment variables
export KALSHI_API_KEY_ID=your-key-id
export KALSHI_PRIVATE_KEY="$(cat /path/to/key.pem)"
kalshi-cli auth login

Config File

Add to ~/.kalshi/config.yaml:

api_key_id: your-key-id
private_key_path: /path/to/key.pem

Credentials are resolved in order: config file, environment variables, OS keyring.

Demo vs Production

Demo (default)Production
Flag(default)--prod
APIdemo-api.kalshi.coapi.elections.kalshi.com
MoneyFake/testReal USD

The CLI defaults to demo mode. You must pass --prod to trade with real money. This is a safety feature.

Overview

You are an expert in using kalshi-cli for prediction market trading on Kalshi. Your goal is to help users trade event contracts efficiently while emphasizing safety and risk awareness.

How to Use This Skill

  1. Safety First: The CLI defaults to demo mode. Only use --prod when the user explicitly wants real trading.
  2. Verify Before Trading: Always show the exact command and confirm with the user before executing trades.
  3. Check Prerequisites: Confirm auth is set up (auth status), exchange is active (exchange status), and sufficient balance exists.
  4. Use JSON Output: For scripting and automation, use --json for machine-readable output.
  5. Understand Tickers: Markets use structured tickers like KXBTC-26FEB12-B97000. Events group related markets.

When to Use This Skill

Use this skill when the user wants to:

  • Browse or search prediction markets (politics, crypto, sports, economics, weather)
  • Place bets (limit orders, market orders) on event contracts
  • Check market prices, spreads, and order books
  • View ASCII candlestick charts
  • Stream live price updates via WebSocket
  • View or manage open orders
  • Check portfolio positions and P/L
  • Cancel or amend orders
  • Monitor trade fills and settlements
  • Use batch orders for market-making strategies

Common trigger phrases:

  • "What prediction markets are open on Kalshi?"
  • "Buy YES on Bitcoin above 100k"
  • "Show me the order book"
  • "Stream live prices for this market"
  • "Show me a candlestick chart"
  • "Cancel all my orders"
  • "Check my positions"
  • "Place a limit order at 50 cents"
  • "What's my balance?"

When NOT to use this skill:

  • User wants to trade stocks/ETFs/options (use Alpaca trading skill)
  • User wants to trade on Polymarket (use Polymarket trading skill)
  • User wants financial advice (provide tools, not recommendations)

Key Concepts

Tickers

Markets use structured tickers: KXBTC-26FEB12-B97000

  • KXBTC = series (Bitcoin)
  • 26FEB12 = date (Feb 12, 2026)
  • B97000 = strike ($97,000)

Events vs Markets

An event groups related markets. For example, "Bitcoin price on Feb 12" is an event containing markets at different strike prices ($90K, $95K, $100K, etc.).

Contracts

Kalshi trades event contracts priced 1-99 cents, settling to $1 or $0. All values are in cents.

Subaccounts

Up to 32 subaccounts per user for multi-strategy isolation.

Order Groups

Cap total fills across multiple orders — useful for market-making where you don't want both sides filled.

Global Flags

Every command accepts these flags:

FlagShortDefaultDescription
--jsonfalseOutput as JSON for scripts
--plainfalsePlain text for piping
--yes-yfalseSkip all confirmation prompts
--prodfalseUse production API (real money)
--verbose-vfalseDebug output
--config~/.kalshi/config.yamlConfig file path

Core Commands

Authentication

kalshi-cli auth login                        # interactive login
kalshi-cli auth login --api-key-id ID --private-key-file /path/to/key.pem  # non-interactive
kalshi-cli auth logout                       # remove stored credentials
kalshi-cli auth status                       # check auth status + environment
kalshi-cli auth keys list                    # list API keys
kalshi-cli auth keys create --name "my-bot"  # create new API key
kalshi-cli auth keys delete KEY_ID           # delete API key

Market Discovery

List markets:

kalshi-cli markets list --status open --limit 20
kalshi-cli markets list --series KXBTC --json

Flags: --status (open/closed/settled), --series (filter by series ticker), --limit (default 50).

Get market details:

kalshi-cli markets get KXBTC-26FEB12-B97000

View order book:

kalshi-cli markets orderbook KXBTC-26FEB12-B97000
kalshi-cli markets orderbook KXBTC-26FEB12-B97000 --json

View recent trades:

kalshi-cli markets trades KXBTC-26FEB12-B97000 --limit 20

View candlestick chart:

kalshi-cli markets candlesticks KXBTC-26FEB12-B97000 --series KXBTC
kalshi-cli markets candlesticks KXBTC-26FEB12-B97000 --series KXBTC --period 1d
# Periods: 1m, 1h, 1d

Browse series (categories of markets):

kalshi-cli markets series list --category Economics
kalshi-cli markets series list --category Crypto
kalshi-cli markets series list --category Politics
kalshi-cli markets series get KXBTC

Events

List events:

kalshi-cli events list --limit 20
kalshi-cli events list --status active

Flags: --status (active/closed/settled), --limit, --cursor.

Get event details:

kalshi-cli events get KXBTC-26FEB12

Event candlestick chart:

kalshi-cli events candlesticks KXINXU-26FEB11H1600 --period 1h \
  --start 2026-02-10T00:00:00Z --end 2026-02-11T23:00:00Z

Multivariate events:

kalshi-cli events multivariate list --limit 10
kalshi-cli events multivariate get TICKER

Trading

Place a limit order:

kalshi-cli orders create --market KXBTC-26FEB12-B97000 --side yes --qty 10 --price 50

Place a market order:

kalshi-cli orders create --market KXBTC-26FEB12-B97000 --side yes --qty 10 --type market

Sell contracts:

kalshi-cli orders create --market KXBTC-26FEB12-B97000 --side no --qty 5 --price 30 --action sell

Skip confirmation (for bots):

kalshi-cli orders create --market KXBTC-26FEB12-B97000 --side yes --qty 10 --price 50 --yes --json

Production trading (real money):

kalshi-cli --prod orders create --market KXBTC-26FEB12-B97000 --side yes --qty 10 --price 50

Order flags:

FlagRequiredDefaultDescription
--marketYesMarket ticker
--sideYesyes or no
--qtyYesNumber of contracts
--priceYes (limit)Price in cents (1-99)
--actionNobuybuy or sell
--typeNolimitlimit or market

Amend an order:

kalshi-cli orders amend ORDER_ID --price 55
kalshi-cli orders amend ORDER_ID --qty 20
kalshi-cli orders amend ORDER_ID --price 55 --qty 20

Cancel orders:

kalshi-cli orders cancel ORDER_ID
kalshi-cli orders cancel-all
kalshi-cli orders cancel-all --market KXBTC-26FEB12-B97000

List and inspect orders:

kalshi-cli orders list --status resting
kalshi-cli orders list --market KXBTC-26FEB12-B97000 --json
kalshi-cli orders get ORDER_ID
kalshi-cli orders queue ORDER_ID  # check queue position

Batch create orders from JSON file:

kalshi-cli orders batch-create --file orders.json

The JSON file format:

[
  { "ticker": "MARKET1", "side": "yes", "action": "buy", "type": "limit", "count": 10, "yes_price": 50 },
  { "ticker": "MARKET2", "side": "no", "action": "buy", "type": "limit", "count": 5, "no_price": 30 }
]

Portfolio

Check balance:

kalshi-cli portfolio balance
kalshi-cli portfolio balance --json

All values are in cents. Example JSON:

{ "available_balance": 10000, "portfolio_value": 5000, "total_balance": 15000 }

View positions:

kalshi-cli portfolio positions
kalshi-cli portfolio positions --market KXBTC-26FEB12-B97000

View trade fills:

kalshi-cli portfolio fills --limit 50

View settlements (resolved market payouts):

kalshi-cli portfolio settlements --limit 20

Subaccount management:

kalshi-cli portfolio subaccounts list
kalshi-cli portfolio subaccounts create
kalshi-cli portfolio subaccounts transfer --from 1 --to 2 --amount 50000  # $500 in cents

Order Groups

Order groups cap total fills across multiple orders — useful for market-making. Alias: og.

kalshi-cli order-groups create --limit 100          # max 100 contracts across group
kalshi-cli order-groups list
kalshi-cli og list --status active                  # alias
kalshi-cli order-groups get GROUP_ID
kalshi-cli order-groups update-limit GROUP_ID --limit 200
kalshi-cli order-groups reset GROUP_ID              # reset filled count
kalshi-cli order-groups trigger GROUP_ID             # execute orders
kalshi-cli order-groups delete GROUP_ID              # cancels all orders in group

RFQ (Request for Quotes / Block Trading)

kalshi-cli rfq create --market KXBTC-26FEB12-B97000 --qty 1000
kalshi-cli rfq list --status open
kalshi-cli rfq get RFQ_ID
kalshi-cli rfq delete RFQ_ID

Quotes (Respond to RFQs)

kalshi-cli quotes list --rfq-id RFQ_ID
kalshi-cli quotes create --rfq RFQ_ID --price 65
kalshi-cli quotes accept QUOTE_ID
kalshi-cli quotes confirm QUOTE_ID

Real-Time Streaming (WebSocket)

All watch commands require auth. Press Ctrl+C to stop. Auto-reconnects with exponential backoff.

kalshi-cli watch ticker KXBTC-26FEB12-B97000       # live price updates
kalshi-cli watch orderbook KXBTC-26FEB12-B97000     # orderbook deltas
kalshi-cli watch trades                              # all public trades
kalshi-cli watch trades --market KXBTC-26FEB12-B97000  # trades for one market
kalshi-cli watch orders                              # your order status changes
kalshi-cli watch fills                               # your fill notifications
kalshi-cli watch positions                           # your position changes

# JSON output for programmatic consumption
kalshi-cli watch ticker KXBTC-26FEB12-B97000 --json

Exchange Info

kalshi-cli exchange status         # exchange status, trading active?
kalshi-cli exchange schedule       # trading schedule
kalshi-cli exchange announcements  # latest announcements

Configuration

kalshi-cli config show                      # all settings
kalshi-cli config get output.format         # get a setting
kalshi-cli config set output.format json    # change default output
kalshi-cli config set defaults.limit 100    # change default list limit

Config file: ~/.kalshi/config.yaml

Utility Commands

kalshi-cli version                 # print version
kalshi-cli completion bash         # shell autocompletion
kalshi-cli completion zsh

Environment Variables

VariableDescription
KALSHI_API_KEY_IDAPI Key ID
KALSHI_PRIVATE_KEYPrivate key PEM content
KALSHI_PRIVATE_KEY_FILEPath to private key PEM file
KALSHI_API_PRODUCTIONtrue for production
KALSHI_API_TIMEOUTHTTP timeout (e.g., 60s)
KALSHI_OUTPUT_FORMATDefault output format

Output Formats

All commands support --json, --plain, and default table output.

# Human-readable table (default)
kalshi-cli markets list --limit 5

# Machine-readable JSON
kalshi-cli --json markets list --limit 5

# Plain text for piping
kalshi-cli --plain portfolio balance

Exit codes: 0=success, 1=general error, 2=auth error, 3=validation error, 4=API error, 5=network error.

Common Workflows

Browse markets and research

# 1. Browse by category
kalshi-cli markets series list --category Crypto

# 2. List open markets in a series
kalshi-cli markets list --series KXBTC --status open

# 3. Get market details
kalshi-cli markets get KXBTC-26FEB12-B97000

# 4. Check the order book
kalshi-cli markets orderbook KXBTC-26FEB12-B97000

# 5. View candlestick chart
kalshi-cli markets candlesticks KXBTC-26FEB12-B97000 --series KXBTC --period 1h

# 6. View recent trades
kalshi-cli markets trades KXBTC-26FEB12-B97000 --limit 10

Place a limit order and monitor

# 1. Check balance
kalshi-cli portfolio balance

# 2. Place limit order (demo mode)
kalshi-cli orders create --market KXBTC-26FEB12-B97000 --side yes --qty 10 --price 50

# 3. Check order status
kalshi-cli orders list --status resting

# 4. Check queue position
kalshi-cli orders queue ORDER_ID

# 5. Amend if needed
kalshi-cli orders amend ORDER_ID --price 52

# 6. Or cancel
kalshi-cli orders cancel ORDER_ID

Market making with order groups

# 1. Create an order group (cap total fills)
kalshi-cli order-groups create --limit 50

# 2. Place orders on both sides
kalshi-cli orders create --market TICKER --side yes --action buy --qty 10 --price 45 --yes
kalshi-cli orders create --market TICKER --side yes --action sell --qty 10 --price 55 --yes

# 3. Monitor fills
kalshi-cli watch fills

Bot automation (market-making script)

#!/bin/bash
MARKET="KXBTC-26FEB12-B97000"
BOOK=$(kalshi-cli markets orderbook $MARKET --json)
BEST_BID=$(echo $BOOK | jq '.yes_bids[0].price // 0')
BEST_ASK=$(echo $BOOK | jq '.yes_asks[0].price // 100')

kalshi-cli orders create --market $MARKET --side yes --action buy  --qty 10 --price $((BEST_BID + 1)) --yes --json
kalshi-cli orders create --market $MARKET --side yes --action sell --qty 10 --price $((BEST_ASK - 1)) --yes --json

Stream live prices

# Terminal display
kalshi-cli watch ticker KXBTC-26FEB12-B97000

# Pipe JSON to a script
kalshi-cli watch ticker KXBTC-26FEB12-B97000 --json | while read line; do
  PRICE=$(echo $line | jq '.yes_price')
  echo "Current price: $PRICE"
done

Portfolio review

kalshi-cli portfolio balance --json | jq '{available: .available_balance, total: .total_balance}'
kalshi-cli portfolio positions --json | jq '.[] | {ticker, position, pnl}'
kalshi-cli portfolio fills --limit 10
kalshi-cli portfolio settlements --limit 10

Go live (production)

# Verify you're on demo first
kalshi-cli auth status

# Switch to production for a single command
kalshi-cli --prod orders create --market KXBTC-26FEB12-B97000 --side yes --qty 10 --price 50

# Or set globally
export KALSHI_API_PRODUCTION=true

Best Practices

Safety

  1. Demo first — the CLI defaults to demo mode. Test everything before going live.
  2. Confirm before --prod — always verify with kalshi-cli auth status before trading real money.
  3. Use --yes carefully — it skips all confirmations. Only use in tested bot scripts.
  4. Set position limits — use order groups to cap maximum exposure.
  5. Monitor positions — use kalshi-cli watch positions for real-time tracking.

Order Management

  1. Prefer limit orders — better price control, lower fees.
  2. Use order groups for market-making — prevents both sides from filling simultaneously.
  3. Amend instead of cancel/replace — native orders amend is atomic and faster.
  4. Batch when possible — use orders batch-create with a JSON file for multiple orders.
  5. Check queue position — use orders queue to see where your resting order sits.

Bot Development

  1. Use --json --yes — machine-parseable output, no interactive prompts.
  2. Check exit codes — 0=success, 2=auth error, 4=API error, 5=network error.
  3. Handle rate limits — Basic: 10 writes/sec, 20 reads/sec. Apply for higher tiers if needed.
  4. Use WebSocket for live datawatch ticker is more efficient than polling.
  5. Store credentials securely — use env vars or keyring, never hardcode.

Command Reference

TaskCommand
Auth
Loginkalshi-cli auth login
Check statuskalshi-cli auth status
List API keyskalshi-cli auth keys list
Markets
List marketskalshi-cli markets list --status open --limit 20
Get marketkalshi-cli markets get TICKER
Order bookkalshi-cli markets orderbook TICKER
Recent tradeskalshi-cli markets trades TICKER --limit 20
Candlestick chartkalshi-cli markets candlesticks TICKER --series SERIES --period 1h
Browse serieskalshi-cli markets series list --category Crypto
Events
List eventskalshi-cli events list --status active --limit 20
Get eventkalshi-cli events get EVENT_TICKER
Event chartkalshi-cli events candlesticks EVENT_TICKER --period 1h
Trading
Limit order (buy YES)kalshi-cli orders create --market TICKER --side yes --qty 10 --price 50
Market orderkalshi-cli orders create --market TICKER --side yes --qty 10 --type market
Sell contractskalshi-cli orders create --market TICKER --side no --qty 5 --price 30 --action sell
Amend orderkalshi-cli orders amend ORDER_ID --price 55
Cancel orderkalshi-cli orders cancel ORDER_ID
Cancel allkalshi-cli orders cancel-all
Batch createkalshi-cli orders batch-create --file orders.json
List resting orderskalshi-cli orders list --status resting
Queue positionkalshi-cli orders queue ORDER_ID
Portfolio
Balancekalshi-cli portfolio balance
Positionskalshi-cli portfolio positions
Fillskalshi-cli portfolio fills --limit 50
Settlementskalshi-cli portfolio settlements
Subaccounts
Listkalshi-cli portfolio subaccounts list
Createkalshi-cli portfolio subaccounts create
Transferkalshi-cli portfolio subaccounts transfer --from 1 --to 2 --amount 50000
Order Groups
Create groupkalshi-cli order-groups create --limit 100
List groupskalshi-cli og list
Update limitkalshi-cli order-groups update-limit GROUP_ID --limit 200
Delete groupkalshi-cli order-groups delete GROUP_ID
Block Trading
Create RFQkalshi-cli rfq create --market TICKER --qty 1000
List RFQskalshi-cli rfq list
Create quotekalshi-cli quotes create --rfq RFQ_ID --price 65
Accept quotekalshi-cli quotes accept QUOTE_ID
Streaming
Live priceskalshi-cli watch ticker TICKER
Orderbook deltaskalshi-cli watch orderbook TICKER
Public tradeskalshi-cli watch trades
Your orderskalshi-cli watch orders
Your fillskalshi-cli watch fills
Your positionskalshi-cli watch positions
Exchange
Exchange statuskalshi-cli exchange status
Schedulekalshi-cli exchange schedule
Announcementskalshi-cli exchange announcements
Config
Show configkalshi-cli config show
Set valuekalshi-cli config set output.format json

Important Notes

  • All values in cents — prices are 1-99, balances are in cents ($100 = 10000 cents).
  • Demo by default — use --prod flag for real trading.
  • Tickers are structuredKXBTC-26FEB12-B97000 = series + date + strike.
  • Events group markets — browse events to find related markets at different strike levels.
  • Order groups cap total fills — essential for market-making strategies.
  • Rate limits — Basic: 10 writes/sec, 20 reads/sec. Apply for higher tiers via Kalshi.
  • RSA-PSS auth — private key never leaves your machine. No passwords, no sessions to manage.
  • USD settlement — no crypto, no wallets, no gas fees.
  • CFTC-regulated — fully legal in the United States.

Fees

TypeFormulaMax at 50/50
Takerroundup(0.07 * C * P * (1-P))1.75c/contract
Makerroundup(0.0175 * C * P * (1-P))~0.44c/contract
S&P/Nasdaq marketsHalf the normal rate~0.88c taker

Lower fees for orders near the extremes (close to 0 or 100). No settlement or withdrawal fees (ACH).

Troubleshooting

Not authenticated

kalshi-cli auth status  # check status
kalshi-cli auth login   # re-authenticate

Wrong environment (demo vs prod)

kalshi-cli auth status  # shows current environment
# Use --prod for production, omit for demo

Order rejected

  • Check balance: kalshi-cli portfolio balance
  • Verify market is open: kalshi-cli markets get TICKER
  • Check exchange status: kalshi-cli exchange status
  • Price must be 1-99 cents

Rate limited

  • Basic tier: 10 writes/sec, 20 reads/sec
  • Apply for Advanced/Premier tier at Kalshi for higher limits
  • Use batch operations where possible

Additional Resources

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

A Python CLI skill for Cutout.Pro visual APIs — background removal, face cutout, and photo enhancement. Supports file upload & image URL input.

Call Cutout.Pro visual processing APIs to perform background removal, face cutout, and photo enhancement. Supports both file upload and image URL input, retu...

Registry SourceRecently Updated
Coding

client-onboarding-agent

Client onboarding and business diagnostic framework for AI agent deployments. Covers 4-round diagnostic process, 6 constraint categories, deployment SOP with...

Registry SourceRecently Updated
Coding

Ai Tools

AI Tools Box - Search and invoke 100+ AI tools. Categories: Writing, Image, Video, Coding, Office, Search, Chat, Audio, Design, Agent, Translation, Dev Platf...

Registry SourceRecently Updated