Files
PolyWeather/README.md
T

220 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🌡️ PolyWeather: Polymarket 天气交易监控系统
基于多源实时气象数据与 Polymarket 市场定价偏差分析的智能监控与指令系统。
## 🚀 运行指令
### 环境要求
- **Python 3.11** (必须,`py-clob-client` 依赖要求)
- 已安装所有依赖:`pip install -r requirements.txt`
### Windows 启动方式
```powershell
# 方式一:使用 Python 3.11 启动器
py -3.11 run.py
# 方式二:激活虚拟环境后运行
.venv\Scripts\activate # 激活虚拟环境
python run.py
```
### Linux/VPS 启动方式
```bash
# 使用 screen 保持后台运行
screen -S polyweather
python3.11 run.py
# 按 Ctrl+A 然后 D 退出但保持运行
# 恢复:screen -r polyweather
```
该命令会同时启动:
1. **监控引擎**: 负责 7x24h 扫描并推送 **85¢-95¢ 价格预警****市场异常**
2. **指令监听器**: 监听电报指令并返回实时信号。
---
## 🤖 电报机器人指令集
| 指令 | 描述 | 用法 |
| :----------- | :--------------- | :---------------------------- |
| `/signal` | **获取交易信号** | 返回最早结算市场的 Top 5 档位 |
| `/portfolio` | **查看模拟仓位** | 获取实时模拟交易盈亏汇总报告 |
| `/status` | **检查系统状态** | 确认监控引擎是否在线 |
| `/help` | **指令帮助** | 显示所有可用指令 |
---
## 🎯 智能动态仓位策略
系统结合 **Open-Meteo 天气预测**、**成交量** 和 **价格锁定程度** 自动决定仓位大小:
| 条件组合 | 仓位 | 标签 | 说明 |
| ------------------------------- | ------- | ---------- | -------------- |
| 价格 ≥90¢ + 天气支持 + 高成交量 | **$10** | 🔥高置信 | 三重确认,重注 |
| 价格 ≥90¢ + 天气支持 | **$7** | ⭐中置信 | 双重确认 |
| 价格 ≥92¢ | **$5** | 📌价格锁定 | 纯价格锁定 |
| 其他 85-91¢ | **$3** | 💡试探 | 最小仓位试探 |
### 天气支持判断逻辑
- **买 NO**Open-Meteo 预测温度在选项区间 **之外** (±2° 容差)
- **买 YES**Open-Meteo 预测温度 **落入** 选项区间
### 成交量判断
- **高成交量**:单个选项成交量 ≥ $5,000
---
## 📢 推送维度说明
### 1. 📂 城市预警汇总 (主动推送)
- **优化机制**: 同一轮扫描中,同一城市的所有异动将**合并为一条消息**发送,拒绝刷屏。
- **触发内容**: 包含该城市下所有符合条件的"价格预警"与"市场异常"。
- **价格来源**: 推送使用真实 **Ask 价格**(实际可成交价格),而非中间价
- **推送格式**:
```
⚡ 40-41°F (2026-02-06): Buy No 87¢ | 预测:38°F [🛒 $10.0 🔥高置信]
💡 策略建议:
• 预测温度38.0°C落在40-41°F区间,市场与模型一致
```
### 2. ⚡ 价格预警 (触发模拟买入)
- **触发条件**: Buy Yes 或 Buy No 价格在 **85¢-95¢** 区间。
- **关联动作**: 系统根据智能仓位策略自动执行 **$3-$10** 的模拟开仓。
- **用途**: 高胜率/即将锁定区间提醒,适合平仓或收割。
### 3. 👀 市场异常
- **大户入场**: 检测到单笔 >$5000 的大额交易且买卖比失衡。
- **异常交易流**: 成交量突然放大 (>2倍历史标准差)。
### 4. 📅 每日盈亏总结
- **触发时间**: 北京时间 23:55 左右自动推送。
- **内容**: 汇总当日所有模拟仓位的浮动盈亏、余额变动及胜率统计。
### 5. 🎯 交易信号 (`/signal` 指令)
优先显示**最早结算日期**的市场,按机会价值排序,返回 **Top 5** 档位:
```
🎯 即将结算市场 (2026-02-06)
共 43 个活跃选项
🔥 1. Dallas 76-77°F
💡 预测80.7°高于77° → 买NO ✓
📊 Buy No 94¢ | ⏳接近锁定
🔥 2. Atlanta 56-57°F
💡 预测60.4°高于57° → 买NO ✓
📊 Buy No 94¢ | ⏳接近锁定
⭐ 3. Miami 62-63°F
💡 预测65.3°高于63° → 买NO ✓
📊 Buy No 88¢ | ⏳接近锁定
```
**锁定状态说明**:
- 🔒锁定: 价格 ≥95¢
- ⏳接近锁定: 价格 85-94¢
- 👀观望: 价格 70-84¢
- ⚖️均衡: 价格 <70¢
---
## 📊 模拟交易报告格式
通过 `/portfolio` 指令查看,报告按**目标日期分组**显示:
```
📊 模拟交易报告
════════════════════
📈 【2026-02-06】 小计: +2.45$
──────────────────
🟢 Chicago 40-41°F
NO 87¢→92¢ 预测:38 | +0.47$
🟢 Chicago 32-33°F
NO 94¢→98¢ 预测:38 | +0.12$
💰 持仓总计: +6.89$
📈 历史战绩:
累计成交: 18笔 | 胜率: 100.0%
已投入: $90.00 | 盈亏: +12.50$ (+13.9%)
════════════════════
💳 账户余额: $639.11
```
---
## 🛠️ 环境配置 (.env)
```bash
# Telegram 机器人
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_CHAT_ID=your_chat_id
# Polymarket API (用于批量获取实时盘口价格与交易历史)
POLYMARKET_API_KEY=your_api_key_here
# 代理设置 (如需要,VPS 部署时可删除)
HTTPS_PROXY=http://127.0.0.1:7890
HTTP_PROXY=http://127.0.0.1:7890
```
## 🏗️ 项目架构
本项目完全基于 **py-clob-client** 官方客户端构建:
- 所有与 Polymarket 的交互(市场数据、订单簿、下单等)均通过 `py-clob-client` 实现
- 核心 API 封装在 `src/data_collection/polymarket_api.py`
## 📂 数据文件说明
| 文件 | 说明 |
| --------------------------- | -------------------------- |
| `data/paper_positions.json` | 模拟仓持仓、余额、交易历史 |
| `data/pushed_signals.json` | 已推送信号记录(防刷屏) |
| `data/active_signals.json` | 当前活跃交易信号 |
| `data/all_markets.json` | 全量市场缓存 |
| `data/price_history.json` | 价格历史(用于趋势计算) |
---
## 📋 核心功能特性
- ✅ **智能动态仓位**: 结合天气预测、成交量、价格锁定程度自动调整仓位 ($3-$10)。
- ✅ **预测温度追踪**: 每笔交易记录买入时的 Open-Meteo 预测温度,方便复盘验证。
- ✅ **智能合并推送**: 按城市汇总预警,界面整洁不刷屏。
- ✅ **全自动模拟交易**: 内置模拟仓位系统,支持 85-95¢ 区间自动跟单,记录实战胜率。
- ✅ **极速价格同步**: 采用 Polymarket 批量 API 接口,一次同步全量城市,无延迟、无 404。
- ✅ **北京时间适配**: 所有推送时间戳与每日总结均自动转换为北京时间 (UTC+8)。
- ✅ **智能日期选择**: 自动定位最早的活跃市场日期,结算后自动顺延。
- ✅ **温度单位自适应**: 美国市场切换华氏度 (°F),其他地区显示摄氏度 (°C)。
- ✅ **全量数据持久化**: 信号记录、推送历史、交易仓位均保存至本地 JSON。
---
## 🔄 VPS 更新步骤
```bash
# 1. 本地推送代码
git add . && git commit -m "update" && git push
# 2. VPS 拉取并重启
ssh root@VPS_IP "cd ~/PolyWeather && git pull && screen -S polyweather -X quit; screen -dmS polyweather python run.py"
```