QSSS_new / README.md
misonL's picture
特性:实现对话框、表单、输入框、标签、下拉菜单、分隔线、骨架屏、滑块、表格、文本区域的 UI 组件
c78ce9e
|
Raw
History Blame Contribute Delete
10.2 kB
metadata
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纯内存环境进行了深度优化,确保高效、轻量级的部署和运行。

License: MIT Python 3.9+ FastAPI Next.js SQLite Redis

📑 目录

🚀 主要功能

仪表盘

  • 实时指数/新闻/策略概览

策略管理

  • 创建/编辑/实例监控

回测分析

  • 参数设置/图表展示

选股功能

  • 条件筛选/详情查看

🔧 技术架构

后端技术栈

  • 框架: 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 填写必要的环境变量。

    cp .env.example .env
    # 编辑 .env 文件,设置 SECRET_KEY 等
    
  2. 构建 Docker 镜像:在项目根目录执行以下命令构建镜像。

    docker build -t qsss-new .
    
  3. 运行 Docker 容器

    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. 进入后端目录
    cd backend
    
  2. 创建并激活 Python 虚拟环境
    python3 -m venv backend_venv
    source backend_venv/bin/activate
    
    • 注意:如果 python3 命令不可用,请尝试 python
  3. 安装 Python 依赖
    pip install -r requirements.txt
    
    • 如果需要开发依赖,可以运行 pip install -r requirements-dev.txt
  4. 启动后端 Uvicorn 服务
    uvicorn app.main:app --host 0.0.0.0 --port 8000
    
    • 后端服务将在 http://localhost:8000 上运行。

前端服务 (Next.js)

  1. 打开新的终端窗口(或在当前终端中停止后端服务并切换目录)。
  2. 进入前端目录
    cd qsss-web
    
  3. 安装 Node.js 依赖
    npm install
    # 或者如果您使用 pnpm:
    # pnpm install
    
  4. 启动 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 是否启用纯内存模式 (数据库和缓存均在内存中)。truefalse 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界面进行配置和参数调整。

回测分析

支持历史数据回测,并提供丰富的性能指标和可视化图表。

选股结果

系统会根据策略生成选股结果,并提供详细的选股理由和风险评估。

🛠️ 开发指南

添加新策略

  1. backend/strategies目录下创建新的策略类。
  2. 继承BaseStrategy类并实现必要的方法。
  3. strategy_manager.py中注册新策略。

自定义数据源

  1. backend/data目录下创建新的数据源适配器。
  2. 实现数据获取和处理方法。
  3. 在数据服务中集成新的数据源。

📄 许可证

本项目采用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