# 📊 量化投资交易系统 - 产品需求文档

**文档版本**: v1.0  
**创建日期**: 2026-04-12  
**最后更新**: 2026-04-12  
**文档状态**: 已批准  
**密级**: 内部公开

---

## 一、文档概述

### 1.1 项目背景

随着中国资本市场的不断发展和投资者结构的日益成熟，量化投资作为一种基于数学模型和统计分析的投资方法，正逐渐受到个人投资者和机构投资者的重视。然而，现有的量化交易系统大多面向专业机构，门槛高、成本贵、复杂度大，普通投资者难以接触和使用。

本项目旨在构建一套**轻量级、易部署、可扩展**的量化投资交易系统，基于现有的股票监控系统、量化策略系统、模拟交易引擎和飞书通知系统，整合形成完整的量化投资解决方案。系统既可用于个人投资者的量化学习和实战演练，也可作为机构量化团队的快速原型验证平台。

**现有系统基础**（截至 2026-04-12）：
1. **股票监控系统** (8315 端口) - 实时行情监控、价格预警、板块行情
2. **量化策略系统** (quant_strategies) - 5 种经典策略、回测引擎 v1.1
3. **模拟交易引擎** (8320 端口) - 虚拟账户、订单系统、持仓管理
4. **飞书通知系统** - 预警消息推送

### 1.2 产品愿景

**打造中国领先的个人量化投资平台**，让每个投资者都能：
- 🎯 **零门槛入门** - 无需编程基础，可视化配置策略
- 📈 **科学决策** - 基于数据和模型，而非情绪和直觉
- 🛡️ **风险可控** - 完善的风控体系，保护本金安全
- 🚀 **快速迭代** - 策略开发 - 回测 - 模拟 - 实盘的完整闭环
- 💡 **持续学习** - 在实践中优化策略，积累投资经验

**核心价值主张**：
- **对个人投资者**：提供专业级的量化投资工具，降低学习成本
- **对量化爱好者**：提供策略开发和回测平台，加速策略迭代
- **对研究机构**：提供教学和研究工具，培养量化人才

### 1.3 目标用户

| 用户类型 | 特征描述 | 核心需求 | 使用场景 |
|---------|---------|---------|---------|
| **个人投资者** | 有一定投资经验，想尝试量化投资 | 简单易用、风险可控、收益稳定 | 日常投资、资产配置 |
| **量化爱好者** | 有编程基础，想开发自己的策略 | 策略开发、回测验证、实盘对接 | 策略研究、算法交易 |
| **金融专业学生** | 学习金融/统计/计算机相关专业 | 学习工具、实践平台、项目经验 | 课程作业、毕业设计 |
| **小型投资机构** | 资金规模 100 万 -1000 万 | 快速验证、低成本部署、合规支持 | 策略孵化、产品验证 |
| **投资顾问** | 为客户提供投资建议 | 数据分析、策略展示、绩效报告 | 客户服务、方案演示 |

### 1.4 使用场景

#### 场景 1：个人投资者的日常监控
> **用户**: 张先生，35 岁，IT 从业者，有 5 年炒股经验  
> **需求**: 监控股票价格，自动预警，避免错过买卖时机  
> **流程**:
> 1. 添加关注的股票（如兴业证券 601377）
> 2. 设置预警阈值（涨跌超过 3% 时通知）
> 3. 系统每 30 秒自动监控，触发预警时飞书推送
> 4. 查看历史预警记录，分析价格波动规律

#### 场景 2：量化爱好者的策略开发
> **用户**: 小李，25 岁，计算机专业研究生  
> **需求**: 开发双均线策略，验证有效性  
> **流程**:
> 1. 选择双均线策略模板
> 2. 设置参数（短期 5 日，长期 20 日）
> 3. 选择回测股票和时间范围（如 601377，2023-2025 年）
> 4. 运行回测，查看收益、夏普比率、最大回撤
> 5. 优化参数，对比不同参数组合的效果
> 6. 在模拟交易中运行策略，观察实盘表现

#### 场景 3：投资顾问的客户服务
> **用户**: 王经理，40 岁，投资顾问  
> **需求**: 为客户展示量化策略的绩效  
> **流程**:
> 1. 选择稳健型策略组合（多因子 + 布林带）
> 2. 生成回测报告（年化收益 15%，夏普 1.2，最大回撤 -8%）
> 3. 导出 PDF 报告，包含收益曲线、风险指标
> 4. 向客户展示，解释策略逻辑和风险控制

#### 场景 4：小型机构的策略孵化
> **用户**: 某投资公司，管理资金 500 万  
> **需求**: 快速验证新策略，筛选优质策略实盘  
> **流程**:
> 1. 投研团队开发 5 个候选策略
> 2. 在历史数据上回测，筛选夏普>1 的策略
> 3. 在模拟交易中运行 3 个月
> 4. 对比实盘和模拟的差异
> 5. 选择 2-3 个策略分配资金实盘
> 6. 持续监控，动态调整仓位

---

## 二、系统架构

### 2.1 整体架构

