发布于 2026年8月3日
直接回答
构建 Kalshi 交易机器人时,用 Kalshi 官方接口处理市场数据和执行,用 TweetStream 接收指定 X 与支持的 Truth Social 事件。把每份合约映射到决定性来源,将帖子和 OCR 转成类型化模拟意图,并用确定性代码控制时效、流动性、风险敞口、幂等和终止开关。
把催化事件连接到合约
Kalshi 交易机器人需要两路独立输入:Kalshi 官方接口提供市场状态和执行,快速事件 feed 提供可能改变合约概率的公开帖子。TweetStream 交付指定 X 和支持的 Truth Social 事件;你的策略负责判断证据是否相关且适合交易。
横向滑动查看完整对比 →
| 层 | 接口 | 职责 |
|---|---|---|
| 社交事件 | TweetStream WebSocket | 指定帖子、账号事件、OCR 和交易上下文 |
| 市场状态 | Kalshi 官方 API | 事件、合约、订单簿、仓位和交易所状态 |
| 策略 | 你的服务 | 来源映射、方向、置信度、时效和风控 |
| 执行 | Kalshi 官方 API | 已验证订单、确认、成交和对账 |
来源: Kalshi 开发者文档 · TweetStream WebSocket 快速开始
公开接口复查日期为 2026-08-03。TweetStream 不提供 Kalshi 市场数据,也不下达 Kalshi 订单。
按合约规则建立观察列表
建立观察列表前先读合约规则。政府发布可能依赖机构或官员;经济合约可能依赖定时报告;公司事件可能依赖企业账号或高管。来源映射越精确,机器人在时间压力下需要分类的噪音越少。
- 把 Kalshi 事件 ticker、市场 ticker、规则、来源、证据词和到期时间存储在一起
- 给予官方和第一方账号最高来源置信度
- 在政治合约相关时纳入支持的 Truth Social 帖子
- 合约关闭或交易逻辑过期后立即停用映射
把一条社交事件变成可检查意图
按平台和作者路由每条 TweetStream 内容事件,把后续 OCR 或其他富化附加到同一候选事件,并在生成模拟意图前读取当前 Kalshi 市场状态。维护的本地示例覆盖 Kalshi 与 Polymarket 映射、重复拒绝、过期检查、流动性和仓位限制,且不会下单。
- 产生任何副作用前持久化稳定事件身份
- 拒绝超过策略时效窗口的事件
- 读取当前市场状态,不要信任缓存概率
- 把图片 OCR 和检测到的交易上下文视为证据,而不是自动订单
让 AI 编程 agent 加速开发
使用 Claude Code、Codex、Cursor 或其他 AI 编程 agent 搭建适配器和测试,而不是让它拿实盘资金自由发挥。向它提供公开 TweetStream 信封合约、Kalshi 客户端边界、确定性夹具和仅模拟输出 schema。不要让它的工具访问密钥或不可逆操作。
测量真正决定交易结果的链路
分别记录来源发布、TweetStream 本地接收、决策完成、Kalshi 订单提交、交易所确认和成交时间。TweetStream 公布指定 X 帖子的 167ms 服务端检测中位数,但信号到成交还包含网络、策略、风控和交易场所时间。
先证明策略,再下第一笔订单
生产机器人遇到歧义时应拒绝执行。先回放、影子运行和模拟交易,再从严格的风险敞口和单日亏损上限开始。任何模型分数都不能绕过市场开放、最低流动性、最大价差、过期拒绝、订单幂等或外部终止开关。
实施资产:预测市场来源路由器
示例内置的本地解码器验证每个 TweetStream 内容事件后,这个不依赖特定交易场所的路由器会映射指定的 X 和支持的 Truth Social 来源。运行完整的本地夹具示例,查看重复与过期事件拒绝、市场状态检查、仓位限制和仅模拟执行意图。 请根据你的市场映射、来源列表和风控规则进行调整。
在 GitHub 查看可运行示例type SocialPlatform = "twitter" | "truth_social";
type TweetStreamContentEvent = {
d: {
author: { handle?: string; platform: SocialPlatform };
createdAt: number;
kind: "post" | "quote" | "reply" | "retweet";
text: string;
tweetId: string;
};
id?: string;
op: "content";
t: "tweet";
ts: number;
v: 1;
};
const sourceRules = [
{
handles: ["whitehouse", "potus"],
platform: "twitter",
strategy: "policy-markets",
terms: ["executive order", "tariff"],
venue: "polymarket",
},
{
handles: ["realdonaldtrump"],
platform: "truth_social",
strategy: "trade-policy",
terms: ["trade policy", "announcement"],
venue: "kalshi",
},
] as const;
export function routePredictionMarketSourceEvent(event: TweetStreamContentEvent) {
const handle = event.d.author.handle?.toLowerCase().replace(/^@/, "");
const platform = event.d.author.platform;
const text = event.d.text.toLowerCase();
const rule = sourceRules.find(
(candidate) =>
candidate.platform === platform &&
candidate.handles.some((candidateHandle) => candidateHandle === handle),
);
const matchedTerm = rule?.terms.find((term) => text.includes(term));
if (!rule || !matchedTerm) {
return { deliver: false } as const;
}
return {
deliver: true,
eventId: event.d.tweetId,
matchedTerm,
strategy: rule.strategy,
venue: rule.venue,
} as const;
}为什么用 TweetStream 实施
这套流程可以用原始 API、轮询和自建抓取拼出来,但如果你关心速度、删除/置顶提醒、资料/关注信号、代币/OCR 富化和稳定 WebSocket 投递,TweetStream 是更好的起点。开始 3 天试用,把第一组高信号账号接入你的提醒或交易流程。
开始 3 天试用