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纯内存环境进行了深度优化,确保高效、轻量级的部署和运行。
📑 目录
🚀 主要功能
仪表盘
- 实时指数/新闻/策略概览
策略管理
- 创建/编辑/实例监控
回测分析
- 参数设置/图表展示
选股功能
- 条件筛选/详情查看
🔧 技术架构
后端技术栈
- 框架: 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上部署
- 创建一个新的Docker Space。
- 设置环境变量:
MEMORY_MODE=true:必须设置为true以启用纯内存模式。SECRET_KEY:必须设置为一个强随机字符串,用于JWT令牌签名。建议使用openssl rand -hex 32生成。TUSHARE_TOKEN:可选。如果您需要从Tushare获取实时或历史数据,请在此处设置您的Tushare API Token。如果未设置,系统将使用模拟数据或AKShare等其他数据源。
- 上传代码到Space仓库。
系统会自动使用项目根目录的Dockerfile进行构建和部署。
🖥️ 本地部署
您可以在本地环境部署和运行本项目,支持使用 Docker 或直接运行。
1. 使用 Docker 构建和运行
如果您已安装 Docker,可以通过以下步骤快速启动项目:
确保
.env文件存在:在项目根目录创建.env文件(如果尚未创建),并根据.env.example填写必要的环境变量。cp .env.example .env # 编辑 .env 文件,设置 SECRET_KEY 等构建 Docker 镜像:在项目根目录执行以下命令构建镜像。
docker build -t qsss-new .运行 Docker 容器:
docker run -d -p 7860:7860 --env-file .env qsss-new-d表示在后台运行容器。-p 7860:7860将容器的 7860 端口映射到主机的 7860 端口。--env-file .env会将.env文件中的环境变量加载到容器中。
访问应用程序:在浏览器中访问
http://localhost:7860。
2. 不使用 Docker 直接运行
如果您不希望使用 Docker,可以分别启动后端和前端服务。
后端服务 (Python)
- 进入后端目录:
cd backend - 创建并激活 Python 虚拟环境:
python3 -m venv backend_venv source backend_venv/bin/activate- 注意:如果
python3命令不可用,请尝试python。
- 注意:如果
- 安装 Python 依赖:
pip install -r requirements.txt- 如果需要开发依赖,可以运行
pip install -r requirements-dev.txt。
- 如果需要开发依赖,可以运行
- 启动后端 Uvicorn 服务:
uvicorn app.main:app --host 0.0.0.0 --port 8000- 后端服务将在
http://localhost:8000上运行。
- 后端服务将在
前端服务 (Next.js)
- 打开新的终端窗口(或在当前终端中停止后端服务并切换目录)。
- 进入前端目录:
cd qsss-web - 安装 Node.js 依赖:
npm install # 或者如果您使用 pnpm: # pnpm install - 启动 Next.js 开发服务器:
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 文件:
PORT=7860
DATABASE_URL=sqlite:///:memory:
REDIS_MODE=memory
SECRET_KEY=your_strong_random_secret_key
ENVIRONMENT=production
MEMORY_MODE=true
📊 示例数据
系统会自动生成以下示例数据:
- 股票列表:包含部分A股示例股票
- 行情数据:随机生成的模拟行情数据
- 因子数据:预设的基础因子数据
📚 使用说明
策略配置
系统提供多种预设策略,可以通过Web界面进行配置和参数调整。
回测分析
支持历史数据回测,并提供丰富的性能指标和可视化图表。
选股结果
系统会根据策略生成选股结果,并提供详细的选股理由和风险评估。
🛠️ 开发指南
添加新策略
- 在
backend/strategies目录下创建新的策略类。 - 继承
BaseStrategy类并实现必要的方法。 - 在
strategy_manager.py中注册新策略。
自定义数据源
- 在
backend/data目录下创建新的数据源适配器。 - 实现数据获取和处理方法。
- 在数据服务中集成新的数据源。
📄 许可证
本项目采用MIT许可证 - 详情请参阅LICENSE文件
📞 联系方式
项目维护者 - MisonL
项目链接: https://huggingface.co/spaces/misonL/QSSS_new
开发环境配置
# 运行初始化脚本
chmod +x backend/setup_venv.sh
./backend/setup_venv.sh
# 激活虚拟环境
source backend/.venv/bin/activate