```
┌─────────────────────────────────────────────────────────────────┐
│                        量化投资交易系统                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                      应用层 (Application Layer)           │   │
│  │  ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌─────────┐ │   │
│  │  │ Web 监控   │ │ 策略管理  │ │ 模拟交易  │ │ 绩效报告│ │   │
│  │  │ 面板      │ │ 界面      │ │ 界面      │ │ 界面    │ │   │
│  │  │ :8315     │ │ :8316     │ │ :8320     │ │         │ │   │
│  │  └───────────┘ └───────────┘ └───────────┘ └─────────┘ │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              ↓                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                      API 网关层 (API Gateway)             │   │
│  │         统一认证 | 限流 | 日志 | 监控 | 路由              │   │
│  │                     (端口 8320 - 统一认证服务)             │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              ↓                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                    业务逻辑层 (Business Layer)            │   │
│  │  ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌─────────┐ │   │
│  │  │ 行情数据  │ │ 策略引擎  │ │ 交易引擎  │ │ 风控引擎│ │   │
│  │  │ 模块      │ │ 模块      │ │ 模块      │ │ 模块    │ │   │
│  │  └───────────┘ └───────────┘ └───────────┘ └─────────┘ │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              ↓                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                      数据层 (Data Layer)                  │   │
│  │  ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌─────────┐ │   │
│  │  │ MySQL     │ │ Redis     │ │ 文件系统  │ │ 消息队列│ │   │
│  │  │ :9001     │ │ :6379     │ │ /home/files│ │         │ │   │
│  │  │ 结构化数据 │ │ 缓存/会话 │ │ 日志/报告 │ │ 异步任务│ │   │
│  │  └───────────┘ └───────────┘ └───────────┘ └─────────┘ │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              ↓                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                    外部接口层 (External APIs)             │   │
│  │  ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌─────────┐ │   │
│  │  │ 东方财富  │ │ 新浪财经  │ │ 飞书推送  │ │ 券商 API│ │   │
│  │  │ 行情数据  │ │ 备用数据  │ │ 消息通知  │ │ (预留)  │ │   │
│  │  └───────────┘ └───────────┘ └───────────┘ └─────────┘ │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘
```

**架构说明**：
- **分层设计**：应用层、API 网关层、业务逻辑层、数据层、外部接口层，职责清晰
- **微服务架构**：各模块独立部署，通过 API 通信，便于扩展和维护
- **统一认证**：8320 端口提供 SSO 服务，所有应用共享登录状态
- **数据隔离**：不同业务使用不同数据库，避免单点故障
- **异步处理**：消息队列处理耗时任务（如回测、报告生成）

### 2.2 模块划分

| 模块名称 | 端口 | 职责描述 | 状态 |
|---------|------|---------|------|
| **行情数据模块** | 8315 | 实时行情获取、价格监控、预警触发、板块行情 | ✅ 已完成 |
| **策略管理模块** | 8316 | 策略库管理、参数配置、信号生成、策略组合 | ✅ 已完成 |
| **回测引擎模块** | 8316 | 历史数据回测、绩效计算、参数优化、报告生成 | ✅ 已完成 (v1.1) |
| **模拟交易模块** | 8320 | 虚拟账户、订单系统、持仓管理、交易撮合 | ✅ 已完成 |
| **实盘交易模块** | 预留 | 券商接口、订单执行、资金划转、对账清算 | ⬜ 规划中 |
| **风险控制模块** | 8320 | 仓位限制、止损止盈、风险指标、黑名单 | ✅ 部分完成 |
| **绩效评估模块** | 8316 | 收益分析、风险评估、归因分析、报表生成 | ✅ 部分完成 |
| **用户界面模块** | 8315/8320 | Web 监控面板、策略配置、交易界面、报表展示 | ✅ 部分完成 |
| **通知推送模块** | 8320 | 飞书推送、短信通知、邮件提醒、预警消息 | ✅ 已完成 |
| **统一认证模块** | 8320 | 用户登录、Session 管理、权限控制、Token 验证 | ✅ 已完成 |

### 2.3 技术栈

#### 后端技术栈

| 技术 | 选型 | 理由 | 版本 |
|------|------|------|------|
| **编程语言** | Python 3.9+ | 生态丰富、开发效率高、量化库完善 | 3.9+ |
| **Web 框架** | Flask 3.0 | 轻量级、易扩展、适合微服务 | 3.0.0 |
| **数据库** | MySQL 8.0 | 成熟稳定、支持事务、易于维护 | 8.0 |
| **缓存** | Redis 6.0 | 高性能、支持 Session、消息队列 | 6.2 |
| **数据处理** | Pandas + NumPy | 量化分析标准库、性能优秀 | Latest |
| **技术指标** | TA-Lib | 专业技术指标库、覆盖全面 | Latest |
| **回测框架** | 自研 | 贴合业务需求、可控性强 | v1.1 |
| **任务队列** | Celery | 异步任务、定时任务、分布式 | Latest |

#### 前端技术栈

| 技术 | 选型 | 理由 | 版本 |
|------|------|------|------|
| **前端框架** | 原生 HTML/JS | 轻量、无需构建、快速开发 | - |
| **图表库** | Chart.js | 交互式图表、易上手、美观 | 4.x |
| **UI 框架** | Bootstrap 5 | 响应式、组件丰富、主题多 | 5.x |
| **HTTP 客户端** | Axios | 简洁、支持拦截器、Promise | Latest |

#### 运维技术栈

| 技术 | 选型 | 理由 | 版本 |
|------|------|------|------|
| **Web 服务器** | Gunicorn | Python WSGI 服务器、稳定可靠 | Latest |
| **反向代理** | Nginx | 高性能、SSL 终止、负载均衡 | 1.24+ |
| **进程管理** | systemd | Linux 原生、自动重启、日志管理 | - |
| **监控告警** | 自研脚本 | 贴合业务、灵活配置 | - |
| **日志管理** | 文件日志 + 轮转 | 简单可靠、易于排查 | - |

#### 部署架构

```
┌─────────────────────────────────────────────────────────┐
│                    生产环境部署                          │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  ┌─────────────────────────────────────────────────┐   │
│  │              Nginx (反向代理 + SSL)              │   │
│  │              https://ebankofdata.online         │   │
│  └─────────────────────────────────────────────────┘   │
│                          ↓                              │
│  ┌─────────────┬─────────────┬─────────────┬─────────┐ │
│  │ 股票监控    │ 量化策略    │ 模拟交易    │ 文件浏览 │ │
│  │ :8315       │ :8316       │ :8320       │ :8312   │ │
│  │ Gunicorn×4  │ Gunicorn×4  │ Gunicorn×4  │ Gunicorn×4│ │
│  └─────────────┴─────────────┴─────────────┴─────────┘ │
│                          ↓                              │
│  ┌─────────────────────────────────────────────────┐   │
│  │              MySQL (:9001) + Redis              │   │
│  │              数据持久化 + 缓存                  │   │
│  └─────────────────────────────────────────────────┘   │
│                                                         │
└─────────────────────────────────────────────────────────┘
```

