开源量化分析软件功能介绍
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