Açıklama Yok

Horace Zhang 0a2634d4f8 feat: add HKO data source, fix signal dedup, price lookup, Redis, and UI overhaul 7 ay önce
.claude 51b520f0a1 first commit 8 ay önce
packages 0a2634d4f8 feat: add HKO data source, fix signal dedup, price lookup, Redis, and UI overhaul 7 ay önce
scripts 51b520f0a1 first commit 8 ay önce
.dockerignore cb77e1654a Add Docker multi-service setup, README, and externalize DB password 7 ay önce
.env.example cb77e1654a Add Docker multi-service setup, README, and externalize DB password 7 ay önce
.gitignore 0a2634d4f8 feat: add HKO data source, fix signal dedup, price lookup, Redis, and UI overhaul 7 ay önce
CLAUDE.md 51b520f0a1 first commit 8 ay önce
Dockerfile cb77e1654a Add Docker multi-service setup, README, and externalize DB password 7 ay önce
README.md cb77e1654a Add Docker multi-service setup, README, and externalize DB password 7 ay önce
docker-compose.yml cb77e1654a Add Docker multi-service setup, README, and externalize DB password 7 ay önce
package.json 51b520f0a1 first commit 8 ay önce
pnpm-lock.yaml 0a2634d4f8 feat: add HKO data source, fix signal dedup, price lookup, Redis, and UI overhaul 7 ay önce
pnpm-workspace.yaml 51b520f0a1 first commit 8 ay önce
tsconfig.base.json 51b520f0a1 first commit 8 ay önce
turbo.json 51b520f0a1 first commit 8 ay önce

README.md

Poly Weather

Polymarket 天气预测市场套利机器人。通过比较专业气象模型(GFS / ECMWF / ICON 集合预报)的概率与 Polymarket 每日温度市场的隐含概率,自动发现并交易定价偏差。

策略

策略 说明
TAIL_NO 在尾部区间买入 NO — 当模型概率 < 5% 但市场 YES 价格 > 3¢ 时
LATENCY_ARB 新气象数据使概率偏移 > 5%,市场尚未重新定价时交易
PARITY_ARB 当某事件所有 YES 价格之和偏离 100¢ 时的纯套利

架构

TypeScript monorepo,使用 Turborepo + pnpm workspaces。

packages/
  core/             — 共享类型、工具函数、Prisma schema、常量
  weather-engine/   — GFS/ECMWF/ICON 预报获取(Open-Meteo)、集合概率计算
  market-engine/    — Polymarket Gamma API 扫描、CLOB 订单簿读取、认证下单
  strategy/         — 信号生成(Tail NO / Latency Arb / Parity Arb)、风控、Kelly 仓位
  trading-engine/   — 机器人主循环、流水线编排、健康检查服务
  dashboard/        — Next.js App Router 仪表盘,实时市场数据、信号、手动下单

依赖关系

core (叶子节点 — 无内部依赖)
  ↑
weather-engine, market-engine (依赖 core)
  ↑
strategy (依赖 core + weather-engine + market-engine)
  ↑
trading-engine (依赖以上所有)
dashboard (依赖 core,直接读取数据库)

快速开始

前置条件

  • Node.js >= 20
  • pnpm >= 9
  • Docker & Docker Compose

1. 克隆并安装

git clone <repo-url> && cd poly-weather
pnpm install

2. 配置环境变量

cp .env.example .env
# 编辑 .env,填入你的 Polymarket 钱包私钥和地址

3. 启动基础服务

# 仅启动 PostgreSQL + Redis(本地开发)
docker compose up -d postgres redis

# 或者启动全部服务(包括 bot + dashboard)
docker compose up -d

4. 初始化数据库

pnpm db:generate
pnpm db:push

5. 派生 L2 API 密钥

pnpm derive-keys
# 将输出的 key/secret/passphrase 填入 .env

6. 启动

# 方式一:Docker 全栈启动
docker compose up -d

# 方式二:本地开发
pnpm i
pnpm build
pnpm bot:start        # 启动交易机器人
pnpm dashboard:dev    # 启动仪表盘 http://localhost:3000

Docker 服务

服务 端口 说明
postgres 5432 PostgreSQL 16 数据库
redis 6379 Redis 7 缓存
bot 3001 交易机器人(健康检查端口)
dashboard 3000 Next.js 仪表盘
docker compose up -d                # 启动全部
docker compose up -d postgres redis # 仅基础设施
docker compose logs -f bot          # 查看 bot 日志
docker compose down                 # 停止全部

常用命令

pnpm install              # 安装所有依赖
pnpm build                # 构建所有包
pnpm dev                  # 开发模式(全部包)
pnpm test                 # 运行测试
pnpm db:generate          # 生成 Prisma Client
pnpm db:push              # 推送 schema 到数据库
pnpm db:studio            # 打开 Prisma Studio
pnpm bot:start            # 启动交易机器人
pnpm dashboard:dev        # 启动仪表盘开发服务器
pnpm derive-keys          # 从 PRIVATE_KEY 派生 L2 API 密钥

技术栈

  • 运行时: Node.js 20+, TypeScript (ES2022, NodeNext, strict)
  • Monorepo: pnpm workspaces + Turborepo
  • 数据库: PostgreSQL 16 (Prisma ORM) + Redis 7
  • 仪表盘: Next.js 14 (App Router), Tailwind CSS, next-themes, Radix UI
  • 市场 API: Polymarket Gamma API + CLOB API
  • 气象 API: Open-Meteo (GFS, ECMWF, ICON)
  • 交易: @polymarket/clob-client, ethers

环境变量

参见 .env.example,关键变量:

变量 说明
DB_PASSWORD PostgreSQL 密码
DATABASE_URL PostgreSQL 连接串(引用 ${DB_PASSWORD})
REDIS_URL Redis 连接地址
PRIVATE_KEY Polymarket 钱包私钥
FUNDER_ADDRESS Polymarket 代理钱包地址
DRY_RUN true(默认)模拟交易,false 真实下单
AUTO_EXECUTE false(默认)仅检测信号,不自动下单

注意事项

  • DRY_RUN=true 为默认值 — 所有信号检测和数据库记录正常工作,但不会真正下单
  • 温度单位 — 美国城市使用 °F,其他城市使用 °C
  • 仅 Maker 订单 — 在 Polymarket 上使用限价单(GTC)以免手续费
  • 时间戳均为 UTC — 本地时区仅在仪表盘显示中使用

License

Private