### 2.4 数据流转

```
┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│  外部数据源   │    │   内部模块    │    │   用户界面    │
│  (东方财富等) │    │  (业务逻辑)   │    │  (Web/API)   │
└──────┬───────┘    └──────┬───────┘    └──────┬───────┘
       │                   │                   │
       │ 1. 行情数据        │                   │
       │──────────────────►│                   │
       │ (REST API)        │                   │
       │                   │                   │
       │                   │ 2. 存储 + 计算     │
       │                   │──────────────────►│
       │                   │ (MySQL/Redis)     │
       │                   │                   │
       │                   │ 3. 策略信号        │
       │                   │◄──────────────────│
       │                   │ (用户配置)        │
       │                   │                   │
       │                   │ 4. 交易指令        │
       │                   │──────────────────►│
       │                   │ (买入/卖出)       │
       │                   │                   │
       │                   │ 5. 执行结果        │
       │                   │◄──────────────────│
       │                   │ (成交/持仓)       │
       │                   │                   │
       │ 6. 预警通知        │                   │
       │◄──────────────────│                   │
       │ (飞书/短信)       │                   │
       │                   │                   │
```

**数据流说明**：
1. **行情数据获取**：从东方财富 API 获取实时行情，每 30 秒更新
2. **数据存储与计算**：行情存入 MySQL，同时计算技术指标、触发预警
3. **策略信号生成**：根据用户配置的策略参数，生成买卖信号
4. **交易指令执行**：模拟交易引擎接收信号，执行买卖操作
5. **执行结果反馈**：更新持仓、计算盈亏、记录成交
6. **预警通知推送**：触发预警时，通过飞书推送通知用户

---

## 三、功能需求

### 3.1 行情数据模块

#### 3.1.1 功能描述

提供实时股票行情获取、存储、查询和预警功能，是量化交易系统的数据基础。

#### 3.1.2 功能列表

| 功能编号 | 功能名称 | 功能描述 | 优先级 | 状态 |
|---------|---------|---------|--------|------|
| FQ-001 | 实时行情获取 | 从东方财富 API 获取股票实时行情 | P0 | ✅ |
| FQ-002 | 历史 K 线查询 | 查询指定股票的历史 K 线数据 | P0 | ✅ |
| FQ-003 | 板块行情监控 | 获取行业/概念/地区板块行情 | P1 | ✅ |
| FQ-004 | 价格预警 | 涨跌幅超过阈值时触发预警 | P0 | ✅ |
| FQ-005 | 预警记录 | 记录所有预警历史，支持查询 | P1 | ✅ |
| FQ-006 | 行情数据持久化 | 将行情数据存入 MySQL 数据库 | P0 | ✅ |
| FQ-007 | 多股票监控 | 同时监控多只股票（≤50 只） | P1 | ✅ |
| FQ-008 | 自定义监控间隔 | 可配置监控更新频率（≥30 秒） | P2 | ✅ |

#### 3.1.3 详细需求

**FQ-001 实时行情获取**
- **输入**：股票代码列表（如 ["601377", "000001"]）
- **处理**：调用东方财富 API 获取实时行情
- **输出**：行情数据（价格、涨跌幅、成交量等）
- **性能**：单次请求<3 秒，支持并发获取
- **验收标准**：
  - 能正确获取 A 股、港股、美股行情
  - 数据字段完整（价格、涨跌幅、成交量、成交额等）
  - 错误处理完善（网络异常、数据源不可用）

**FQ-002 历史 K 线查询**
- **输入**：股票代码、天数（默认 10 天，最大 365 天）
- **处理**：调用东方财富 API 获取历史 K 线
- **输出**：K 线数据列表（开高低收、成交量）
- **性能**：单次请求<5 秒
- **验收标准**：
  - 支持日 K、周 K、月 K
  - 数据按时间倒序排列
  - 支持复权数据（前复权、后复权）

**FQ-003 板块行情监控**
- **输入**：板块类型（行业/概念/地区）、排序方式
- **处理**：获取板块行情数据，按涨跌幅排序
- **输出**：板块列表（代码、名称、涨跌幅、领涨股）
- **性能**：单次请求<5 秒
- **验收标准**：
  - 支持 231 个板块（行业 100+ 概念 100+ 地区 31）
  - 支持按涨跌幅排序（领涨/领跌）
  - 显示领涨股及其涨幅

**FQ-004 价格预警**
- **输入**：股票代码、预警阈值（如 3%）
- **处理**：实时监控涨跌幅，超过阈值触发预警
- **输出**：预警消息（股票、价格、涨跌幅、时间）
- **性能**：预警延迟<1 分钟
- **验收标准**：
  - 支持自定义阈值（每只股票独立配置）
  - 支持大涨和大跌两种预警类型
  - 避免重复预警（同一股票 5 分钟内不重复）

**FQ-005 预警记录**
- **输入**：查询条件（时间范围、股票代码、预警类型）
- **处理**：从数据库查询预警记录
- **输出**：预警记录列表
- **性能**：查询响应<2 秒
- **验收标准**：
  - 支持分页查询（每页 50 条）
  - 支持按时间、股票、类型筛选
  - 支持导出 CSV/Excel

#### 3.1.4 接口定义

