Files
PolyHermes/docs/zh/nba-quantitative-trading-product-requirements.md
T
WrBug e9e1111df9 feat: 实现 NBA 量化交易系统
- 后端实现:
  - 实现 NBA 比赛数据服务,从 Polymarket API 获取数据
  - 实现数据库存储和增量拉取逻辑(优先从 DB 获取,数据不足时增量拉取)
  - 使用 sports_market_types 参数直接筛选 moneyline 类型
  - 实现分页拉取逻辑(基于 gameStartTime 和 createdAt)
  - 移除 nba_markets 相关的外键约束(V12 迁移)
  - 修复数据拉取逻辑:超过 3 天的数据不拉取

- 前端实现:
  - 实现策略创建/编辑/列表页面
  - 实现交易信号展示页面和统计页面
  - 修复重复请求问题(使用 useCallback 包装 fetchGames)
  - 支持选择单场比赛进行配置
  - 使用西8区时间格式化显示

- 数据库:
  - 创建 NBA 量化交易相关表(V11 迁移)
  - 移除外键约束(V12 迁移)

- 文档:
  - 添加产品需求文档、技术方案、算法文档等
2025-12-13 08:05:08 +08:00

21 KiB
Raw Blame History

NBA 量化交易系统产品需求文档

文档信息

  • 文档版本: v1.0
  • 创建日期: 2024-12
  • 文档类型: 产品需求文档 (PRD)
  • 目标用户: 产品经理、开发团队、测试团队

一、产品概述

1.1 产品定位

NBA 量化交易系统是一个基于 NBA 比赛数据的智能量化交易平台,帮助用户通过配置量化策略参数,自动分析 NBA 比赛数据,生成买入/卖出交易信号,实现自动化交易决策。

1.2 产品目标

核心目标

  • 提供简单易用的策略配置界面,降低量化交易门槛
  • 实时获取和分析 NBA 比赛数据,提供及时的交易信号
  • 支持多种量化策略,满足不同用户需求
  • 提供完善的风险控制机制,保障交易安全

用户价值

  • 自动化决策:无需人工盯盘,系统自动分析并生成交易信号
  • 数据驱动:基于专业的 NBA 数据分析,提高决策准确性
  • 风险可控:完善的风险控制参数,降低交易风险
  • 实时响应:实时数据更新和信号推送,不错过交易机会

1.3 目标用户

主要用户群体

  1. 量化交易爱好者:对 NBA 和量化交易都有兴趣的用户
  2. NBA 数据分析师:希望将数据分析转化为交易信号的用户
  3. 自动化交易用户:希望通过自动化系统进行交易的用户

用户特征

  • 对 NBA 比赛有一定了解
  • 对量化交易有基本认知
  • 希望通过数据驱动的方式进行交易决策
  • 需要自动化工具提高交易效率

二、产品功能需求

2.1 策略配置管理

2.1.1 策略创建

功能描述: 用户可以在前端创建新的量化策略,配置策略的各项参数。

