关于 outcometick
outcometick 为使用 Polymarket 和 Predict.fun 加密货币涨跌市场历史逐笔数据的策略提供 MCP 工具及 TypeScript/JavaScript SDK。其 MCP 服务可查看数据覆盖范围、验证策略、估算回测报价并获取报告,但不会提交回测。
主要功能
- 01查看市场数据覆盖范围和方案
- 02检查回测容量并估算积分费用
- 03使用队列验证器检查策略文件
- 04列出并校验下载的数据文件
- 05查询回测运行状态和报告
- 06获取已发布的聪明资金交易列表
适用场景
- 01开发策略前确认可用市场数据
- 02单独提交策略前先进行验证
- 03估算回测范围和积分费用
- 04下载并校验历史数据或交易列表
MCP 相关
通过 `ot mcp` 提供 stdio MCP 服务,并提供托管的 Streamable HTTP 端点。工具用于读取、报价、验证和下载数据,不会提交回测。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://outcometick.com/v1/mcpclaude mcp add --transport http outcometick-outcometick https://outcometick.com/v1/mcp{"mcpServers":{"outcometick-outcometick":{"type":"http","url":"https://outcometick.com/v1/mcp"}}}在 Cursor 中打开{"servers":{"outcometick-outcometick":{"type":"http","url":"https://outcometick.com/v1/mcp"}}}在 VS Code 中打开{"mcpServers":{"outcometick-outcometick":{"type":"http","url":"https://outcometick.com/v1/mcp"}}}{"mcpServers":{"outcometick-outcometick":{"serverUrl":"https://outcometick.com/v1/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://outcometick.com/v1/mcp需要授权https://outcometick.com/v1/mcp/public工具
详细介绍
outcometick
outcometick.com 的 TypeScript / JavaScript 策略 SDK 和 ot 命令行工具——提供 Polymarket 和 Predict.fun 加密货币涨跌市场的逐笔数据。
npm i -g outcometick
ot check . # validate, free, no data
ot run . --data ./polymarket-data-samples # replay locally
ot submit . --assets btc,eth --days 30 # send it to the queue
ot status <run_id> # where it got to
ot fetch <run_id> # download the report
**2.0 版重大变更:**回测仅覆盖最近归档的 35 天,且随着新日期归档,时间窗口会向前移动。若 --from 早于窗口起始日期,或 --days 超出窗口长度,系统会在上传任何内容前拒绝请求并返回 E_SCOPE,错误消息中会注明当前窗口。使用 --days <n> 指定最近 n 天;当前日期范围见 https://outcometick.com/v1/backtest/capacity?venue=polymarket。
编写策略
完全支持类型——ot 附带 .d.ts 声明,因此通过类型检查的策略也会被队列接受。
import { Strategy, Order, type Ctx, type Tick } from "outcometick";
export default class MeanReversion extends Strategy<{ entry_z: number; size: number }> {
private entered = false;
onMarketOpen() { this.entered = false; }
onTick(ctx: Ctx<{ entry_z: number; size: number }>, tick: Tick): Order | null {
const z = ctx.zscore(tick.value, { window: 180 });
if (this.entered || Math.abs(z) < ctx.p.entry_z) return null;
const side = z > 0 ? "DOWN" : "UP";
const limit = ctx.book().best(side);
if (limit === null) return null;
this.entered = true;
return new Order({ side, size: ctx.p.size, limit });
}
}
也可以使用纯 JavaScript——运行时为 ESM,无需构建步骤。
ot check 的意义
它运行队列使用的同一验证器——是同一个模块,而不是副本。本地验证通过,提交时就不会被拒绝。之所以能做到这一点,是因为只有一个实现;因此验证器和静态分析器随此包一同提供,而不是在客户端重新实现。
ot run 是什么,不是什么
它使用与队列相同的引擎、报告和归档格式,并针对归档的本地副本运行:
curl -L https://github.com/outcometick/polymarket-tick-data-samples/releases/latest/download/polymarket-data-samples.tar.gz | tar xz
它不是沙箱。在本地,你的策略以你的身份、使用你的权限在你的机器上运行——这没有问题,因为代码是你自己的。在我们的机器上,它会在容器中运行,容器没有网络、没有可写文件系统,并受到严格的 CPU 和运行时间限制。
测试
npm install && npm test
需要在 PATH 中找到 python3:两个静态分析器之一由 Python 编写,CLI 驱动它的方式与 API 相同。
下载数据
这是此包的另一部分:数据订阅的客户端,通过单独的导入提供,因为它与编写策略无关。
import { DataClient, NO_VALUE } from "outcometick/data";
const ot = new DataClient(); // key from OT_KEY
const meta = await ot.meta(); // what can this key see?
const { files } = await ot.files({
from: "2026-08-01", to: "2026-08-12", // or date: "2026-08-12"
asset: ["BTC", "ETH"], // the BASE symbol, not BTCUSD
dataset: "prices",
interval: ["5m", NO_VALUE], // "5m" alone EXCLUDES the
}); // period-less settlement streams
await ot.download(files[0], { saveTo: files[0].name }); // checksum verified
meta() 会报告此密钥实际可访问的数据维度。请注意,intervals 仅包含实际时长——none 哨兵值会单独列在 filterTokens 下,因此调用方从中构建枚举或将值解析为时长时,不会遇到令牌。
下载会进行校验和验证:/v1/dl 会重定向到存储服务,并在标头中附带 sha256;客户端会自行跟随该重定向,因此校验和不会丢失。
重建 Polymarket 订单簿
book 和 price_change 按采集频率存储,因此一次移除操作可能发生在两个已存储帧之间,导致残留过时价位。OrderBook 会应用文档说明的重建规则:快照会替换一个代币的价位梯;变更会设置绝对数量(0 表示移除);最新最优买价/卖价(来自 best_bid_ask 以及每次变更)越过的价位会被丢弃。输入按 recv_ms 合并的三个文件中的行。
import { OrderBook } from "outcometick/data";
const book = new OrderBook();
for (const row of rows) book.apply(row); // parsed objects or JSONL lines
book.ladder(tokenId); // { bids: [{ price, size }], asks: [...] }, best first
book.best(tokenId); // { bid, ask }
这会移除所有已被最优价格越过的价位,但无法还原被丢弃帧新增或调整过的内容:在下一次快照之前,某个价位(包括顶部价位)可能缺失或带有旧数量(best_bid_ask 仅包含价格)。best() 返回重建价位梯中的最佳价位,而非市场最新的最优买价/卖价——要获取后者,请读取 best_bid_ask 行。
聪明钱交易历史
单独订阅,使用独立密钥:提供 Polymarket 排名最高的交易者每日交易文件。
const smart = new DataClient({ key: process.env.OT_SMART_KEY });
const { days } = await smart.smartDays(); // newest first
const day = days.find((d) => d.lists.top100?.status === "published")?.day;
if (day) await smart.smartDownload(day, "top100", { saveTo: "top100.csv.zst" }); // verified
列表内容及各列含义见: https://outcometick.com/polymarket-smart-money-data
MCP 服务
ot mcp 是一个通过 stdio 提供的 Model Context Protocol 服务,供编码助手和 Agent 使用。它会读取数据、计算价格、验证并下载;但绝不会提交回测,因为这会消耗积分。需要 Node 24 或更高版本。
{
"mcpServers": {
"outcometick": {
"command": "npx",
"args": ["-y", "outcometick", "mcp"],
"env": {
"OT_KEY": "<data subscription key, optional>",
"OT_SMART_KEY": "<smart-money key, optional>",
"OT_BACKTEST_KEY": "<backtest key, optional>"
}
}
}
}
Claude Code:claude mcp add outcometick -e OT_KEY=<data key> -- npx -y outcometick mcp
这些工具也通过 Streamable HTTP 托管,无需安装:
https://outcometick.com/v1/mcp:发送Authorization: Bearer <key>(数据、smart-money 或回测密钥;添加第二或第三个密钥时,使用X-Backtest-Key/X-Smart-Key),也可以不带请求头连接并通过 OAuth 登录,然后在授权页面粘贴密钥(适用于 claude.ai 和 ChatGPT 连接器)。https://outcometick.com/v1/mcp/public:无需密钥,仅提供公共工具。
claude mcp add --transport http outcometick https://outcometick.com/v1/mcp --header "Authorization: Bearer <data key>"
在托管模式下,download_file 和 smart_download 会返回签名 URL 及其 sha256,而不是写入磁盘;check_strategy 接收文件内容,而不是目录。
| 工具 | 密钥 | 功能 |
|---|---|---|
coverage | 无 | 查看每个交易场所的存档内容:资产、数据集、日期范围 |
plans | 无 | 数据订阅套餐及其实时价格 |
backtest_capacity | 无 | 当前可回测的日期,以及队列繁忙程度 |
backtest_quote | 无 | 计算回测范围的积分价格,但不提交回测 |
check_strategy | 无 | 使用队列自带的验证器在本地验证策略目录 |
meta | OT_KEY | 数据密钥可访问的日期范围和筛选值 |
list_files | OT_KEY | 搜索数据密钥可下载的存档文件 |
download_file | OT_KEY | 下载一个文件并验证其 sha256 |
backtest_runs | OT_BACKTEST_KEY | 回测密钥下的近期运行记录及积分余额 |
backtest_status | OT_BACKTEST_KEY | 某次运行的状态、积分和报告摘要 |
smart_plans | 无 | Smart-money 套餐(Polymarket 钱包每日列表)及其实时价格 |
smart_coverage | 无 | 已发布的 smart-money 日期 |
smart_days | OT_SMART_KEY | smart-money 密钥可下载的日期,以及每个列表的状态 |
smart_download | OT_SMART_KEY | 下载某一天的列表并验证其 sha256 |
如果你更想用 Python 编写策略,可以使用它的 SDK:pip install outcometick。ot 也能运行这些策略——它是同时支持两种语言的统一 CLI。
完整参考文档:https://outcometick.com/docs/sdk
链接
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。