| --- |
| title: QSSS New |
| emoji: 📈 |
| colorFrom: gray |
| colorTo: indigo |
| sdk: docker |
| pinned: false |
| license: mit |
| --- |
| # A股量化策略选股系统 |
|
|
| ## 项目简介 |
|
|
| QSSS (Quantitative Stock Strategy System) 是一个专为A股市场设计的量化策略选股系统。它提供了一套完整的解决方案,涵盖了从数据获取、策略开发、回测分析到投资组合优化的全流程。系统后端基于Python FastAPI构建,前端采用Next.js,并针对HuggingFace Space的Docker纯内存环境进行了深度优化,确保高效、轻量级的部署和运行。 |
|
|
| [](https://opensource.org/licenses/MIT) |
| [](https://www.python.org/downloads/) |
| [](https://fastapi.tiangolo.com/) |
| [](https://nextjs.org/) |
| [](https://www.sqlite.org/) |
| [](https://redis.io/) |
|
|
| ## 📑 目录 |
|
|
| - [项目简介](#项目简介) |
| - [主要功能](#主要功能) |
| - [技术架构](#技术架构) |
| - [项目结构](#项目结构) |
| - [快速开始](#快速开始) |
| - [Hugging Face部署指南](docs/hf_deployment_guide.md) |
| - [使用说明](#使用说明) |
| - [开发指南](#开发指南) |
| - [贡献指南](#贡献指南) |
| - [许可证](#许可证) |
| - [联系方式](#联系方式) |
|
|
| ## 🚀 主要功能 |
|
|
| ### 仪表盘 |
| - 实时指数/新闻/策略概览 |
|
|
| ### 策略管理 |
| - 创建/编辑/实例监控 |
|
|
| ### 回测分析 |
| - 参数设置/图表展示 |
|
|
| ### 选股功能 |
| - 条件筛选/详情查看 |
|
|
| ## 🔧 技术架构 |
|
|
| ### 后端技术栈 |
| - **框架**: FastAPI (Python) |
| - **数据库**: SQLite (纯内存模式) |
| - **缓存**: FakeRedis (纯内存模式) |
| - **数据处理**: Pandas, NumPy |
| - **量化库**: TA-Lib, Backtrader, Empyrical, Pyfolio |
| - **机器学习**: Scikit-learn, XGBoost, LightGBM |
|
|
| ### 前端技术栈 |
| - **框架**: Next.js 14 (App Router) |
| - **UI组件库**: Shadcn UI (基于Radix UI和Tailwind CSS构建) |
| - **样式**: Tailwind CSS |
| - **状态管理**: Zustand |
| - **数据获取**: React Query |
| - **可视化**: Recharts |
|
|
| ### 数据源 |
| - **股票数据**: Tushare (需配置 `TUSHARE_TOKEN` 环境变量), AKShare |
| - **财务数据**: Wind, 同花顺 (通过模拟数据或外部API集成) |
| - **实时行情**: WebSocket推送 (模拟或通过外部API集成) |
| - **新闻数据**: 新华财经 (通过外部API集成) |
|
|
| ## 📁 项目结构 |
|
|
| ``` |
| qsss_new/ |
| ├── .env # 环境变量配置文件 (本地使用) |
| ├── .env.example # 环境变量示例文件 |
| ├── backend/ # 后端服务 |
| │ ├── app/ # 应用主目录 |
| │ │ ├── api/ # API路由 |
| │ │ ├── core/ # 核心配置 (包含内存模式数据库和缓存配置) |
| │ │ │ └── database_memory.py # 内存模式数据库配置 |
| │ │ │ └── db_selector.py # 数据库模式选择器 |
| │ │ ├── models/ # 数据模型 |
| │ │ ├── services/ # 业务逻辑 |
| │ │ └── utils/ # 工具函数 |
| │ ├── strategies/ # 量化策略 |
| │ ├── data/ # 数据处理 |
| │ │ └── data_service_memory.py # 内存模式数据服务 |
| │ └── tests/ # 测试文件 (仅包含test_sql_injection.py) |
| ├── qsss-web/ # Next.js前端应用 |
| │ ├── public/ # 静态资源 |
| │ ├── src/ # 源代码 |
| │ │ ├── app/ # App Router 页面和 API 路由 |
| │ │ ├── components/ # UI 组件和共享组件 |
| │ │ ├── lib/ # 工具函数和 API 客户端 |
| │ │ └── types/ # TypeScript 类型定义 |
| │ └── Dockerfile # Dockerfile for Next.js app |
| └── docs/ # 文档 |
| └── hf_deployment_guide.md # Hugging Face部署指南 |
| ``` |
|
|
| ## 🚀 快速开始 |
|
|
| ### HuggingFace部署 |
|
|
| 系统专为HuggingFace Space免费层优化,采用**纯内存模式**运行,所有数据(包括数据库和缓存)均存储在内存中,不写入本地文件系统,确保了部署的轻量级和高效性。 |
|
|
| #### 在HuggingFace Space上部署 |
|
|
| 1. 创建一个新的Docker Space。 |
| 2. 设置环境变量: |
| * `MEMORY_MODE=true`:**必须**设置为 `true` 以启用纯内存模式。 |
| * `SECRET_KEY`:**必须**设置为一个强随机字符串,用于JWT令牌签名。建议使用 `openssl rand -hex 32` 生成。 |
| * `TUSHARE_TOKEN`:**可选**。如果您需要从Tushare获取实时或历史数据,请在此处设置您的Tushare API Token。如果未设置,系统将使用模拟数据或AKShare等其他数据源。 |
| 3. 上传代码到Space仓库。 |
|
|
| 系统会自动使用项目根目录的`Dockerfile`进行构建和部署。 |
|
|
| ## 🖥️ 本地部署 |
|
|
| 您可以在本地环境部署和运行本项目,支持使用 Docker 或直接运行。 |
|
|
| ### 1. 使用 Docker 构建和运行 |
|
|
| 如果您已安装 Docker,可以通过以下步骤快速启动项目: |
|
|
| 1. **确保 `.env` 文件存在**:在项目根目录创建 `.env` 文件(如果尚未创建),并根据 `.env.example` 填写必要的环境变量。 |
| ```bash |
| cp .env.example .env |
| # 编辑 .env 文件,设置 SECRET_KEY 等 |
| ``` |
| 2. **构建 Docker 镜像**:在项目根目录执行以下命令构建镜像。 |
| ```bash |
| docker build -t qsss-new . |
| ``` |
| 3. **运行 Docker 容器**: |
| ```bash |
| docker run -d -p 7860:7860 --env-file .env qsss-new |
| ``` |
| * `-d` 表示在后台运行容器。 |
| * `-p 7860:7860` 将容器的 7860 端口映射到主机的 7860 端口。 |
| * `--env-file .env` 会将 `.env` 文件中的环境变量加载到容器中。 |
| |
| 4. **访问应用程序**:在浏览器中访问 `http://localhost:7860`。 |
|
|
| ### 2. 不使用 Docker 直接运行 |
|
|
| 如果您不希望使用 Docker,可以分别启动后端和前端服务。 |
|
|
| #### 后端服务 (Python) |
|
|
| 1. **进入后端目录**: |
| ```bash |
| cd backend |
| ``` |
| 2. **创建并激活 Python 虚拟环境**: |
| ```bash |
| python3 -m venv backend_venv |
| source backend_venv/bin/activate |
| ``` |
| * **注意**:如果 `python3` 命令不可用,请尝试 `python`。 |
| 3. **安装 Python 依赖**: |
| ```bash |
| pip install -r requirements.txt |
| ``` |
| * 如果需要开发依赖,可以运行 `pip install -r requirements-dev.txt`。 |
| 4. **启动后端 Uvicorn 服务**: |
| ```bash |
| uvicorn app.main:app --host 0.0.0.0 --port 8000 |
| ``` |
| * 后端服务将在 `http://localhost:8000` 上运行。 |
| |
| #### 前端服务 (Next.js) |
|
|
| 1. **打开新的终端窗口**(或在当前终端中停止后端服务并切换目录)。 |
| 2. **进入前端目录**: |
| ```bash |
| cd qsss-web |
| ``` |
| 3. **安装 Node.js 依赖**: |
| ```bash |
| npm install |
| # 或者如果您使用 pnpm: |
| # pnpm install |
| ``` |
| 4. **启动 Next.js 开发服务器**: |
| ```bash |
| npm run dev |
| # 或者如果您使用 pnpm: |
| # pnpm run dev |
| ``` |
| * 前端服务通常会在 `http://localhost:3000` 上运行。 |
| |
| 完成以上步骤后,您应该可以通过浏览器访问 `http://localhost:3000` 来使用应用程序。 |
|
|
| ## ⚙️ 环境变量配置 |
|
|
| 本项目支持通过环境变量进行灵活配置。建议在项目根目录创建 `.env` 文件来管理这些参数。 |
|
|
| | 环境变量 | 说明 | 默认值 | |
| | -------------- | ----------------------------------------------------------------- | ------------------ | |
| | `PORT` | 应用程序监听的端口。 | `7860` | |
| | `DATABASE_URL` | 数据库连接URL。在内存模式下,通常为 `sqlite:///:memory:`。 | `sqlite:///:memory:` | |
| | `REDIS_MODE` | Redis模式,可选 `memory` (纯内存) 或 `redis` (需要外部Redis服务)。 | `memory` | |
| | `SECRET_KEY` | 用于JWT令牌签名和数据加密的密钥。**生产环境必须设置强随机字符串**。 | `your_secret_key_here` | |
| | `ENVIRONMENT` | 应用程序运行环境,可选 `development`, `production`, `testing`。 | `production` | |
| | `MEMORY_MODE` | 是否启用纯内存模式 (数据库和缓存均在内存中)。`true` 或 `false`。 | `true` | |
|
|
| **示例 `.env` 文件:** |
| ```dotenv |
| PORT=7860 |
| DATABASE_URL=sqlite:///:memory: |
| REDIS_MODE=memory |
| SECRET_KEY=your_strong_random_secret_key |
| ENVIRONMENT=production |
| MEMORY_MODE=true |
| ``` |
|
|
| ## 📊 示例数据 |
|
|
| 系统会自动生成以下示例数据: |
|
|
| - 股票列表:包含部分A股示例股票 |
| - 行情数据:随机生成的模拟行情数据 |
| - 因子数据:预设的基础因子数据 |
|
|
| ## 📚 使用说明 |
|
|
| ### 策略配置 |
|
|
| 系统提供多种预设策略,可以通过Web界面进行配置和参数调整。 |
|
|
| ### 回测分析 |
|
|
| 支持历史数据回测,并提供丰富的性能指标和可视化图表。 |
|
|
| ### 选股结果 |
|
|
| 系统会根据策略生成选股结果,并提供详细的选股理由和风险评估。 |
|
|
| ## 🛠️ 开发指南 |
|
|
| ### 添加新策略 |
|
|
| 1. 在`backend/strategies`目录下创建新的策略类。 |
| 2. 继承`BaseStrategy`类并实现必要的方法。 |
| 3. 在`strategy_manager.py`中注册新策略。 |
|
|
| ### 自定义数据源 |
|
|
| 1. 在`backend/data`目录下创建新的数据源适配器。 |
| 2. 实现数据获取和处理方法。 |
| 3. 在数据服务中集成新的数据源。 |
|
|
| ## 📄 许可证 |
|
|
| 本项目采用MIT许可证 - 详情请参阅[LICENSE](LICENSE)文件 |
|
|
| ## 📞 联系方式 |
|
|
| 项目维护者 - [MisonL](https://github.com/MisonL) |
|
|
| 项目链接: [https://huggingface.co/spaces/misonL/QSSS_new](https://huggingface.co/spaces/misonL/QSSS_new) |
|
|
| ## 开发环境配置 |
| ```bash |
| # 运行初始化脚本 |
| chmod +x backend/setup_venv.sh |
| ./backend/setup_venv.sh |
| |
| # 激活虚拟环境 |
| source backend/.venv/bin/activate |
| ``` |