关于 kalshi-trading
kalshi-trading 是用于操作 Kalshi 预测市场的技能,涵盖市场查询、持仓管理和交易。它通过交易所 API 提供市场数据查询及认证后的订单操作。
主要功能
- 01搜索市场并查看详情
- 02查看订单簿与价格
- 03查询余额和持仓
- 04提交买入和卖出订单
适用场景
- 01研究开放的事件合约市场
- 02下单前检查市场流动性
- 03查看持仓与账户余额
- 04提交 Yes 或 No 交易
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ newyorkcompute/ kalshi --skill kalshi-trading安装后在 Claude Code 中输入/kalshi-trading确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
API_REFERENCE.mdAUTHENTICATION.mdscripts/kalshi-client.ts详细介绍
Kalshi 交易
在 Kalshi 交易,这是一个受 CFTC 监管的预测市场交易所。此技能可帮助你查询市场、分析概率、管理持仓并执行交易。
类型
interface Market {
ticker: string;
title: string;
status: string;
yes_bid?: number;
yes_ask?: number;
volume?: number;
close_time?: string;
}
interface Orderbook {
yes: [number, number][]; // [price_cents, quantity]
no: [number, number][];
}
interface Balance {
balance: number; // cents
payout: number; // pending settlement
}
interface Position {
ticker: string;
position: number; // positive = YES, negative = NO
market_exposure: number;
}
interface Order {
order_id: string;
ticker: string;
side: "yes" | "no";
action: "buy" | "sell";
count: number;
status: string;
}
快速入门
import * as crypto from "crypto";
const API_BASE = "https://api.elections.kalshi.com/trade-api/v2";
// See AUTHENTICATION.md for full setup
function getAuthHeaders(
apiKey: string,
privateKeyPem: string,
method: string,
path: string
): Record<string, string> {
const timestamp = Date.now().toString();
const message = `${timestamp}${method}${path}`;
const sign = crypto.createSign("RSA-SHA256");
sign.update(message);
const signature = sign.sign(privateKeyPem, "base64");
return {
"KALSHI-ACCESS-KEY": apiKey,
"KALSHI-ACCESS-SIGNATURE": signature,
"KALSHI-ACCESS-TIMESTAMP": timestamp,
"Content-Type": "application/json",
};
}
常见操作
搜索市场
async function searchMarkets(query: string, limit = 10): Promise<Market[]> {
const url = new URL(`${API_BASE}/markets`);
url.searchParams.set("status", "open");
url.searchParams.set("limit", String(limit));
const response = await fetch(url.toString());
const data = await response.json();
// Filter by query in title
return data.markets.filter((m: Market) =>
m.title.toLowerCase().includes(query.toLowerCase())
);
}
获取市场详情
async function getMarket(ticker: string): Promise<Market> {
const response = await fetch(`${API_BASE}/markets/${ticker}`);
const data = await response.json();
return data.market;
}
获取订单簿
async function getOrderbook(ticker: string): Promise<Orderbook> {
const response = await fetch(`${API_BASE}/markets/${ticker}/orderbook`);
const data = await response.json();
return data.orderbook;
}
查询余额(需认证)
async function getBalance(
apiKey: string,
privateKeyPem: string
): Promise<Balance> {
const path = "/portfolio/balance";
const headers = getAuthHeaders(apiKey, privateKeyPem, "GET", path);
const response = await fetch(`${API_BASE}${path}`, { headers });
return response.json();
}
获取持仓(需认证)
async function getPositions(
apiKey: string,
privateKeyPem: string
): Promise<Position[]> {
const path = "/portfolio/positions";
const headers = getAuthHeaders(apiKey, privateKeyPem, "GET", path);
const response = await fetch(`${API_BASE}${path}`, { headers });
const data = await response.json();
return data.market_positions;
}
下单(需认证)
async function placeOrder(
apiKey: string,
privateKeyPem: string,
ticker: string,
side: "yes" | "no",
action: "buy" | "sell",
count: number,
price: number // In cents (1-99)
): Promise<Order> {
const path = "/portfolio/orders";
const headers = getAuthHeaders(apiKey, privateKeyPem, "POST", path);
const body = {
ticker,
side,
action,
count,
type: "limit",
...(side === "yes" ? { yes_price: price } : { no_price: price }),
};
const response = await fetch(`${API_BASE}${path}`, {
method: "POST",
headers,
body: JSON.stringify(body),
});
const data = await response.json();
return data.order;
}
核心概念
- 市场:包含 Yes/No 结果的事件合约(例如,“X 会在 Y 日期前发生吗?”)
- 价格:以美分报价(1–99),代表概率百分比
- 持仓:你持有的 Yes 或 No 合约
- 结算:市场结算为 $1.00(Yes 获胜)或 $0.00(No 获胜)
其他资源
- AUTHENTICATION.md - API 密钥设置详解
- API_REFERENCE.md - 完整的端点文档
- scripts/kalshi-client.ts - 可直接使用的 TypeScript 客户端
提示
- 从市场调研开始:使用
searchMarkets()探索机会 - 检查流动性:下大额订单前查看订单簿深度
- 使用限价单:避免使用市价单,以控制成交价格
- 监控持仓:定期检查持仓和盈亏
评论
支持 Markdown