功能点

  • 策略基本信息

    • 策略名称:用户自定义策略名称(必填,1-50 字符)
    • 策略描述:策略的简要说明(可选,最多 200 字符)
    • 关联账户:选择用于交易的账户(必填)
    • 启用状态:创建时默认启用,可后续修改
  • 触发条件配置

    • 比赛筛选:
      • 按球队筛选:选择关注的球队(可选,不选择则分析所有比赛)
      • 按日期筛选:选择关注的日期范围
      • 按重要性筛选:选择比赛重要性(常规赛/季后赛/关键战)
    • 数据指标选择:
      • 基础指标:分差、剩余时间、当前节次、比赛状态
      • 统计指标:球队净效率值、球员 PER、真实命中率等
      • 高级指标:势头动量、球星爆发因子、阵容对位系数等
      • 说明:系统会综合分析两支队伍的各项指标,计算综合评分和获胜概率
    • 触发阈值设置:
      • 最小获胜概率差异:主队和客队获胜概率的最小差异(如 0.1 表示至少 10% 的差异)
      • 最小交易价值:交易价值评分的最小值(如 0.05)
      • 最小剩余时间:生成信号时的最小剩余时间(如 5 分钟,可选)
      • 说明:只有当系统计算出某支队伍获胜概率明显高于对手,且交易价值达到阈值时,才会生成买入信号
  • 交易规则配置

    • 买入规则:
      • 买入条件:系统自动分析两支队伍,当某支队伍获胜概率明显高于对手且交易价值达到阈值时触发买入
      • 买入金额:固定金额或按比例计算或动态计算(基于交易价值)
      • 买入时机:立即买入或延迟买入
      • 买入方向:由系统自动判断(YES 或 NO,基于获胜概率高的队伍)
      • 说明:系统会综合分析两支队伍,选择获胜概率更高、交易价值更大的方向进行买入
    • 卖出规则:
      • 卖出条件:满足止盈、止损或概率反转条件时触发卖出
      • 卖出金额:全部卖出或部分卖出
      • 卖出时机:立即卖出或延迟卖出
    • 价格策略:
      • 固定价格:使用固定价格
      • 市场价格:使用当前市场价格
      • 动态价格:根据获胜概率和市场情况动态计算价格
      • 价格偏移:允许的价格偏差范围(用于调整价格,提高交易成功率)
  • 风险控制配置

    • 持仓限制:
      • 最大持仓:单次最大买入金额(必填,>= 1 USDC
      • 最小持仓:单次最小买入金额(必填,>= 1 USDC
    • 每日限制:
      • 每日亏损限制:每日最大亏损金额(可选)
      • 每日订单限制:每日最大订单数量(可选)
    • 价格容忍度:
      • 价格偏差范围:允许的价格偏差百分比(可选,0-100%)
  • 高级配置

    • 数据更新频率:NBA 数据更新频率(30 秒/1 分钟/5 分钟)
    • 分析频率:量化分析执行频率(30 秒/1 分钟/5 分钟)
    • 推送设置:
      • 是否推送失败订单:默认关闭
      • 推送频率:实时推送/批量推送

交互流程

  1. 用户点击"创建策略"按钮
  2. 进入策略配置页面
  3. 填写策略基本信息
  4. 配置触发条件(可添加多个条件)
  5. 配置交易规则
  6. 配置风险控制参数
  7. 配置高级选项
  8. 点击"保存"按钮,系统验证配置
  9. 保存成功,返回策略列表

验证规则

  • 策略名称不能为空,不能重复
  • 必须选择关联账户
  • 必须配置至少一个触发条件
  • 必须配置买入或卖出规则
  • 最大持仓必须 >= 最小持仓
  • 价格容忍度必须在 0-100% 范围内

2.1.2 策略编辑

功能描述 用户可以编辑已有策略的配置参数。

功能点

  • 支持修改策略的所有配置参数
  • 支持启用/禁用策略
  • 修改后立即生效(如果策略正在运行,会重新加载配置)

交互流程

  1. 用户在策略列表中点击"编辑"按钮
  2. 进入策略编辑页面(与创建页面类似)
  3. 修改配置参数
  4. 点击"保存"按钮
  5. 系统验证并保存配置
  6. 返回策略列表

2.1.3 策略删除

功能描述 用户可以删除不需要的策略。

功能点

  • 删除前需要确认(防止误删)
  • 删除策略时,会停止该策略的所有量化任务
  • 删除后,该策略的历史信号记录会保留(用于统计分析)

交互流程

  1. 用户在策略列表中点击"删除"按钮
  2. 弹出确认对话框
  3. 用户确认删除
  4. 系统删除策略并停止相关任务
  5. 返回策略列表

2.1.4 策略列表

功能描述: 展示所有策略配置,支持搜索、筛选、排序。

功能点

  • 列表展示

    • 策略名称
    • 关联账户
    • 启用状态(启用/禁用)
    • 创建时间
    • 最后更新时间
    • 操作按钮(编辑/删除/启用/禁用)
  • 搜索功能

    • 按策略名称搜索
    • 按账户名称搜索
  • 筛选功能

    • 按启用状态筛选(全部/启用/禁用)
    • 按账户筛选
  • 排序功能

    • 按创建时间排序(最新/最旧)
    • 按更新时间排序(最新/最旧)
    • 按策略名称排序(A-Z/Z-A
  • 分页功能

    • 每页显示 20 条记录
    • 支持翻页

交互流程

  1. 用户进入策略列表页面
  2. 系统加载策略列表
  3. 用户可以搜索、筛选、排序
  4. 用户可以点击操作按钮进行编辑、删除、启用/禁用

2.2 交易信号展示

2.2.1 实时信号列表

功能描述 实时展示系统生成的交易信号。

功能点

  • 信号展示

    • 信号类型(买入/卖出)
    • 策略名称
    • 市场信息(市场 ID、市场标题)
    • 方向(YES/NO
    • 价格
    • 数量
    • 触发原因
    • 生成时间
    • 信号状态(已生成/执行中/执行成功/执行失败)
  • 实时更新

    • 通过 WebSocket 实时接收新信号
    • 新信号自动添加到列表顶部
    • 信号状态更新时实时刷新
  • 筛选功能

    • 按信号类型筛选(全部/买入/卖出)
    • 按策略筛选
    • 按状态筛选(全部/已生成/执行中/成功/失败)
    • 按时间范围筛选
  • 排序功能

    • 按生成时间排序(最新/最旧)
    • 按价格排序(高到低/低到高)
  • 分页功能

    • 每页显示 50 条记录
    • 支持翻页

交互流程

  1. 用户进入交易信号页面
  2. 系统建立 WebSocket 连接
  3. 系统订阅交易信号推送
  4. 实时接收并展示信号
  5. 用户可以筛选、排序、查看详情

2.2.2 信号详情

功能描述 展示信号的详细信息。

功能点

  • 基本信息

    • 信号 ID
    • 信号类型(买入/卖出)
    • 策略名称
    • 生成时间
  • 市场信息

    • 市场 ID
    • 市场标题
    • 市场描述
    • 市场分类
  • 交易信息

    • 方向(YES/NO
    • 价格
    • 数量
    • 总金额
  • 触发信息

    • 触发原因(详细说明)
    • 触发条件(展示满足的条件)
    • 触发时的比赛数据(分差、剩余时间等)
  • 执行信息

    • 执行状态
    • 执行结果
    • 执行时间
    • 错误信息(如果执行失败)

交互流程

  1. 用户在信号列表中点击某个信号
  2. 弹出信号详情对话框
  3. 展示信号的详细信息
  4. 用户可以关闭对话框

2.3 结果统计

2.3.1 策略统计

功能描述 展示每个策略的统计信息。

功能点

  • 统计指标

    • 信号总数:该策略生成的信号总数
    • 买入信号数:买入信号数量
    • 卖出信号数:卖出信号数量
    • 成功率:执行成功的信号占比
    • 总盈亏:该策略的总盈亏金额
    • 平均盈亏:平均每个信号的盈亏金额
  • 时间维度

    • 今日统计
    • 本周统计
    • 本月统计
    • 全部统计
  • 可视化展示

    • 使用图表展示统计趋势
    • 使用饼图展示信号类型分布
    • 使用柱状图展示每日信号数量

交互流程

  1. 用户进入策略统计页面
  2. 系统加载策略列表和统计信息
  3. 用户选择某个策略查看详细统计
  4. 用户可以切换时间维度查看不同时期的统计

2.3.2 总体统计

功能描述 展示所有策略的总体统计信息。

功能点

  • 总体指标

    • 总策略数:启用的策略数量
    • 总信号数:所有策略生成的信号总数
    • 总成功率:所有信号的平均成功率
    • 总盈亏:所有策略的总盈亏金额
    • 平均盈亏:平均每个信号的盈亏金额
  • 趋势分析

    • 信号数量趋势(按日/周/月)
    • 成功率趋势(按日/周/月)
    • 盈亏趋势(按日/周/月)
  • 排行榜

    • 信号数量排行榜(按策略)
    • 成功率排行榜(按策略)
    • 盈亏排行榜(按策略)

交互流程

  1. 用户进入总体统计页面
  2. 系统加载总体统计信息
  3. 用户可以查看趋势图表和排行榜
  4. 用户可以切换时间维度查看不同时期的统计

2.4 NBA 数据展示(可选功能)

2.4.1 比赛数据展示

功能描述 展示 NBA 比赛的实时数据。

功能点

  • 比赛列表

    • 展示今日/本周/本月的比赛
    • 显示比赛状态(未开始/进行中/已结束)
    • 显示比分和分差
  • 比赛详情

    • 比赛基本信息(日期、主客场、比分等)
    • 实时比分和分差
    • 当前节次和剩余时间
    • Play-by-Play 数据

交互流程

  1. 用户进入 NBA 数据页面
  2. 系统加载比赛列表
  3. 用户可以查看比赛详情
  4. 实时更新比赛数据(如果比赛正在进行)

三、用户场景

3.1 场景一:创建量化策略

用户:量化交易爱好者

场景描述: 用户希望创建一个量化策略,系统自动分析比赛的两支队伍,根据综合评分和获胜概率,选择可盈利的队伍进行买入。

操作流程

  1. 用户登录系统,进入策略配置页面
  2. 点击"创建策略"按钮
  3. 填写策略名称:"综合实力分析策略"
  4. 选择关联账户
  5. 配置触发条件:
    • 比赛筛选:选择关注的比赛(可按球队、日期筛选)
    • 数据指标选择:选择用于分析的指标
      • 基础指标:分差、剩余时间、当前节次
      • 统计指标:球队净效率值、球员PER、真实命中率
      • 高级指标:势头动量、球星爆发因子、阵容对位系数
    • 触发阈值设置:
      • 最小获胜概率差异:0.1(主队和客队获胜概率差异至少 10%)
      • 最小交易价值:0.05(交易价值评分至少 0.05)
  6. 配置买入规则:
    • 买入条件:当系统计算出某支队伍获胜概率明显高于对手,且交易价值评分达到阈值时触发买入
    • 买入金额:固定金额 10 USDC
    • 买入方向:由系统自动判断(YES 或 NO,基于获胜概率)
    • 价格策略:动态价格(基于获胜概率和市场情况)
  7. 配置风险控制:
    • 最大持仓:50 USDC
    • 最小持仓:5 USDC
    • 每日亏损限制:100 USDC
  8. 点击"保存"按钮
  9. 系统验证配置并保存
  10. 策略创建成功,自动启用

预期结果

  • 策略创建成功并启用
  • 系统开始监控 NBA 比赛数据
  • 当满足条件时,自动生成买入信号

3.2 场景二:查看交易信号

用户:量化交易爱好者

场景描述: 用户希望实时查看系统生成的交易信号,了解策略的执行情况。

操作流程

  1. 用户登录系统,进入交易信号页面
  2. 系统自动建立 WebSocket 连接
  3. 系统订阅交易信号推送
  4. 实时接收并展示新信号
  5. 用户可以查看信号详情:
    • 点击某个信号,查看详细信息
    • 查看触发原因和触发时的比赛数据
    • 查看执行状态和结果
  6. 用户可以筛选信号:
    • 按策略筛选:只查看特定策略的信号
    • 按类型筛选:只查看买入或卖出信号
    • 按状态筛选:只查看成功或失败的信号

预期结果

  • 实时接收并展示交易信号
  • 可以查看信号的详细信息
  • 可以按需筛选和排序信号

3.3 场景三:查看策略统计

用户:量化交易爱好者

场景描述: 用户希望查看策略的执行效果,了解策略的盈亏情况。

操作流程

  1. 用户登录系统,进入策略统计页面
  2. 系统加载所有策略的统计信息
  3. 用户选择某个策略查看详细统计:
    • 查看信号总数、成功率、总盈亏等指标
    • 查看信号数量趋势图
    • 查看盈亏趋势图
  4. 用户可以切换时间维度:
    • 查看今日统计
    • 查看本周统计
    • 查看本月统计
    • 查看全部统计
  5. 用户可以查看总体统计:
    • 查看所有策略的总体指标
    • 查看趋势分析图表
    • 查看排行榜

预期结果

  • 清晰展示策略的执行效果
  • 提供多维度的时间统计
  • 帮助用户优化策略配置

四、界面设计说明

4.1 策略配置页面

4.1.1 页面布局

整体布局

  • 顶部:页面标题"创建策略"或"编辑策略"
  • 左侧:配置导航(基本信息、触发条件、交易规则、风险控制、高级配置)
  • 中间:配置表单区域
  • 底部:操作按钮(保存、取消)

配置表单

  • 使用分步骤表单,引导用户逐步配置
  • 每个步骤有清晰的说明和示例
  • 必填项用红色星号标记
  • 提供实时验证和错误提示

4.1.2 关键组件

触发条件配置组件

  • 条件列表:展示已添加的触发条件
  • 添加条件按钮:点击后弹出条件配置对话框
  • 条件编辑:支持编辑和删除已有条件
  • 条件组合:支持设置条件之间的逻辑关系(AND/OR)

交易规则配置组件

  • 买入规则配置区域
  • 卖出规则配置区域
  • 价格策略选择(固定价格/动态价格)
  • 价格偏移设置

风险控制配置组件

  • 持仓限制输入框
  • 每日限制输入框
  • 价格容忍度滑块

4.2 交易信号页面

4.2.1 页面布局

整体布局

  • 顶部:筛选和搜索栏
  • 中间:信号列表(表格形式)
  • 底部:分页组件

信号列表表格

  • 列:信号类型、策略名称、市场信息、方向、价格、数量、触发原因、生成时间、状态、操作
  • 支持列排序
  • 支持行点击查看详情

4.2.2 关键组件

实时信号提示

  • 新信号到达时,顶部显示提示消息
  • 信号列表自动滚动到顶部
  • 新信号高亮显示(3 秒后恢复正常)

信号状态标签

  • 已生成:蓝色标签
  • 执行中:黄色标签
  • 执行成功:绿色标签
  • 执行失败:红色标签

信号详情对话框

  • 模态对话框形式
  • 展示信号的完整信息
  • 支持关闭和复制信息

4.3 统计页面

4.3.1 页面布局

整体布局

  • 顶部:时间维度选择(今日/本周/本月/全部)
  • 左侧:策略列表(如果查看策略统计)
  • 中间:统计图表和数据表格
  • 右侧:关键指标卡片

统计图表

  • 使用 ECharts 或类似图表库
  • 支持交互(缩放、筛选等)
  • 支持导出图片

4.3.2 关键组件

指标卡片

  • 大数字显示关键指标
  • 支持对比(与上期对比)
  • 支持趋势箭头(上升/下降)

趋势图表

  • 折线图:展示趋势变化
  • 柱状图:展示数量对比
  • 饼图:展示分布情况

五、非功能性需求

5.1 性能需求

响应时间

  • 页面加载时间:< 2 秒
  • API 响应时间:< 1 秒
  • WebSocket 推送延迟:< 100 毫秒

并发性能

  • 支持至少 100 个并发用户
  • 支持至少 1000 个策略同时运行
  • 支持至少 10000 个信号/天的处理能力

5.2 可用性需求

系统可用性

  • 系统可用性:>= 99.5%
  • 故障恢复时间:< 5 分钟

数据实时性

  • NBA 数据更新延迟:< 1 分钟
  • 交易信号推送延迟:< 5 秒

5.3 安全性需求

数据安全

  • 用户配置数据加密存储
  • API 接口需要身份认证
  • WebSocket 连接需要身份认证

风险控制

  • 所有交易信号需要经过风险控制检查
  • 异常情况自动告警
  • 支持紧急停止策略

5.4 兼容性需求

浏览器兼容

  • Chrome(最新 2 个版本)
  • Firefox(最新 2 个版本)
  • Safari(最新 2 个版本)
  • Edge(最新 2 个版本)

设备兼容

  • 桌面端:1920x1080 及以上分辨率
  • 平板端:768x1024 及以上分辨率
  • 移动端:375x667 及以上分辨率(响应式设计)

六、产品特性

6.1 核心特性

  1. 简单易用

    • 直观的配置界面,降低使用门槛
    • 清晰的步骤引导,帮助用户快速上手
    • 丰富的帮助文档和示例
  2. 实时响应

    • 实时获取 NBA 比赛数据
    • 实时执行量化分析
    • 实时推送交易信号
  3. 数据驱动

    • 基于专业的 NBA 数据分析
    • 支持多种数据指标和特征
    • 提供数据可视化展示
  4. 风险可控

    • 完善的风险控制参数
    • 自动风险检查机制
    • 异常情况告警

6.2 扩展特性

  1. 策略模板

    • 提供预定义的策略模板
    • 用户可以基于模板快速创建策略
    • 支持模板的导入和导出
  2. 回测功能

    • 支持历史数据回测
    • 评估策略的历史表现
    • 优化策略参数
  3. 多账户支持

    • 支持多个交易账户
    • 每个账户可以配置不同的策略
    • 统一管理和监控

七、产品路线图

7.1 第一阶段:MVP 版本(2-3 个月)

核心功能

  • 策略配置管理(创建、编辑、删除、列表)
  • 基础量化分析(简单策略逻辑)
  • 交易信号生成和推送
  • 基础统计展示

目标

  • 验证产品可行性
  • 收集用户反馈
  • 优化核心功能

7.2 第二阶段:功能完善(2-3 个月)

新增功能

  • 完善量化分析逻辑(支持复杂策略)
  • 完善特征提取和数据处理
  • 完善统计和可视化
  • 策略模板功能

目标

  • 提升产品功能完整性
  • 提升用户体验
  • 扩大用户群体

7.3 第三阶段:高级功能(3-4 个月)

新增功能

  • 回测功能
  • 机器学习集成
  • 多账户支持
  • 高级统计分析

目标

  • 提升产品竞争力
  • 满足高级用户需求
  • 建立产品壁垒

八、附录

8.1 术语表

  • 量化策略:基于数据分析和算法模型的交易策略
  • 交易信号:系统生成的买入或卖出建议
  • 触发条件:满足哪些条件时生成交易信号
  • 风险控制:限制交易风险的各种参数和机制
  • WebSocket:一种实时通信协议,用于推送数据

8.2 参考文档

  • NBA 比赛分析框架文档(NBA.md)
  • 技术方案文档(nba-api-integration-technical-solution.md
  • API 接口文档(待补充)
  • 用户手册(待补充)

文档结束