```python
# 获取实时行情
GET /api/quotes?code=601377

# 获取历史 K 线
GET /api/history/{code}?days=30

# 获取板块行情
GET /api/sectors?type=industry&sort=change_pct&limit=20

# 添加监控股票
POST /api/config
{
    "code": "601377",
    "name": "兴业证券",
    "alert_threshold": 3.0,
    "enabled": 1
}

# 获取预警记录
GET /api/alerts?code=601377&limit=50
```

### 3.2 策略管理模块

#### 3.2.1 功能描述

提供策略库管理、参数配置、信号生成和策略组合功能，是量化交易系统的核心。

#### 3.2.2 功能列表

| 功能编号 | 功能名称 | 功能描述 | 优先级 | 状态 |
|---------|---------|---------|--------|------|
| FS-001 | 策略库管理 | 管理内置策略（双均线/MACD/RSI 等） | P0 | ✅ |
| FS-002 | 策略参数配置 | 配置策略参数（如均线周期、RSI 阈值） | P0 | ✅ |
| FS-003 | 信号生成 | 根据策略和行情生成买卖信号 | P0 | ✅ |
| FS-004 | 多策略对比 | 对比多个策略的收益和风险指标 | P1 | ✅ |
| FS-005 | 策略组合 | 组合多个策略，分配权重 | P2 | ⬜ |
| FS-006 | 自定义策略 | 支持用户编写 Python 策略代码 | P2 | ⬜ |
| FS-007 | 策略版本管理 | 策略代码版本控制和回滚 | P3 | ⬜ |

#### 3.2.3 详细需求

**FS-001 策略库管理**
- **功能**：提供 5 种经典策略
  - 双均线策略（趋势跟踪）
  - MACD 策略（趋势 + 动量）
  - RSI 策略（均值回归）
  - 布林带策略（均值回归）
  - 多因子策略（综合策略）
- **验收标准**：
  - 每种策略有详细说明和适用场景
  - 策略代码经过测试，无 bug
  - 策略文档完整（原理、参数、示例）

**FS-002 策略参数配置**
- **功能**：支持配置策略参数
  - 双均线：短期周期、长期周期
  - MACD：快周期、慢周期、信号周期
  - RSI：周期、超买阈值、超卖阈值
  - 布林带：周期、标准差倍数
  - 多因子：因子权重、选股数量
- **验收标准**：
  - 参数有合理默认值
  - 参数有范围限制（如周期>0）
  - 参数修改后即时生效

**FS-003 信号生成**
- **功能**：根据策略和最新行情生成信号
  - 信号类型：买入、卖出、持有
  - 信号强度：强、中、弱
  - 信号原因：金叉、超卖、突破等
- **验收标准**：
  - 信号生成延迟<1 分钟
  - 信号准确（与策略逻辑一致）
  - 信号可解释（有明确原因）

**FS-004 多策略对比**
- **功能**：对比多个策略的绩效指标
  - 收益指标：总收益、年化收益
  - 风险指标：最大回撤、波动率
  - 风险调整收益：夏普比率、卡尔玛比率
- **验收标准**：
  - 支持同时对比≤10 个策略
  - 可视化展示（表格 + 图表）
  - 支持导出对比报告

#### 3.2.4 接口定义

```python
# 获取策略列表
GET /api/strategies

# 获取策略详情
GET /api/strategies/{strategy_id}

# 生成交易信号
POST /api/signals/generate
{
    "strategy_id": "dual_ma",
    "stock_code": "601377",
    "params": {"short_window": 5, "long_window": 20}
}

# 多策略对比
POST /api/strategies/compare
{
    "strategies": [
        {"id": "dual_ma", "params": {...}},
        {"id": "macd", "params": {...}}
    ],
    "stock_code": "601377",
    "start_date": "2023-01-01",
    "end_date": "2025-12-31"
}
```

### 3.3 回测引擎模块

#### 3.3.1 功能描述

提供历史数据回测、绩效计算、参数优化和报告生成功能，用于验证策略有效性。

#### 3.3.2 功能列表

| 功能编号 | 功能名称 | 功能描述 | 优先级 | 状态 |
|---------|---------|---------|--------|------|
| FB-001 | 历史数据回测 | 在历史数据上运行策略 | P0 | ✅ |
| FB-002 | 绩效指标计算 | 计算收益、风险、风险调整收益等指标 | P0 | ✅ |
| FB-003 | 交易成本模型 | 计算手续费、印花税、滑点 | P0 | ✅ |
| FB-004 | 仓位管理 | 支持部分仓位、加仓/减仓 | P1 | ✅ |
| FB-005 | 参数优化 | 网格搜索最优参数组合 | P2 | ⬜ |
| FB-006 | 回测报告生成 | 生成 PDF/HTML 回测报告 | P1 | ⬜ |
| FB-007 | 多股票回测 | 同时对多只股票回测 | P2 | ⬜ |

#### 3.3.3 详细需求

**FB-001 历史数据回测**
- **输入**：策略、股票、时间范围、初始资金
- **处理**：模拟历史交易，记录每笔成交
- **输出**：回测结果（收益曲线、交易记录、指标）
- **性能**：单次回测（3 年数据）<30 秒
- **验收标准**：
  - 回测结果准确（与手工计算一致）
  - 支持日频数据
  - 支持复权数据

**FB-002 绩效指标计算**
- **指标**：
  - 收益指标：总收益率、年化收益率
  - 风险指标：波动率、最大回撤
  - 风险调整收益：夏普比率、索提诺比率、卡尔玛比率
  - 交易统计：胜率、盈亏比、交易次数
- **验收标准**：
  - 指标计算公式正确
  - 指标与行业标准一致
  - 指标可解释（有文字说明）

**FB-003 交易成本模型**
- **成本类型**：
  - 手续费：万 2.5（最低 5 元）
  - 印花税：1‰（仅卖出）
  - 滑点：0.1%（模拟实际成交偏差）
