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