比特骆驼行情采集分析 — 开发方案
独立仓库,与 eth_hedge_sim(策略 / 中控)无代码共用、无进程共用、无交易密钥共用。
本系统只做:行情采集 → 落库 → 分析统计 → 只读展示 / API。
不下单、不持仓、不替代策略选约。
Git 仓库由负责人在 git.bz121.com 创建;本目录为方案与后续工程落点。
1. 命名与定位
| 项 |
约定 |
| 产品名 |
比特骆驼行情采集分析 |
| 项目名称(对外) |
比特骆驼行情采集分析系统 |
| 仓库名称 / 工程名 |
market_intel |
| Git 地址(拟) |
https://git.bz121.com/dekun/market_intel.git |
| 安装目录(生产) |
/opt/market_intel |
| 部署操作系统 |
Ubuntu 22.04 LTS(与策略仓一键脚本一致) |
| 运行方式 |
Docker Compose(采集 + API + Web 同栈编排) |
| 一键入口 |
deploy/manage.sh 交互菜单(对齐 eth_hedge_sim) |
1.1 硬边界
- 只读行情:REST / WebSocket;禁止任何交易类 API。
- 与策略解耦:策略机挂了,本系统仍可继续采;本系统挂了,策略仍可独立交易。
- 第一期标的:ETH(OKX 指数 + ETH-USD_UM 期权盘口);架构预留多币种 / 多所,但实现标准先钉死 OKX ETH。
- 时区:统计与「日 / 周 / 月」切分一律 Asia/Shanghai。
1.2 核心分析目标(作战地图数据底座)
- 期权杠杆 × 日内时段
口径:杠杆 = 标的指数 ÷ 期权卖一(与策略选约门限一致)。
- 该时段 → 期权到期 的波动点数
口径:到期时刻指数 − 该时段代表指数(可同时存带符号与绝对值)。
- 范围:按 日 / 周 / 月 过滤样本,横轴均为 日内时段桶(默认 1 小时)。
2. 实现标准
2.1 技术栈
| 层 |
标准 |
| 语言 |
Python 3.11+(采集 / API / 聚合) |
| Web API |
FastAPI |
| 前端 |
React + Vite(只读看板:采集状态、时段图、日周月切换) |
| 数据库 |
第一期 SQLite(volume 持久化);上量后可换 Postgres,表结构先按可迁移设计 |
| 容器 |
Docker + Docker Compose v2 |
| 反向代理(可选) |
同 Compose 内 Caddy/Nginx,或宿主机已有反代 |
| 配置 |
仓库根 .env(密钥、交易所、采样间隔、端口);已有非空值不覆盖 |
2.2 代码与工程规范
- 仓库根英文名固定
market_intel;文档可用中文。
- 配置项集中、可环境变量覆盖;禁止把 API Key 写进镜像层。
- 采集与 API 可同容器或分服务;Compose 内用服务名互访。
- 所有时间戳存 UTC ms;展示与「自然日」按上海转换。
- 杠杆 / 波动口径写进代码常量 + 本文档,变更需改版本号与迁移说明。
- 日志:结构化或按日滚动;脱敏(不打完整密钥)。
- 测试:采集解析、杠杆计算、时段聚合、到期回填 有单元测试。
2.3 采集标准(第一期)
| 项 |
标准 |
| 交易所 |
OKX(只读) |
| 指数 |
ETH-USD 指数(或与策略一致的 index) |
| 期权 |
最近合资格到期的 ATM Call + ATM Put(规则文档化:最接近指数的行权价) |
| 杠杆采样间隔 |
默认 30s(可配 15–120s) |
| 指数采样 |
可与杠杆同频,或单独 60s |
| 字段最小集 |
ts_ms, exchange, underlying, expiry_ymd, strike, side(C/P), index_px, ask, bid, ask_sz, bid_sz, leverage, inst_id |
| 失败策略 |
单次失败记日志并跳过;连续失败告警(可选企微,后期) |
2.4 统计标准
| 项 |
标准 |
| 时段桶 |
默认 1 小时(0–23,上海);可扩展 30 分钟 |
| 日 |
上海自然日 YYYY-MM-DD |
| 周 |
滚动近 7 个上海自然日(第一期);后期可加自然周 |
| 月 |
滚动近 30 日 或自然月(设置可选,默认滚动 30 日) |
| 杠杆聚合 |
桶内:样本数、均值、中位数、P25/P75、≥min_leverage 占比 |
| 波动点数 |
到期后回填;桶内:均值/中位/分位;同时提供 signed 与 abs |
| 未到期 |
API 标记 pending_expiry=true,不假装有完整「到到期」分布 |
2.5 安全与权限
- 仅行情只读 Key(若需要);无交易权限。
- Web / API 默认需登录或 Token(对齐策略仓简单鉴权即可)。
- 局域网部署时可绑
127.0.0.1 / 内网 IP;公网必须 HTTPS + 强密码。
3. 系统架构
- 不嵌入
eth_hedge_sim 进程。
- 后期若中控要展示,由中控 HTTP 调用本系统 API,本仓仍独立演进。
4. 代码结构(目标仓库)
实现时可把 apps/ 收成单包 src/market_intel/,但 deploy / docker / web / 采集与 API 分离 的边界保持不变。
5. 数据模型(摘要)
5.1 option_quotes(杠杆明细)
| 字段 |
说明 |
| id |
自增 |
| ts_ms |
UTC |
| exchange |
okx |
| inst_id |
合约 ID |
| expiry_ymd |
YYMMDD |
| strike |
行权价 |
| side |
C / P |
| index_px |
指数 |
| ask / bid |
卖一 / 买一 |
| ask_sz / bid_sz |
可选 |
| leverage |
index_px / ask(ask>0) |
5.2 index_ticks(指数明细)
| 字段 |
说明 |
| ts_ms |
UTC |
| underlying |
ETH |
| index_px |
指数 |
5.3 expiry_settlements(到期锚点)
| 字段 |
说明 |
| expiry_ymd |
到期日 |
| settle_ts_ms |
到期时刻(OKX:UTC 08:00) |
| settle_index_px |
结算/到期指数 |
波动点数:对历史某桶代表时刻 (t),
move = settle_index_px - index_at(t)(同 expiry_ymd)。
6. API 约定(第一期)
| 方法 |
路径 |
说明 |
| GET |
/health |
存活;可选返回采集延迟 |
| GET |
/api/stats/leverage |
range=day|week|month + 日期;返回各时段桶聚合 |
| GET |
/api/stats/move_points |
同上;返回时段→到期波动 |
| GET |
/api/stats/ops-map |
一次返回杠杆 + 波动(看板主接口) |
| GET |
/api/meta/latest |
最新一条 Call/Put 杠杆、采集时间 |
查询参数统一:range、date(锚点日)、side=C|P|both、bucket_minutes=60。
7. Docker 运行标准
7.1 服务划分(Compose)
| 服务名 |
职责 |
说明 |
collector |
写库 |
重启策略 unless-stopped |
api |
FastAPI + 静态前端(或挂 web 构建产物) |
默认端口 5170(可配,避开策略 5155 / 中控 5160) |
db |
第一期可省略(SQLite 挂 volume) |
后期 Postgres 再加 |
7.2 本地开发(非必须 Docker)
生产标准路径以 Docker Compose 为准。
8. 一键部署(对齐 eth_hedge_sim)
8.1 新机器(免克隆)
要求:Ubuntu 22.04;脚本内检测并安装 Git、Docker、Docker Compose 插件(已有则跳过)。
8.2 已安装
8.3 交互菜单(实现标准)
与策略仓 deploy/manage.sh 同级体验:数字选项 + 读 /dev/tty,支持 curl | bash。
| 选项 |
作用 |
| 1) 一键部署 |
检测 Docker → clone 到 /opt/market_intel → 生成/补全 .env(已有非空不覆盖)→ docker compose up -d --build → 健康检查 |
| 2) 更新 |
git pull + compose build/up;保留 .env 与 data volume |
| 3) 停止 |
docker compose stop |
| 4) 启动 |
docker compose start / up -d |
| 5) 查看状态 |
compose ps + /health |
| 6) 一键卸载 |
停容器;询问是否删除 data volume;备份 .env 到 /root/backups/market_intel/;按确认删除 /opt/market_intel |
| 0) 退出 |
— |
已存在安装目录时,选项 1 进入子菜单:取消 / 修复(保留 .env 与数据),行为对齐策略仓 install.sh。
8.4 .env 交互补全(首次部署)
脚本可交互询问(有默认值,回车采用默认):
OKX API Key / Secret / Passphrase(只读;可留空若仅用公开行情)
MI_PORT(默认 5170)
SAMPLE_INTERVAL_SEC(默认 30)
MIN_OPTION_LEVERAGE(统计达标线,默认 100)
- 管理员密码 /
AUTH_SECRET
原则:文件中已有非空值不覆盖(对齐中控 .env.control 行为)。
8.5 部署后验收
curl -fsS http://127.0.0.1:5170/health 返回 ok
- 等待 ≥1 个采样周期后,库中有
option_quotes 行
- 打开 Web 看板能看到最新杠杆
manage.sh → 更新 → 容器重建后数据 volume 仍在
9. Web 看板(第一期页面)
| 页面 |
内容 |
| 总览 |
采集是否正常、延迟、当前 ATM Call/Put 杠杆 |
| 作战地图 |
切换 日 / 周 / 月;上图时段杠杆;下图时段→到期波动点数 |
| 设置(简) |
只读展示当前采样参数(改参走 .env + 更新重启) |
UI 要求:暗色可与策略仓风格接近,但 独立品牌标题「行情采集分析」,避免与对冲策略页混淆。
10. 分期计划
| 阶段 |
交付 |
| P0 |
仓库骨架、Docker Compose、manage.sh 菜单、健康检查 |
| P1 |
OKX 指数 + ATM Call/Put 采样落库 |
| P2 |
/api/stats/leverage 日周月;Web 作战地图杠杆图 |
| P3 |
到期回填 + 波动点数统计与下图 |
| P4 |
鉴权加固、企微采集异常推送、可选历史指数回填 |
| P5 |
(可选)中控只读嵌入;多 underlying |
11. 与 eth_hedge_sim 的关系(再强调)
|
eth_hedge_sim |
market_intel(本仓) |
| 职责 |
对冲交易 / 中控运维 |
行情采集与统计分析 |
| 运行 |
PM2(现状) |
Docker Compose |
| 端口 |
5155 / 5160 |
5170(默认) |
| 密钥 |
可含交易权限 |
仅只读行情 |
| 依赖 |
互不依赖 |
互不依赖 |
12. 验收清单(方案级)
13. 文档修订
| 日期 |
说明 |
| 2026-07-31 |
初稿:独立仓、Docker、交互式一键部署、作战地图数据标准 |