@ken_so:刚上线了我们开源 Kalshi 交易机器人的 /backtest 功能。AI 模型真的能发现优势吗?现在你可以验证……
摘要
OctagonAI 发布了一款开源 CLI,可在 Kalshi 预测市场上回测 AI 驱动的优势识别,并通过半凯利仓位管理和 5 道风控引擎执行有规模的交易。
查看缓存全文
缓存时间: 2026/04/21 12:28
OctagonAI/kalshi-trading-bot-cli
源码:https://github.com/OctagonAI/kalshi-trading-bot-cli
Kalshi 交易机器人 CLI
AI 驱动的 Kalshi 命令行交易工具,自动发现优势并执行下单。对每一个市场都做深度基本面研究——独立概率估算、核心驱动因素排序、事件日历——然后计算模型价格与实时盘口之间的价差作为“优势”。信号按半凯利(half-Kelly)仓位管理,并通过 5 道风控闸门后才投入真金白银。
集成 Octagon Research API(https://app.octagonai.co),用 AI 生成的概率估算为优势检测引擎提供火力。
Kalshi 交易机器人 CLI
前置条件
- Bun(https://bun.com/)≥ 1.1(必需——脚本依赖
bun:sqlite并直接运行.tsx,Node.js 无法使用)curl -fsSL https://bun.com/install | bash - Kalshi 账户并开通 API(需 API key + RSA 私钥)
- 任意 LLM 供应商密钥(OpenAI / Anthropic / Google / xAI / OpenRouter / Ollama)。首次运行时会通过设置向导收集。
- 可选:Octagon(https://app.octagonai.co)密钥用于 AI 优势分析,Tavily 密钥用于网络研究。
快速开始
bunx kalshi-trading-bot-cli@latest
无需克隆、无需安装,首次启动自动进入设置向导。
想全局安装?
bun add -g kalshi-trading-bot-cli
然后直接 kalshi 即可。
或者克隆运行:
git clone https://github.com/OctagonAI/kalshi-trading-bot-cli.git
cd kalshi-trading-bot-cli
bun install
bun start
文件位置
- 配置、缓存、SQLite 数据库:
~/.kalshi-bot/ - API 密钥(
.env):~/.kalshi-bot/.env——由设置向导生成。当前目录下的.env优先级更高(开发时方便)。 - 首次无密钥启动会自动弹出设置向导。
更新
bunx 命令里加 @latest 永远拉最新版:
bunx kalshi-trading-bot-cli@latest
若之前没加 @latest,Bun 可能用缓存,可强制刷新:
bunx kalshi-trading-bot-cli@latest # 本次强制最新
bun pm cache rm # 或清空 Bun 安装缓存
全局安装后:
bun update -g kalshi-trading-bot-cli # 就地更新
bun add -g kalshi-trading-bot-cli@latest # 或重装到最新
查看版本:kalshi --version(或 bun pm ls -g | grep kalshi)
会话示例
$ bunx kalshi-trading-bot-cli@latest
Welcome to Kalshi Trading Bot CLI
Type help for commands, or just ask a question.
> search crypto
Ticker Title Last Volume
KXBTC-26APR-B95000 Bitcoin above $95k by Apr 30 $0.58 12,841
KXBTC-26APR-B100000 Bitcoin above $100k by Apr 30 $0.31 8,203
KXETH-26APR-B2000 Ethereum above $2k by Apr 30 $0.72 5,419
3 markets found
> analyze KXBTC-26APR-B95000
Octagon Research Report — KXBTC-26APR-B95000
───────────────────────────────────────────────
Model Probability 72%
Market Price 58%
Edge +14.0% (very_high confidence)
Top Drivers
1. Bitcoin ETF inflows accelerating impact: high
2. Halving cycle momentum impact: high
3. Macro risk-on sentiment impact: moderate
Kelly Sizing
Recommended: 3 contracts YES at $0.58
Risk gates: ✓ Kelly ✓ Liquidity ✓ Correlation ✓ Concentration ✓ Drawdown
> buy KXBTC-26APR-B95000 3 58
✓ Order placed: BUY 3 YES @ $0.58
Order ID: abc-123-def
> portfolio
Ticker Side Qty Entry Now Edge P&L
KXBTC-26APR-B95000 YES 3 $0.58 $0.61 +11.0% +$0.09
Cash: $487.26 · Exposure: $1.74 · Positions: 1
命令
| 命令 | 说明 |
|---|---|
| `search [主题 | 代码 |
search edge [--min-edge N] | 按模型优势扫描全市场 |
analyze <代码> | 深度分析:优势、驱动、Kelly 仓位 |
watch <代码> | 实时价格与盘口推送 |
watch --theme <主题> | 持续主题扫描 |
| `buy <代码> <数量> [价格] [yes | no]` |
| `sell <代码> <数量> [价格] [yes | no]` |
cancel <订单ID> | 撤单 |
backtest | 模型准确率报告 + 实时优势扫描 |
portfolio | 持仓、盈亏、风险快照 |
setup | 在 TUI 内重新运行设置向导 |
init | 从 CLI 启动设置向导(kalshi init) |
clear-cache | 删除本地缓存并重建(kalshi clear-cache) |
help [命令] | 查看命令详情 |
参数
| 参数 | 说明 |
|---|---|
--json | 输出 JSON,方便脚本/代理调用 |
--refresh | 强制刷新 Octagon 报告(analyze) |
--performance | 显示胜率、夏普、Brier 分数(portfolio) |
--dry-run | 仅扫描不持久化优势(watch) |
--verbose | 详细输出 |
--min-edge <N> | 最小优势阈值,单位 pp(backtest 默认 0.5) |
--interval <分钟> | 扫描间隔(watch) |
--live | 强制 15 分钟间隔(watch) |
--days <N> | 回看天数(backtest,默认 15) |
--max-age <N> | 忽略早于 N 天的预测(backtest,默认 = --days) |
--resolved | 仅已结算市场(backtest) |
--unresolved | 仅未结算市场(backtest) |
--category <类别> | 按类别过滤(backtest、search edge) |
--limit <N> | 最多返回条数(search edge,默认 20) |
--min-volume <N> | 最小合约成交量(优先用 Octagon 快照,缺失则回退到 Kalshi 终身量,backtest 默认 1) |
--min-price <N> | 最小合约价格,0-100 刻度(backtest,默认 5) |
--max-price <N> | 最大合约价格,0-100 刻度(backtest,默认 95) |
--export <文件> | 导出逐条 CSV(backtest) |
回测
模型到底有没有真优势?回看 N 天,把模型当时的预测与现在市场结果对比。
- 已结算——按 Kalshi 最终结算评分(YES=100%,NO=0%)
- 未结算——按当前 Kalshi 交易价格盯市
方法论(与 Supabase 参考一致):
- 每条合约的
mp/kp取自对应 Octagon 快照的outcome_probabilities,不回落到事件级。 - 可交易性闸门优先用快照里的单合约
volume/volume_24h;若无则回退到缓存里 Kalshi 终身成交量。 --min-edge默认 0.5pp,让 0-5% 优势桶可见;每条信号打edge_bucket标签(0-5%、5-10%…90%+)。flat_bet_roi按资本加权:sum(pnl) / sum(capital),其中 YES 优势capital = kp/100,NO 优势capital = (100-kp)/100。
kalshi backtest # 默认 15 天回看
kalshi backtest --days 30 # 30 天回看
kalshi backtest --max-age 14 # 只评 <=14 天的预测
kalshi backtest --resolved # 仅已结算
kalshi backtest --unresolved --min-edge 10 # 未结算且优势≥10pp
kalshi backtest --category crypto # 仅加密类别
kalshi backtest --min-volume 10 --min-price 5 --max-price 95 # 可交易过滤
kalshi backtest --export results.csv # 导出明细
Octagon Backtest — 15-day lookback (04/02 – 04/17)
══════════════════════════════════════════════════════════
VERDICT: Model has edge (Skill +12.5% [CI: +4.1%, +20.8%]; ROI +7.8%)
Events 83
Markets 247 (142 resolved, 105 unresolved)
Brier (Octagon) 0.168
Brier (Market) 0.192
Skill Score +12.5% [95% CI: +4.1% to +20.8%]
Hit rate 61.4% [95% CI: 54.2% to 68.1%]
Flat-bet P&L +$14.38 (ROI: +7.8%)
RESOLVED (142 markets)
Ticker Model Mkt Then Outcome Edge P&L
KXBTC-26APR-B95000 72% 58% YES +14pp +$0.42
...
UNRESOLVED (105 markets)
Ticker Model Mkt Then Now Edge M2M
KXBTC-26MAY-B110000 71% 58% 68% +13pp +$0.10
...
演示模式
在 .env 里设置 KALSHI_USE_DEMO=true 即可接入 Kalshi 模拟环境,所有下单均为虚拟,不投入真金。
代理调用
所有命令都支持 --json 结构化输出,方便脚本或 AI 代理编排。
kalshi search crypto --json
kalshi analyze KXBTC-26APR-B95000 --json
kalshi buy KXBTC-26APR-B95000 3 58 --json
kalshi portfolio --json
JSON 响应格式
统一信封:
{
"ok": true,
"command": "analyze",
"data": {
"ticker": "KXBTC-26APR-B95000",
"modelProb": 0.72,
"marketProb": 0.58,
"edge": 0.14,
"confidence": "very_high",
"drivers": [
{ "claim": "Bitcoin ETF inflows accelerating", "impact": "high" }
]
},
"meta": {
"octagon_credits_used": 3,
"octagon_cache_hits": 0
},
"timestamp": "2026-03-30T10:00:00.000Z"
}
失败返回 "ok": false 并带 error 对象。退出码 0 成功,1 失败。
编排示例
# 1. 找市场
MARKETS=$(kalshi search crypto --json | jq '.data')
# 2. 分析首选
ANALYSIS=$(kalshi analyze KXBTC-26APR-B95000 --json)
EDGE=$(echo "$ANALYSIS" | jq '.data.edge')
# 3. 优势够大就下单
if (( $(echo "$EDGE > 0.05" | bc -l) )); then
kalshi buy KXBTC-26APR-B95000 3 58 --json
fi
# 4. 查持仓
kalshi portfolio --json
watch --theme 输出 NDJSON(每行一个 JSON),适合流式管道。
配置
环境变量
设置向导(首次自动或 kalshi init)会交互式完成。手动编辑:
cp env.example ~/.kalshi-bot/.env
必填:
| 变量 | 说明 |
|---|---|
KALSHI_API_KEY | Kalshi API key ID |
KALSHI_PRIVATE_KEY_FILE | Kalshi RSA 私钥 PEM 文件路径 |
OPENAI_API_KEY | OpenAI API 密钥(默认模型 GPT-5.4) |
OCTAGON_API_KEY | Octagon API 密钥,用于深度研究,前往 app.octagonai.co 获取 |
可选:
| 变量 | 说明 |
|---|---|
KALSHI_USE_DEMO | true 使用模拟环境(虚拟交易) |
KALSHI_PRIVATE_KEY | 内联 PEM 私钥,与文件路径二选一 |
ANTHROPIC_API_KEY | Anthropic(Claude) |
GOOGLE_API_KEY | Google(Gemini) |
XAI_API_KEY | xAI(Grok) |
OPENROUTER_API_KEY | OpenRouter(多模型) |
TAVILY_API_KEY | Tavily 网络事件研究 |
注意: 默认模型 GPT-5.4。若换供应商,请用
config命令切换,否则缺OPENAI_API_KEY会报错。
Octagon 额度
每份报告 3 额度。报告按到期临近程度分级缓存——快关市的市场缓存时间更短。用 --refresh 强制刷新。
可用 config octagon.daily_credit_ceiling <N> 设置每日上限。
运行时设置
kalshi config # 列出所有设置
kalshi config risk.kelly_multiplier # 查看某值
kalshi config risk.kelly_multiplier 0.3 # 设置值
| 设置 | 默认 | 说明 |
|---|---|---|
scan.interval | 60 | 扫描间隔(分钟) |
scan.theme | top50 | 默认市场主题 |
risk.kelly_multiplier | 0.5 | Kelly 比例(0.5 = 半凯利) |
risk.max_drawdown | 0.20 | 最大回撤熔断 |
risk.max_positions | 10 | 最大同时持仓数 |
risk.max_per_category | 3 | 每事件类别最大持仓 |
risk.daily_loss_limit | 200 | 日亏损上限(美元) |
octagon.daily_credit_ceiling | 100 | 每日 Octagon 额度上限 |
alerts.min_edge | 0.05 | 触发警报的最小优势 |
架构
Kalshi 交易流程
CLI 与两大外部服务通信:Kalshi 交易所 API(行情、下单、持仓)与 Octagon 研究 API(AI 概率、驱动因素)。结果缓存在本地 SQLite,减少调用与额度消耗。
LLM 供应商
默认 GPT-5.4,可用 config 命令切换。
| 前缀 | 供应商 |
|---|---|
gpt- | OpenAI |
claude- | Anthropic |
gemini- | |
grok- | xAI |
openrouter/ | OpenRouter |
ollama: | Ollama(本地) |
开发
bun dev # 热重载开发模式
bun run typecheck # 类型检查
bun test # 跑测试
遥测
本应用收集匿名使用遥测以改进产品。绝不收集任何个人数据、API 密钥、交易详情或自然语言输入。 仅追踪命令名、工具使用、耗时与成败指标。
遥测默认开启。关闭方式:
在 .env 添加
TELEMETRY_ENABLED=false
或运行前设置环境变量:
TELEMETRY_ENABLED=false bunx kalshi-trading-bot-cli@latest
文档
详见 用户指南 获取详细用法、示例与技巧。
Star History
许可证
MIT 许可证 — 详见 LICENSE。
相似文章
@CypherSacha: 疯狂!有人刚发布了一个开源框架,用AI代理模拟真实交易大厅。你启动一个…
这是一个开源框架,通过多个AI代理模拟真实交易大厅,执行基本面、情绪面、技术面和风险分析,兼容GPT-5、Claude 4、Gemini 3等主流大模型。
@quantscience_: AI Trader 100% 完全自主交易代理。免费使用:
AI Trader 是一款完全自主的交易代理,现已免费提供。
@quantscience_: 有人做了一个量化交易系统,使用了AI、实时数据处理和风险管理。然后将其开源…
一个开源的Python量化交易系统,利用AI、实时数据处理和风险管理,已免费发布。
@RohOnChain: https://x.com/RohOnChain/status/2069056530960490835
作者解释了如何使用AI循环工程构建一个自我改进的量化交易系统,其中AI运行循环以自主提示、验证和行动,与手动提示形成对比。
@PrajwalTomar_: 我真心没想到效果这么好。这周我在机构雇了一个AI员工。它运行在一个开源…
一位用户分享了对开源AI代理在客户研究中表现出色的惊讶,该代理使用Hyperagent,可以切换不同模型,如Kimi K2.6、GLM 5.2、DeepSeek V4和Qwen 3.7。