开源量化分析软件功能介绍

Published: (June 8, 2026 at 02:37 AM EDT)
15 min read
Source: Dev.to

Source: Dev.to

📈 多因子选股系统 — 项目功能介绍

观看地址:https://youtu.be/SpHsZdlyii8 面向 A 股市场的全链路量化分析平台 — 因子计算 · 机器学习 · 组合优化 · 回测验证 · 实时行情

指标 数据

Python 模块 108

业务代码 15,600+ 行

服务模块 30+

API 蓝图 14

内置因子 12

多因子选股系统是一个覆盖量化研究全流程的分析平台,从数据管理到策略回测一站式完成。系统采用 Flask + SQLAlchemy + SocketIO 技术栈,基于 Parquet + SQLite 双层存储架构,零外部数据库依赖,克隆即可运行。 实时行情分析:通达信分钟数据接入,MACD、KDJ、RSI、布林带等技术指标实时计算 因子与选股:12 个内置因子 + 自定义因子表达式引擎,支持白名单安全校验 机器学习建模:XGBoost、LightGBM、RandomForest 三大算法的完整模型生命周期 组合优化:等权重、均值方差、风险平价、因子中性四种经典优化方法 回测验证:单策略与多策略回测,丰富的绩效指标(年化收益、夏普比率、最大回撤等) 风险管理:组合持仓管理、实时价格刷新、风险指标监控、预警管理、压力测试 HTTP / WebSocket → Blueprint (app/api/.py) → Service (app/services/.py) → ParquetDataReader (行情数据) ↕ SQLAlchemy Models (SQLite 应用状态)

类别 技术

后端框架 Python 3.8–3.11、Flask、Flask-SocketIO、Flask-SQLAlchemy、Celery

数据处理 Pandas、NumPy、PyArrow、SciPy、Scikit-learn

机器学习 XGBoost、LightGBM、RandomForest、CVXPY

前端 & 可视化 Bootstrap 5、ECharts、Plotly、Matplotlib / MPLFinance

数据源 通达信(实时行情)、Baostock(历史数据)、Tushare(可选)、Parquet 离线数据包

AI 能力 Ollama(本地 LLM)、OpenAI API(可选)、Text2SQL、Qwen2.5-Coder