- **验收标准**：
  - 成本计算准确
  - 成本可配置
  - 成本在回测中扣除

**FB-004 仓位管理**
- **功能**：
  - 支持部分仓位（如 50%、75%）
  - 支持加仓（加权平均成本）
  - 支持减仓（先进先出）
- **验收标准**：
  - 仓位计算准确
  - 成本计算正确
  - 支持仓位限制

#### 3.3.4 接口定义

```python
# 运行回测
POST /api/backtest/run
{
    "strategy_id": "dual_ma",
    "stock_code": "601377",
    "start_date": "2023-01-01",
    "end_date": "2025-12-31",
    "initial_capital": 100000,
    "params": {"short_window": 5, "long_window": 20},
    "commission_rate": 0.00025,
    "tax_rate": 0.001,
    "slippage_rate": 0.001,
    "position_ratio": 1.0
}

# 获取回测结果
GET /api/backtest/{backtest_id}/result

# 参数优化
POST /api/backtest/optimize
{
    "strategy_id": "dual_ma",
    "stock_code": "601377",
    "param_grid": {
        "short_window": [5, 10, 20],
        "long_window": [20, 30, 60]
    }
}
```

### 3.4 模拟交易模块

#### 3.4.1 功能描述

提供虚拟账户、订单系统、持仓管理和交易撮合功能，用于在真实环境中验证策略。

#### 3.4.2 功能列表

| 功能编号 | 功能名称 | 功能描述 | 优先级 | 状态 |
|---------|---------|---------|--------|------|
| FM-001 | 账户管理 | 创建账户、查询账户、资金划转 | P0 | ✅ |
| FM-002 | 订单系统 | 下单、撤单、查询订单 | P0 | ✅ |
| FM-003 | 持仓管理 | 查询持仓、计算盈亏 | P0 | ✅ |
| FM-004 | 交易撮合 | 市价单/限价单撮合 | P0 | ✅ |
| FM-005 | 成交记录 | 查询历史成交 | P1 | ✅ |
| FM-006 | 自动交易 | 根据策略信号自动下单 | P2 | ⬜ |
| FM-007 | 多账户支持 | 支持多个模拟账户 | P2 | ✅ |

#### 3.4.3 详细需求

**FM-001 账户管理**
- **功能**：
  - 创建账户（可配置初始资金，默认 100 万）
  - 查询账户（可用资金、持仓市值、总净值）
  - 资金划转（入金、出金）
- **验收标准**：
  - 账户 ID 唯一
  - 资金计算准确
  - 支持并发操作（事务控制）

**FM-002 订单系统**
- **订单类型**：
  - 市价单：按当前市场价立即成交
  - 限价单：价格达到限价时成交
- **订单状态**：
  - 已提交、部分成交、完全成交、已撤销、已拒绝
- **验收标准**：
  - 订单状态流转正确
  - 支持撤单（未成交部分）
  - 订单有唯一 ID

**FM-003 持仓管理**
- **功能**：
  - 查询持仓（代码、数量、成本价、当前价、盈亏）
  - 持仓更新（买入加仓、卖出减仓）
  - 加权平均成本计算
- **验收标准**：
  - 持仓数据准确
  - 成本计算正确（加权平均）
  - 盈亏计算准确（浮动 + 已实现）

**FM-004 交易撮合**
- **功能**：
  - 复用股票监控系统实时行情
  - 市价单：按当前价成交
  - 限价单：价格达到限价时成交
- **验收标准**：
  - 撮合逻辑正确
  - 成交价格合理
  - 支持部分成交

#### 3.4.4 接口定义

```python
# 创建账户
POST /api/sim/account/create
{
    "initial_capital": 1000000
}

# 查询账户
GET /api/sim/account/{account_id}

# 下单交易
POST /api/sim/order
{
    "account_id": "abc123",
    "stock_code": "601377",
    "direction": "buy",
    "order_type": "market",
    "price": 8.50,  # 限价单必填
    "quantity": 1000
}

# 查询持仓
GET /api/sim/position?account_id={account_id}&stock_code={stock_code}

# 查询成交记录
GET /api/sim/trades?account_id={account_id}&limit=100
```

### 3.5 实盘交易模块（预留）

#### 3.5.1 功能描述

对接券商 API，实现真实资金交易，是量化交易系统的最终目标。

#### 3.5.2 功能列表

| 功能编号 | 功能名称 | 功能描述 | 优先级 | 状态 |
|---------|---------|---------|--------|------|
| FL-001 | 券商接口对接 | 对接华泰/中信/东财等券商 API | P1 | ⬜ |
| FL-002 | 实盘订单执行 | 下达真实订单到券商 | P1 | ⬜ |
| FL-003 | 资金划转 | 银证转账、资金调拨 | P2 | ⬜ |
| FL-004 | 对账清算 | 每日对账、确保账实相符 | P1 | ⬜ |
| FL-005 | 合规检查 | 交易合规性检查 | P1 | ⬜ |

#### 3.5.3 详细需求

**FL-001 券商接口对接**
- **支持券商**：华泰证券、中信证券、东方财富、盈透证券
- **接口功能**：
  - 账户信息查询
  - 实时行情订阅
  - 订单下达/撤销
  - 成交查询
  - 资金划转
- **验收标准**：
  - 接口稳定可靠
  - 错误处理完善
  - 符合券商规范

**FL-002 实盘订单执行**
- **功能**：
  - 接收策略信号
  - 风控检查
  - 下达订单到券商
  - 确认成交
- **验收标准**：
  - 订单执行延迟<1 秒
  - 支持异常处理（网络中断、券商系统故障）
  - 有完整的交易日志

### 3.6 风险控制模块

#### 3.6.1 功能描述

提供仓位限制、止损止盈、风险指标监控和黑名单功能，保护投资安全。

#### 3.6.2 功能列表

