- 后端实现: - 实现 NBA 比赛数据服务,从 Polymarket API 获取数据 - 实现数据库存储和增量拉取逻辑(优先从 DB 获取,数据不足时增量拉取) - 使用 sports_market_types 参数直接筛选 moneyline 类型 - 实现分页拉取逻辑(基于 gameStartTime 和 createdAt) - 移除 nba_markets 相关的外键约束(V12 迁移) - 修复数据拉取逻辑:超过 3 天的数据不拉取 - 前端实现: - 实现策略创建/编辑/列表页面 - 实现交易信号展示页面和统计页面 - 修复重复请求问题(使用 useCallback 包装 fetchGames) - 支持选择单场比赛进行配置 - 使用西8区时间格式化显示 - 数据库: - 创建 NBA 量化交易相关表(V11 迁移) - 移除外键约束(V12 迁移) - 文档: - 添加产品需求文档、技术方案、算法文档等
21 KiB
NBA 量化交易系统产品需求文档
文档信息
- 文档版本: v1.0
- 创建日期: 2024-12
- 文档类型: 产品需求文档 (PRD)
- 目标用户: 产品经理、开发团队、测试团队
一、产品概述
1.1 产品定位
NBA 量化交易系统是一个基于 NBA 比赛数据的智能量化交易平台,帮助用户通过配置量化策略参数,自动分析 NBA 比赛数据,生成买入/卖出交易信号,实现自动化交易决策。
1.2 产品目标
核心目标:
- 提供简单易用的策略配置界面,降低量化交易门槛
- 实时获取和分析 NBA 比赛数据,提供及时的交易信号
- 支持多种量化策略,满足不同用户需求
- 提供完善的风险控制机制,保障交易安全
用户价值:
- 自动化决策:无需人工盯盘,系统自动分析并生成交易信号
- 数据驱动:基于专业的 NBA 数据分析,提高决策准确性
- 风险可控:完善的风险控制参数,降低交易风险
- 实时响应:实时数据更新和信号推送,不错过交易机会
1.3 目标用户
主要用户群体:
- 量化交易爱好者:对 NBA 和量化交易都有兴趣的用户
- NBA 数据分析师:希望将数据分析转化为交易信号的用户
- 自动化交易用户:希望通过自动化系统进行交易的用户
用户特征:
- 对 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 分钟)
- 推送设置:
- 是否推送失败订单:默认关闭
- 推送频率:实时推送/批量推送
交互流程:
- 用户点击"创建策略"按钮
- 进入策略配置页面
- 填写策略基本信息
- 配置触发条件(可添加多个条件)
- 配置交易规则
- 配置风险控制参数
- 配置高级选项
- 点击"保存"按钮,系统验证配置
- 保存成功,返回策略列表
验证规则:
- 策略名称不能为空,不能重复
- 必须选择关联账户
- 必须配置至少一个触发条件
- 必须配置买入或卖出规则
- 最大持仓必须 >= 最小持仓
- 价格容忍度必须在 0-100% 范围内
2.1.2 策略编辑
功能描述: 用户可以编辑已有策略的配置参数。
功能点:
- 支持修改策略的所有配置参数
- 支持启用/禁用策略
- 修改后立即生效(如果策略正在运行,会重新加载配置)
交互流程:
- 用户在策略列表中点击"编辑"按钮
- 进入策略编辑页面(与创建页面类似)
- 修改配置参数
- 点击"保存"按钮
- 系统验证并保存配置
- 返回策略列表
2.1.3 策略删除
功能描述: 用户可以删除不需要的策略。
功能点:
- 删除前需要确认(防止误删)
- 删除策略时,会停止该策略的所有量化任务
- 删除后,该策略的历史信号记录会保留(用于统计分析)
交互流程:
- 用户在策略列表中点击"删除"按钮
- 弹出确认对话框
- 用户确认删除
- 系统删除策略并停止相关任务
- 返回策略列表
2.1.4 策略列表
功能描述: 展示所有策略配置,支持搜索、筛选、排序。
功能点:
-
列表展示:
- 策略名称
- 关联账户
- 启用状态(启用/禁用)
- 创建时间
- 最后更新时间
- 操作按钮(编辑/删除/启用/禁用)
-
搜索功能:
- 按策略名称搜索
- 按账户名称搜索
-
筛选功能:
- 按启用状态筛选(全部/启用/禁用)
- 按账户筛选
-
排序功能:
- 按创建时间排序(最新/最旧)
- 按更新时间排序(最新/最旧)
- 按策略名称排序(A-Z/Z-A)
-
分页功能:
- 每页显示 20 条记录
- 支持翻页
交互流程:
- 用户进入策略列表页面
- 系统加载策略列表
- 用户可以搜索、筛选、排序
- 用户可以点击操作按钮进行编辑、删除、启用/禁用
2.2 交易信号展示
2.2.1 实时信号列表
功能描述: 实时展示系统生成的交易信号。
功能点:
-
信号展示:
- 信号类型(买入/卖出)
- 策略名称
- 市场信息(市场 ID、市场标题)
- 方向(YES/NO)
- 价格
- 数量
- 触发原因
- 生成时间
- 信号状态(已生成/执行中/执行成功/执行失败)
-
实时更新:
- 通过 WebSocket 实时接收新信号
- 新信号自动添加到列表顶部
- 信号状态更新时实时刷新
-
筛选功能:
- 按信号类型筛选(全部/买入/卖出)
- 按策略筛选
- 按状态筛选(全部/已生成/执行中/成功/失败)
- 按时间范围筛选
-
排序功能:
- 按生成时间排序(最新/最旧)
- 按价格排序(高到低/低到高)
-
分页功能:
- 每页显示 50 条记录
- 支持翻页
交互流程:
- 用户进入交易信号页面
- 系统建立 WebSocket 连接
- 系统订阅交易信号推送
- 实时接收并展示信号
- 用户可以筛选、排序、查看详情
2.2.2 信号详情
功能描述: 展示信号的详细信息。
功能点:
-
基本信息:
- 信号 ID
- 信号类型(买入/卖出)
- 策略名称
- 生成时间
-
市场信息:
- 市场 ID
- 市场标题
- 市场描述
- 市场分类
-
交易信息:
- 方向(YES/NO)
- 价格
- 数量
- 总金额
-
触发信息:
- 触发原因(详细说明)
- 触发条件(展示满足的条件)
- 触发时的比赛数据(分差、剩余时间等)
-
执行信息:
- 执行状态
- 执行结果
- 执行时间
- 错误信息(如果执行失败)
交互流程:
- 用户在信号列表中点击某个信号
- 弹出信号详情对话框
- 展示信号的详细信息
- 用户可以关闭对话框
2.3 结果统计
2.3.1 策略统计
功能描述: 展示每个策略的统计信息。
功能点:
-
统计指标:
- 信号总数:该策略生成的信号总数
- 买入信号数:买入信号数量
- 卖出信号数:卖出信号数量
- 成功率:执行成功的信号占比
- 总盈亏:该策略的总盈亏金额
- 平均盈亏:平均每个信号的盈亏金额
-
时间维度:
- 今日统计
- 本周统计
- 本月统计
- 全部统计
-
可视化展示:
- 使用图表展示统计趋势
- 使用饼图展示信号类型分布
- 使用柱状图展示每日信号数量
交互流程:
- 用户进入策略统计页面
- 系统加载策略列表和统计信息
- 用户选择某个策略查看详细统计
- 用户可以切换时间维度查看不同时期的统计
2.3.2 总体统计
功能描述: 展示所有策略的总体统计信息。
功能点:
-
总体指标:
- 总策略数:启用的策略数量
- 总信号数:所有策略生成的信号总数
- 总成功率:所有信号的平均成功率
- 总盈亏:所有策略的总盈亏金额
- 平均盈亏:平均每个信号的盈亏金额
-
趋势分析:
- 信号数量趋势(按日/周/月)
- 成功率趋势(按日/周/月)
- 盈亏趋势(按日/周/月)
-
排行榜:
- 信号数量排行榜(按策略)
- 成功率排行榜(按策略)
- 盈亏排行榜(按策略)
交互流程:
- 用户进入总体统计页面
- 系统加载总体统计信息
- 用户可以查看趋势图表和排行榜
- 用户可以切换时间维度查看不同时期的统计
2.4 NBA 数据展示(可选功能)
2.4.1 比赛数据展示
功能描述: 展示 NBA 比赛的实时数据。
功能点:
-
比赛列表:
- 展示今日/本周/本月的比赛
- 显示比赛状态(未开始/进行中/已结束)
- 显示比分和分差
-
比赛详情:
- 比赛基本信息(日期、主客场、比分等)
- 实时比分和分差
- 当前节次和剩余时间
- Play-by-Play 数据
交互流程:
- 用户进入 NBA 数据页面
- 系统加载比赛列表
- 用户可以查看比赛详情
- 实时更新比赛数据(如果比赛正在进行)
三、用户场景
3.1 场景一:创建量化策略
用户:量化交易爱好者
场景描述: 用户希望创建一个量化策略,系统自动分析比赛的两支队伍,根据综合评分和获胜概率,选择可盈利的队伍进行买入。
操作流程:
- 用户登录系统,进入策略配置页面
- 点击"创建策略"按钮
- 填写策略名称:"综合实力分析策略"
- 选择关联账户
- 配置触发条件:
- 比赛筛选:选择关注的比赛(可按球队、日期筛选)
- 数据指标选择:选择用于分析的指标
- 基础指标:分差、剩余时间、当前节次
- 统计指标:球队净效率值、球员PER、真实命中率
- 高级指标:势头动量、球星爆发因子、阵容对位系数
- 触发阈值设置:
- 最小获胜概率差异:0.1(主队和客队获胜概率差异至少 10%)
- 最小交易价值:0.05(交易价值评分至少 0.05)
- 配置买入规则:
- 买入条件:当系统计算出某支队伍获胜概率明显高于对手,且交易价值评分达到阈值时触发买入
- 买入金额:固定金额 10 USDC
- 买入方向:由系统自动判断(YES 或 NO,基于获胜概率)
- 价格策略:动态价格(基于获胜概率和市场情况)
- 配置风险控制:
- 最大持仓:50 USDC
- 最小持仓:5 USDC
- 每日亏损限制:100 USDC
- 点击"保存"按钮
- 系统验证配置并保存
- 策略创建成功,自动启用
预期结果:
- 策略创建成功并启用
- 系统开始监控 NBA 比赛数据
- 当满足条件时,自动生成买入信号
3.2 场景二:查看交易信号
用户:量化交易爱好者
场景描述: 用户希望实时查看系统生成的交易信号,了解策略的执行情况。
操作流程:
- 用户登录系统,进入交易信号页面
- 系统自动建立 WebSocket 连接
- 系统订阅交易信号推送
- 实时接收并展示新信号
- 用户可以查看信号详情:
- 点击某个信号,查看详细信息
- 查看触发原因和触发时的比赛数据
- 查看执行状态和结果
- 用户可以筛选信号:
- 按策略筛选:只查看特定策略的信号
- 按类型筛选:只查看买入或卖出信号
- 按状态筛选:只查看成功或失败的信号
预期结果:
- 实时接收并展示交易信号
- 可以查看信号的详细信息
- 可以按需筛选和排序信号
3.3 场景三:查看策略统计
用户:量化交易爱好者
场景描述: 用户希望查看策略的执行效果,了解策略的盈亏情况。
操作流程:
- 用户登录系统,进入策略统计页面
- 系统加载所有策略的统计信息
- 用户选择某个策略查看详细统计:
- 查看信号总数、成功率、总盈亏等指标
- 查看信号数量趋势图
- 查看盈亏趋势图
- 用户可以切换时间维度:
- 查看今日统计
- 查看本周统计
- 查看本月统计
- 查看全部统计
- 用户可以查看总体统计:
- 查看所有策略的总体指标
- 查看趋势分析图表
- 查看排行榜
预期结果:
- 清晰展示策略的执行效果
- 提供多维度的时间统计
- 帮助用户优化策略配置
四、界面设计说明
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 核心特性
-
简单易用:
- 直观的配置界面,降低使用门槛
- 清晰的步骤引导,帮助用户快速上手
- 丰富的帮助文档和示例
-
实时响应:
- 实时获取 NBA 比赛数据
- 实时执行量化分析
- 实时推送交易信号
-
数据驱动:
- 基于专业的 NBA 数据分析
- 支持多种数据指标和特征
- 提供数据可视化展示
-
风险可控:
- 完善的风险控制参数
- 自动风险检查机制
- 异常情况告警
6.2 扩展特性
-
策略模板:
- 提供预定义的策略模板
- 用户可以基于模板快速创建策略
- 支持模板的导入和导出
-
回测功能:
- 支持历史数据回测
- 评估策略的历史表现
- 优化策略参数
-
多账户支持:
- 支持多个交易账户
- 每个账户可以配置不同的策略
- 统一管理和监控
七、产品路线图
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 接口文档(待补充)
- 用户手册(待补充)
文档结束