API 蓝图前缀:/api/realtime-analysis/* 核心服务: RealtimeIndicatorEngine(services/realtime_indicator_engine.py):实时技术指标计算 RealtimeTradingSignalEngine(services/realtime_trading_signal_engine.py):多策略交易信号生成与融合 功能特性:

功能 说明

实时指标计算 支持 MACD、KDJ、RSI、布林带等经典技术指标的实时计算与展示

多策略信号生成 基于不同策略的交易信号生成,支持信号融合与综合研判

信号监控 交易信号的实时监控与历史回溯

策略回测 对生成的信号进行历史回测验证

板块分析 板块表现统计与异动检测

市场情绪 市场情绪指标的实时追踪

数据源:通达信分钟级行情数据,存储于 data/stock_minute/(Parquet 格式)。 API 蓝图前缀:/api/ml-factor/*、/api 核心服务: FactorEngine(services/factor_engine.py):内置因子计算与自定义因子管理 FactorExpressionEngine(services/factor_expression_engine.py):白名单校验的自定义因子公式引擎 StockScoringEngine(services/stock_scoring.py):因子评分与 ML 评分的综合选股引擎

维度 因子名 说明

动量 momentum_1d 1 日动量

动量 momentum_5d 5 日动量

动量 momentum_20d 20 日动量

波动率 volatility_20d 20 日波动率

技术指标 rsi_14 RSI 相对强弱

技术指标 turnover_rate 换手率

基本面 pe_ratio 市盈率

基本面 pb_ratio 市净率

基本面 roe 净资产收益率

基本面 debt_ratio 资产负债率

基本面 current_ratio 流动比率

基本面 gross_margin 毛利率

支持用户通过表达式语法定义自定义因子,表达式引擎采用白名单校验机制,确保安全性。用户可在因子管理界面创建、编辑和管理自定义因子公式。 StockScoringEngine 提供两种评分模式: 因子评分:基于多个因子的加权综合评分 ML 评分:基于机器学习模型的预测评分 API 蓝图前缀:/api/ml-factor/* 核心服务: MLModelManager(services/ml_models.py):XGBoost / LightGBM / RandomForest 模型生命周期管理 ModelTrainingJobService(services/model_training_job_service.py):异步训练任务轮询与管理 功能特性:

功能 说明

模型创建 支持 XGBoost、LightGBM、RandomForest 三大算法的模型创建

模型训练 支持同步与异步训练,异步训练通过 Celery 或内联模式执行

模型预测 训练完成的模型可直接用于股票预测

特征工程 因子组合与特征选择

性能评估 模型性能评估与多模型比较

训练任务管理 异步训练任务的提交、状态查询与管理

API 蓝图前缀:/api/ml-factor/* 核心服务: PortfolioOptimizer(services/portfolio_optimizer.py):等权 / 均值方差 / 风险平价 / 因子中性 优化方法:

方法 说明 适用场景

等权重优化 所有股票分配相同权重 简单基准、等权组合

均值方差优化 基于 Markowitz 理论的均值-方差优化 追求风险调整后收益最大化

风险平价优化 基于风险贡献均衡的权重分配 风险均衡配置

因子中性组合 控制因子暴露度在中性水平 消除特定因子风险暴露

API 蓝图前缀:/api/ml-factor/* 核心服务: BacktestEngine(services/backtest_engine.py):单策略与多策略回测 回测能力:

功能 说明

单策略回测 对单个选股策略进行历史回测验证

多策略比较 同时运行多个策略并比较绩效表现

年化收益率 计算策略的年化收益

夏普比率 风险调整后收益指标

最大回撤 策略的最大净值回撤幅度

胜率 盈利交易占比

卡尔玛比率 年化收益与最大回撤的比值

回测结果以可视化图表形式展示,支持净值曲线、收益分布等多种视图。 API 蓝图前缀:/api/realtime-analysis/* 核心服务: RealtimeRiskManager(services/realtime_risk_manager.py):风险指标、预警管理、压力测试 功能特性:

功能 说明

投资组合持仓 CRUD 创建、查询、更新、删除投资组合持仓记录

实时价格刷新 通过通达信接口获取实时行情价格

风险指标监控 实时计算并展示组合风险指标

预警管理 设定预警规则,触发时自动通知

压力测试 模拟极端市场场景,分析组合表现

API 蓝图前缀:/api/data-jobs/* 核心服务: DataJobs(services/data_jobs/):数据下载任务执行器 数据架构:

存储 用途 说明

Parquet 文件 市场行情数据 高性能列式存储,承载日线/分钟线行情、基本面、技术面、资金流数据

SQLite 数据库 应用状态 轻量级存储,管理持仓、报告、预警等低并发元数据

Redis 缓存 任务队列 & 缓存 Celery 任务 Broker、实时数据缓存、WebSocket 消息分发(可选)

数据下载工具(位于 app/utils/):

工具 数据源 说明

trade_calendar.py Tushare / Baostock 交易日历下载

stock_basic.py Tushare / Baostock 股票基本信息下载

其他数据脚本 Tushare / Baostock 行情、财务等数据下载

注意:下载顺序为 trade_calendar.py → stock_basic.py → 其他脚本。 任务执行模式(通过 DATA_JOB_EXECUTION_MODE 环境变量控制): inline(默认开发模式):在 Web 进程中直接执行,无需 Celery celery(默认生产模式):通过 Celery Worker 异步执行,需要 Redis API 蓝图前缀:/api 核心服务: Text2SQLEngine(services/text2sql_engine.py):LLM 驱动的自然语言转 SQL 查询 LLMService(services/llm_service.py):LLM 服务封装(Ollama / OpenAI) 功能说明: 用户可以使用自然语言描述查询需求,系统通过 LLM 将自然语言转换为 SQL 查询语句,直接查询股票数据。 LLM 配置:

配置 默认值 说明

默认提供商 Ollama 本地 LLM 服务

默认模型 qwen2.5-coder 阿里通义千问代码模型

可选提供商 OpenAI API 通过 LLM_CONFIG 配置切换

API 蓝图前缀:/api/realtime-analysis/* 核心服务: RealtimeReportGenerator(services/realtime_report_generator.py):分析报告生成器 功能:基于实时行情数据和分析结果,自动生成可视化分析报告,涵盖市场概况、板块表现、个股分析等内容。 API 蓝图前缀:/api/websocket/* 核心服务: WebSocketPushService(app/websocket/websocket_push_service.py):WebSocket 推送服务 功能:通过 WebSocket 实现数据的实时推送,支持实时行情、交易信号、风险预警等信息的即时通知。 quantitative_analysis/ ├── app/ # 应用主目录 │ ├── init.py # Flask 工厂模式 (create_app) │ ├── extensions.py # 扩展初始化 (SQLAlchemy, SocketIO, Redis) │ ├── api/ # API 蓝图 │ │ ├── analysis_api.py # 市场分析 API │ │ ├── ml_factor_api.py # ML 因子管理 API │ │ ├── realtime_analysis.py # 实时分析 API │ │ ├── realtime_indicators.py # 实时指标 API │ │ ├── realtime_signals.py # 交易信号 API │ │ ├── realtime_monitor.py # 实时监控 API │ │ ├── realtime_risk.py # 风险管理 API │ │ ├── realtime_report.py # 分析报告 API │ │ ├── text2sql_api.py # 自然语言查询 API │ │ ├── data_jobs_api.py # 数据下载任务 API │ │ └── websocket_api.py # WebSocket 管理 API │ ├── models/ # 数据模型 (SQLAlchemy + Parquet 事件) │ ├── services/ # 核心业务服务 │ ├── routes/ # 页面路由 (HTML 渲染) │ ├── templates/ # Jinja2 HTML 模板 │ ├── static/ # CSS / JS / 图片 │ ├── utils/ # 数据下载脚本 (通达信/Baostock/Tushare) │ ├── websocket/ # WebSocket 推送服务 │ └── services/tongdaxin/ # 通达信行情客户端 ├── data/ # 数据目录 │ ├── stock_minute/ # 分钟级行情 Parquet │ ├── ml_factor_state/ # ML 因子状态 Parquet │ └── realtime_events/ # 实时事件 Parquet ├── tests/ # 测试用例 ├── acceptance/ # 验收标准与里程碑 ├── config.py # 配置管理 ├── run.py # Web 启动入口 └── run_system.py # 初始化与诊断工具

服务 文件 职责

FactorEngine services/factor_engine.py 内置因子计算与自定义因子管理

FactorExpressionEngine services/factor_expression_engine.py 白名单校验的自定义因子公式引擎

MLModelManager services/ml_models.py XGBoost / LightGBM / RandomForest 模型生命周期

ModelTrainingJobService services/model_training_job_service.py 异步训练任务轮询与管理

StockScoringEngine services/stock_scoring.py 因子评分与 ML 评分的综合选股引擎

PortfolioOptimizer services/portfolio_optimizer.py 等权 / 均值方差 / 风险平价 / 因子中性

BacktestEngine services/backtest_engine.py 单策略与多策略回测

Text2SQLEngine services/text2sql_engine.py LLM 驱动的自然语言转 SQL 查询

RealtimeIndicatorEngine services/realtime_indicator_engine.py 实时技术指标计算

RealtimeTradingSignalEngine services/realtime_trading_signal_engine.py 多策略交易信号生成与融合

RealtimeRiskManager services/realtime_risk_manager.py 风险指标、预警管理、压力测试

DataJobs services/data_jobs/ 数据下载任务执行器(Inline / Celery)

URL 前缀 功能域

/api 主 API — 股票、分析、Text2SQL

/api/ml-factor/* 因子管理、ML 模型、选股评分、组合优化

/api/data-jobs/* 数据下载任务提交与状态查询

/api/realtime-analysis/* 实时指标、信号、监控、风险、报告

/api/websocket/* WebSocket 管理端点

git clone cd quantitative_analysis

安装依赖

pip install -r requirements.txt

如遇兼容问题,使用最小依赖

pip install -r requirements_minimal.txt

下载预打包的 A 股历史数据,解压到 data/ 目录即可。也可通过系统内的数据管理页面在线更新。

启动 Web 服务

python run.py

访问地址

http://localhost:5000 # Web 界面 http://localhost:5000/api # API 入口

cp .env.example .env docker compose up —build

默认启动 Web + SQLite + Redis;市场数据和 ML 因子状态仍使用本地 Parquet 文件。 所有配置通过 config.py 管理,支持环境变量 .env 文件覆盖。

配置项 默认值 说明

DATA_SOURCE parquet 数据源类型

SQLALCHEMY_DATABASE_URI SQLite 应用状态数据库

REDIS_HOST / REDIS_PORT localhost:6379 Redis 连接(Celery/缓存)

FLASK_ENV development 运行环境

DATA_JOB_EXECUTION_MODE inline 任务执行模式(inline / celery)

LLM_CONFIG Ollama (qwen2.5-coder) LLM 提供商配置

量化交易入门学习 策略研究与验证 二次开发与定制 量化系统架构参考 直接用于实盘交易 高频交易系统

版本 日期 内容

v1.0.0 2025-06-01 多因子选股系统初始版本:因子管理和计算、机器学习模型集成、组合优化、回测验证引擎、Web 界面和 API 接口

v2.0.0-parquet 2026-06-06 架构升级:从 MySQL 迁移到 Parquet + SQLite,零外部数据库依赖。新增实时行情分析模块、通达信行情接入、日频数据中心、投资组合管理完整闭环、报告可视化、离线数据包

多因子选股系统 — 面向 A 股市场的全链路量化分析平台 MIT License

0 views
Back to Blog

Related posts

Read more »