| 功能编号 | 功能名称 | 功能描述 | 优先级 | 状态 |
|---------|---------|---------|--------|------|
| FR-001 | 仓位限制 | 单只股票/单一行业最大仓位 | P0 | ✅ |
| FR-002 | 止损止盈 | 自动止损止盈 | P1 | ⬜ |
| FR-003 | 风险指标监控 | VaR、Beta、波动率等 | P2 | ⬜ |
| FR-004 | 黑名单机制 | 禁止交易的股票列表 | P1 | ⬜ |
| FR-005 | 异常交易检测 | 检测异常交易行为 | P2 | ⬜ |

#### 3.6.3 详细需求

**FR-001 仓位限制**
- **规则**：
  - 单只股票 ≤ 20% 总资金
  - 单一行业 ≤ 30% 总资金
  - 现金比例 ≥ 10%
- **验收标准**：
  - 下单前检查仓位
  - 超限订单拒绝
  - 有明确提示

**FR-002 止损止盈**
- **止损方式**：
  - 固定比例止损（亏损 10% 止损）
  - 移动止损（从最高点回撤 N%）
  - 技术位止损（跌破支撑位）
- **止盈方式**：
  - 目标价位止盈
  - 移动止盈
  - 分批止盈
- **验收标准**：
  - 止损止盈自动触发
  - 支持多种止损方式
  - 可配置参数

### 3.7 绩效评估模块

#### 3.7.1 功能描述

提供收益分析、风险评估、归因分析和报表生成功能，用于评估策略表现。

#### 3.7.2 功能列表

| 功能编号 | 功能名称 | 功能描述 | 优先级 | 状态 |
|---------|---------|---------|--------|------|
| FP-001 | 收益分析 | 绝对收益、相对收益、超额收益 | P0 | ✅ |
| FP-002 | 风险评估 | 波动率、最大回撤、VaR | P1 | ✅ |
| FP-003 | 风险调整收益 | 夏普比率、索提诺比率、卡尔玛比率 | P0 | ✅ |
| FP-004 | 归因分析 | 收益归因（市场/行业/个股） | P2 | ⬜ |
| FP-005 | 报表生成 | PDF/Excel 绩效报告 | P1 | ⬜ |

#### 3.7.3 详细需求

**FP-001 收益分析**
- **指标**：
  - 总收益率
  - 年化收益率
  - 超额收益（相对基准）
  - 月度收益分布
- **验收标准**：
  - 指标计算准确
  - 支持自定义基准（如沪深 300）
  - 可视化展示

**FP-002 风险评估**
- **指标**：
  - 波动率（年化）
  - 最大回撤
  - VaR（95% 置信度）
  - 下行波动率
- **验收标准**：
  - 指标计算准确
  - 符合行业标准
  - 有文字解释

### 3.8 用户界面模块

#### 3.8.1 功能描述

提供 Web 监控面板、策略配置、交易界面和报表展示，是用户与系统交互的窗口。

#### 3.8.2 功能列表

| 功能编号 | 功能名称 | 功能描述 | 优先级 | 状态 |
|---------|---------|---------|--------|------|
| FU-001 | 行情监控面板 | 实时行情、价格走势图 | P0 | ✅ |
| FU-002 | 策略配置界面 | 策略选择、参数配置 | P0 | ✅ |
| FU-003 | 模拟交易界面 | 账户信息、持仓、订单 | P0 | ✅ |
| FU-004 | 回测结果展示 | 收益曲线、绩效指标 | P1 | ✅ |
| FU-005 | 报表导出 | PDF/Excel 报告导出 | P2 | ⬜ |
| FU-006 | 移动端适配 | 响应式设计，支持手机 | P1 | ✅ |

#### 3.8.3 详细需求

**FU-001 行情监控面板**
- **功能**：
  - 实时行情列表（价格、涨跌幅、更新时间）
  - 价格走势图（Chart.js 交互式图表）
  - 预警记录展示
  - 板块行情排行
- **验收标准**：
  - 数据每 30 秒自动刷新
  - 图表交互流畅
  - 响应式设计

**FU-002 策略配置界面**
- **功能**：
  - 策略列表（名称、描述、适用场景）
  - 参数配置表单
  - 策略保存和加载
- **验收标准**：
  - 界面友好
  - 参数有默认值和提示
  - 配置即时生效

---

## 四、非功能需求

### 4.1 性能要求

| 指标 | 要求 | 说明 |
|------|------|------|
| **响应时间** | API 响应<2 秒 | 95% 的请求在 2 秒内完成 |
| **并发量** | 支持 100 并发用户 | 同时在线用户≤100 |
| **行情更新** | 延迟<30 秒 | 从数据源到系统展示的延迟 |
| **预警延迟** | <1 分钟 | 从触发到通知的延迟 |
| **回测速度** | 3 年数据<30 秒 | 单只股票日频回测 |
| **数据库查询** | <1 秒 | 简单查询响应时间 |

### 4.2 可靠性要求

| 指标 | 要求 | 说明 |
|------|------|------|
| **可用性** | 99.5% | 全年停机时间<44 小时 |
| **容错** | 单点故障不影响核心功能 | 关键服务有备份 |
| **数据持久化** | 交易数据不丢失 | 数据库事务 + 定期备份 |
| **自动恢复** | 服务崩溃后 10 秒内重启 | systemd 自动重启 |
| **监控告警** | 服务异常 5 分钟内通知 | 飞书推送告警 |

### 4.3 安全性要求

| 要求 | 说明 | 实现方式 |
|------|------|---------|
| **数据加密** | 敏感数据加密存储 | 密码哈希、SSL 传输 |
| **权限控制** | 用户只能访问自己的数据 | Session 认证、权限校验 |
| **防 SQL 注入** | 防止 SQL 注入攻击 | 参数化查询 |
| **防 XSS 攻击** | 防止跨站脚本攻击 | 输入过滤、输出转义 |
| **访问日志** | 记录所有访问日志 | 便于审计和排查 |
| **定期备份** | 数据库每日备份 | 备份保留 30 天 |

