- 后端实现: - 实现 NBA 比赛数据服务,从 Polymarket API 获取数据 - 实现数据库存储和增量拉取逻辑(优先从 DB 获取,数据不足时增量拉取) - 使用 sports_market_types 参数直接筛选 moneyline 类型 - 实现分页拉取逻辑(基于 gameStartTime 和 createdAt) - 移除 nba_markets 相关的外键约束(V12 迁移) - 修复数据拉取逻辑:超过 3 天的数据不拉取 - 前端实现: - 实现策略创建/编辑/列表页面 - 实现交易信号展示页面和统计页面 - 修复重复请求问题(使用 useCallback 包装 fetchGames) - 支持选择单场比赛进行配置 - 使用西8区时间格式化显示 - 数据库: - 创建 NBA 量化交易相关表(V11 迁移) - 移除外键约束(V12 迁移) - 文档: - 添加产品需求文档、技术方案、算法文档等
101 lines
2.7 KiB
Markdown
101 lines
2.7 KiB
Markdown
# NBA 比赛数据来源对比
|
||
|
||
## 一、数据来源对比
|
||
|
||
### 1.1 NBA Stats API
|
||
|
||
**优势**:
|
||
- ✅ 官方数据源,数据准确可靠
|
||
- ✅ 包含完整的比赛数据(实时比分、状态、统计等)
|
||
- ✅ 实时更新,数据最新
|
||
- ✅ 免费使用
|
||
- ✅ 支持历史数据查询
|
||
|
||
**劣势**:
|
||
- ❌ 不包含 Polymarket 市场信息
|
||
- ❌ 需要额外的匹配逻辑来关联 Polymarket 市场
|
||
|
||
**适用场景**:
|
||
- 获取比赛基本信息(球队、日期、时间)
|
||
- 获取实时比分和比赛状态
|
||
- 获取比赛统计数据
|
||
|
||
### 1.2 Polymarket API
|
||
|
||
**优势**:
|
||
- ✅ 直接获取交易市场信息
|
||
- ✅ 包含市场 ID、价格、流动性等交易相关数据
|
||
- ✅ 市场名称可能包含比赛信息
|
||
|
||
**劣势**:
|
||
- ❌ 不包含实时比分和比赛状态
|
||
- ❌ 无法直接搜索或筛选 NBA 市场(需要知道 condition_ids)
|
||
- ❌ 市场名称格式不统一,解析困难
|
||
- ❌ 数据不完整(缺少比赛详细信息)
|
||
|
||
**适用场景**:
|
||
- 获取可交易的市场列表
|
||
- 获取市场价格和流动性信息
|
||
- 匹配比赛和交易市场
|
||
|
||
## 二、推荐方案
|
||
|
||
### 2.1 混合方案(推荐)
|
||
|
||
**策略**:结合两种数据源,发挥各自优势
|
||
|
||
**实现方式**:
|
||
1. **主要数据源:NBA Stats API**
|
||
- 获取完整的比赛数据(球队、日期、时间、比分、状态等)
|
||
- 实时更新比赛状态
|
||
|
||
2. **补充数据源:Polymarket API**
|
||
- 获取市场信息(市场 ID、价格、流动性等)
|
||
- 通过球队名称和日期匹配比赛和市场
|
||
|
||
3. **数据匹配**
|
||
- 使用球队名称和比赛日期匹配
|
||
- 建立比赛和市场的关联关系
|
||
|
||
### 2.2 数据流程
|
||
|
||
```
|
||
1. 从 NBA Stats API 获取比赛列表
|
||
↓
|
||
2. 从 Polymarket API 获取市场列表(如果知道 condition_ids)
|
||
↓
|
||
3. 解析市场名称,提取球队和日期信息
|
||
↓
|
||
4. 匹配比赛和市场(通过球队名称和日期)
|
||
↓
|
||
5. 合并数据,返回完整的比赛和市场信息
|
||
```
|
||
|
||
## 三、当前实现
|
||
|
||
当前系统使用 **NBA Stats API** 作为主要数据源,原因:
|
||
- 数据完整可靠
|
||
- 实时更新
|
||
- 免费使用
|
||
- 无需预先知道 condition_ids
|
||
|
||
如果需要 Polymarket 市场信息,可以:
|
||
1. 在获取比赛数据后,通过球队名称和日期匹配 Polymarket 市场
|
||
2. 或者单独维护一个 Polymarket 市场列表,定期同步
|
||
|
||
## 四、建议
|
||
|
||
**对于获取比赛数据**:
|
||
- ✅ 使用 NBA Stats API(当前实现)
|
||
- ✅ 实时、准确、完整
|
||
|
||
**对于获取市场信息**:
|
||
- ✅ 使用 Polymarket API(需要知道 condition_ids)
|
||
- ✅ 或者从市场名称解析(如果格式统一)
|
||
|
||
**最佳实践**:
|
||
- 主要使用 NBA Stats API 获取比赛数据
|
||
- 使用 Polymarket API 获取市场信息并匹配
|
||
- 建立比赛和市场的关联关系
|
||
|