### 4.4 可扩展性要求

| 要求 | 说明 | 实现方式 |
|------|------|---------|
| **模块化设计** | 各模块独立部署 | 微服务架构 |
| **水平扩展** | 支持增加服务器 | 负载均衡 |
| **插件机制** | 支持自定义策略 | 策略接口标准化 |
| **API 标准化** | 便于第三方集成 | RESTful API |
| **配置化** | 减少代码修改 | 配置文件 + 环境变量 |

---

## 五、数据需求

### 5.1 数据来源

| 数据类型 | 数据源 | 更新频率 | 成本 |
|---------|--------|---------|------|
| **实时行情** | 东方财富 API | 实时 | 免费 |
| **历史 K 线** | 东方财富 API | 按需 | 免费 |
| **财务数据** | 东方财富 API | 季报 | 免费 |
| **板块行情** | 东方财富 API | 实时 | 免费 |
| **北向资金** | 东方财富 API | 日频 | 免费 |
| **宏观数据** | 国家统计局 | 月频 | 免费 |

### 5.2 数据类型

| 数据类型 | 字段示例 | 用途 |
|---------|---------|------|
| **行情数据** | 代码、名称、价格、涨跌幅、成交量 | 实时监控、预警 |
| **K 线数据** | 开高低收、成交量、成交额 | 回测、技术分析 |
| **财务数据** | PE、PB、ROE、EPS、营收增长 | 选股、多因子策略 |
| **资金流向** | 主力流入、北向资金 | 情绪分析 |
| **板块数据** | 板块代码、名称、涨跌幅、领涨股 | 板块轮动策略 |

### 5.3 数据存储

| 数据类型 | 存储方式 | 数据库 | 保留期限 |
|---------|---------|--------|---------|
| **实时行情** | MySQL | stock_monitor 库 | 90 天 |
| **历史 K 线** | MySQL | stock_monitor 库 | 永久 |
| **财务数据** | MySQL | stock_monitor 库 | 永久 |
| **交易记录** | MySQL | sim_trading 库 | 永久 |
| **Session** | Redis | - | 1 小时 |
| **日志文件** | 文件系统 | /var/log | 30 天 |

### 5.4 数据更新频率

| 数据类型 | 更新频率 | 更新时间 |
|---------|---------|---------|
| **实时行情** | 每 30 秒 | 交易时段 9:30-15:00 |
| **板块行情** | 手动/定时 | 交易时段 |
| **财务数据** | 季报发布后 | 不定期 |
| **宏观数据** | 月频 | 每月中旬 |

---

## 六、接口需求

### 6.1 内部接口（模块间 API）

| 接口 | 调用方 | 被调用方 | 说明 |
|------|--------|---------|------|
| **行情查询** | 策略引擎、模拟交易 | 行情模块 | 获取实时股价 |
| **信号生成** | 模拟交易 | 策略引擎 | 获取买卖信号 |
| **订单执行** | 策略引擎 | 模拟交易 | 执行交易指令 |
| **风控检查** | 模拟交易 | 风控模块 | 检查仓位限制 |
| **通知推送** | 行情模块、风控模块 | 通知模块 | 发送预警消息 |

### 6.2 外部接口（数据源、券商等）

| 接口 | 提供方 | 用途 | 状态 |
|------|--------|------|------|
| **东方财富行情 API** | 东方财富 | 获取实时行情 | ✅ 已对接 |
| **东方财富 K 线 API** | 东方财富 | 获取历史 K 线 | ✅ 已对接 |
| **飞书推送 API** | 飞书 | 发送预警消息 | ✅ 已对接 |
| **券商交易 API** | 华泰/中信等 | 实盘交易 | ⬜ 规划中 |

### 6.3 用户接口（Web、API）

#### Web 界面

| 页面 | URL | 说明 |
|------|-----|------|
| **行情监控** | https://ebankofdata.online/stocks | 实时行情、预警 |
| **策略管理** | https://ebankofdata.online/strategies | 策略配置、回测 |
| **模拟交易** | https://ebankofdata.online/trading | 账户、持仓、订单 |
| **文件浏览** | https://ebankofdata.online/files | 文件管理 |
| **待办事项** | https://ebankofdata.online/todo | 任务管理 |
| **血压记录** | https://ebankofdata.online | 健康管理 |

#### API 接口

| 接口类别 | 基础路径 | 说明 |
|---------|---------|------|
| **行情 API** | /api/quotes, /api/history | 行情查询 |
| **策略 API** | /api/strategies, /api/signals | 策略管理 |
| **回测 API** | /api/backtest | 回测运行 |
| **交易 API** | /api/sim/order, /api/sim/position | 模拟交易 |
| **认证 API** | /api/token, /api/session | 统一认证 |

---

## 七、实施计划

### 7.1 阶段划分

#### 阶段一：数据增强 + 策略回测（2026-04-05 至 2026-04-19）✅

**目标**：在现有监控系统基础上，增加数据维度和策略回测能力

**已完成**：
- ✅ 股票监控系统（8315 端口）- 实时行情、预警、板块行情
- ✅ 量化策略系统（quant_strategies）- 5 种策略、回测引擎 v1.1
- ✅ 交易成本模型 - 手续费、印花税、滑点
- ✅ 仓位管理 - 部分仓位、加仓/减仓
- ✅ 绩效指标 - 夏普比率、最大回撤、胜率等

**进行中**：
- ⬜ 财务数据获取 - PE/PB/ROE 等指标
- ⬜ 策略参数优化 - 网格搜索最优参数

**交付物**：
- 策略库代码（strategies.py）
- 回测引擎代码（backtester.py）
- 回测报告模板

#### 阶段二：模拟交易 + 风险评估（2026-04-19 至 2026-05-10）

**目标**：在真实环境中验证策略，但不使用真实资金

**计划任务**：
- ✅ 模拟交易系统（8320 端口）- 账户、订单、持仓
- ⬜ 风险评估系统 - VaR、Beta、波动率
- ⬜ 绩效评估报告 - 收益分析、归因分析
- ⬜ 自动交易 - 根据策略信号自动下单

**交付物**：
- 模拟交易引擎代码
- 风险评估模块
- 绩效报告模板

#### 阶段三：实盘交易 + 自动化（2026-05-10 至 2026-06-01）

**目标**：小资金实盘验证，逐步实现自动化

**计划任务**：
- ⬜ 券商接口对接 - 华泰/中信 API
- ⬜ 自动化交易 - 策略调度、订单管理
- ⬜ 监控告警系统 - 系统状态、策略执行
- ⬜ 合规检查 - 交易合规性

**交付物**：
- 实盘交易接口
- 自动化交易系统
- 监控告警脚本

### 7.2 优先级排序

| 优先级 | 功能模块 | 说明 |
|--------|---------|------|
| **P0** | 行情数据、策略管理、模拟交易 | 核心功能，必须完成 |
| **P1** | 回测引擎、风险控制、绩效评估 | 重要功能，优先完成 |
| **P2** | 实盘交易、参数优化、报表导出 | 增值功能，后续完成 |
| **P3** | 自定义策略、策略版本管理 | 高级功能，可选完成 |

### 7.3 时间估算

| 任务 | 工时（人天） | 依赖 |
|------|------------|------|
| 财务数据获取 | 3 天 | 行情模块 |
| 策略参数优化 | 5 天 | 回测引擎 |
| 风险评估系统 | 5 天 | 模拟交易 |
| 绩效报告生成 | 3 天 | 回测引擎 |
| 券商接口对接 | 10 天 | 模拟交易 |
| 自动化交易 | 7 天 | 券商接口 |
| 监控告警系统 | 3 天 | 所有模块 |

**总计**：约 36 人天

### 7.4 资源需求

| 资源类型 | 需求 | 说明 |
|---------|------|------|
| **开发人员** | 1-2 人 | 全栈开发（Python+JS） |
| **测试人员** | 1 人 | 功能测试、性能测试 |
| **服务器** | 1 台 | 4 核 8G，已有（124.221.140.157） |
| **数据库** | MySQL + Redis | 已有（端口 9001） |
| **域名** | ebankofdata.online | 已有（Let's Encrypt 证书） |

---

## 八、风险与对策

### 8.1 技术风险

| 风险 | 可能性 | 影响 | 应对措施 |
|------|--------|------|---------|
| **数据源不可用** | 中 | 高 | 多数据源备份（东方财富 + 新浪财经） |
| **回测结果不准确** | 中 | 高 | 与手工计算对比、单元测试 |
| **系统性能瓶颈** | 低 | 中 | 性能测试、优化数据库索引 |
| **券商 API 不稳定** | 中 | 高 | 异常重试、降级处理 |

### 8.2 市场风险

| 风险 | 可能性 | 影响 | 应对措施 |
|------|--------|------|---------|
| **策略失效** | 高 | 高 | 多策略分散、持续优化 |
| **市场极端行情** | 中 | 高 | 止损机制、仓位控制 |
| **流动性风险** | 低 | 中 | 选择流动性好的股票 |

### 8.3 合规风险

| 风险 | 可能性 | 影响 | 应对措施 |
|------|--------|------|---------|
| **无证经营** | 低 | 高 | 仅用于个人投资，不代客理财 |
| **数据合规** | 低 | 中 | 使用公开数据，不爬取受限数据 |
| **交易合规** | 低 | 高 | 遵守交易所规则，不操纵市场 |

### 8.4 应对措施

1. **技术风险应对**：
   - 建立多数据源备份机制
   - 完善单元测试和集成测试
   - 定期进行性能测试和优化
   - 设计容错和降级机制

2. **市场风险应对**：
   - 多策略分散投资
   - 严格执行止损纪律
   - 控制仓位，避免满仓
   - 持续监控策略表现

3. **合规风险应对**：
   - 明确系统用途（个人投资辅助工具）
   - 不使用受限数据源
   - 遵守相关法律法规
   - 咨询法律意见（如需）

---

## 九、附录

### 9.1 术语表

| 术语 | 解释 |
|------|------|
| **量化投资** | 基于数学模型和统计分析的投资方法 |
| **回测** | 在历史数据上验证策略有效性 |
| **夏普比率** | 风险调整收益指标，越高越好 |
| **最大回撤** | 历史最大亏损幅度 |
| **市价单** | 按当前市场价立即成交的订单 |
| **限价单** | 指定价格成交的订单 |
| **VaR** | 风险价值，在一定置信度下的最大损失 |

### 9.2 参考文档

1. 《量化交易》- Ernest Chan
2. 《海龟交易法则》- Curtis Faith
3. 《主动投资组合管理》- Grinold
4. 东方财富 API 文档
5. 飞书开放平台文档

### 9.3 修订历史

| 版本 | 日期 | 修订人 | 修订内容 |
|------|------|--------|---------|
| v1.0 | 2026-04-12 | 小奕 | 初始版本 |

### 9.4 审批记录

| 角色 | 姓名 | 日期 | 意见 |
|------|------|------|------|
| **产品负责人** | 杨海波 | - | - |
| **技术负责人** | Developer | - | - |
| **测试负责人** | Tester | - | - |

---

**文档结束**

---

*本需求文档由小奕（首席协调官）编写，用于指导量化投资交易系统的开发和实施。*  
*如有疑问或建议，请及时反馈。*
