开源量化软件功能介绍
多因子选股系统 — 项目功能介绍下载地址https://github.com/henrylin99/quantitative_analysis面向 A 股市场的全链路量化分析平台 — 因子计算 · 机器学习 · 组合优化 · 回测验证 · 实时行情指标数据Python 模块108业务代码15,600 行服务模块30API 蓝图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二、各模块功能介绍2.1 实时行情分析模块API 蓝图前缀/api/realtime-analysis/*核心服务RealtimeIndicatorEngineservices/realtime_indicator_engine.py实时技术指标计算RealtimeTradingSignalEngineservices/realtime_trading_signal_engine.py多策略交易信号生成与融合功能特性功能说明实时指标计算支持 MACD、KDJ、RSI、布林带等经典技术指标的实时计算与展示多策略信号生成基于不同策略的交易信号生成支持信号融合与综合研判信号监控交易信号的实时监控与历史回溯策略回测对生成的信号进行历史回测验证板块分析板块表现统计与异动检测市场情绪市场情绪指标的实时追踪数据源通达信分钟级行情数据存储于data/stock_minute/Parquet 格式。2.2 因子与选股模块API 蓝图前缀/api/ml-factor/*、/api核心服务FactorEngineservices/factor_engine.py内置因子计算与自定义因子管理FactorExpressionEngineservices/factor_expression_engine.py白名单校验的自定义因子公式引擎StockScoringEngineservices/stock_scoring.py因子评分与 ML 评分的综合选股引擎内置因子12 个维度因子名说明动量momentum_1d1 日动量动量momentum_5d5 日动量动量momentum_20d20 日动量波动率volatility_20d20 日波动率技术指标rsi_14RSI 相对强弱技术指标turnover_rate换手率基本面pe_ratio市盈率基本面pb_ratio市净率基本面roe净资产收益率基本面debt_ratio资产负债率基本面current_ratio流动比率基本面gross_margin毛利率自定义因子支持用户通过表达式语法定义自定义因子表达式引擎采用白名单校验机制确保安全性。用户可在因子管理界面创建、编辑和管理自定义因子公式。选股评分StockScoringEngine提供两种评分模式因子评分基于多个因子的加权综合评分ML 评分基于机器学习模型的预测评分2.3 机器学习建模模块API 蓝图前缀/api/ml-factor/*核心服务MLModelManagerservices/ml_models.pyXGBoost / LightGBM / RandomForest 模型生命周期管理ModelTrainingJobServiceservices/model_training_job_service.py异步训练任务轮询与管理功能特性功能说明模型创建支持 XGBoost、LightGBM、RandomForest 三大算法的模型创建模型训练支持同步与异步训练异步训练通过 Celery 或内联模式执行模型预测训练完成的模型可直接用于股票预测特征工程因子组合与特征选择性能评估模型性能评估与多模型比较训练任务管理异步训练任务的提交、状态查询与管理2.4 组合优化模块API 蓝图前缀/api/ml-factor/*核心服务PortfolioOptimizerservices/portfolio_optimizer.py等权 / 均值方差 / 风险平价 / 因子中性优化方法方法说明适用场景等权重优化所有股票分配相同权重简单基准、等权组合均值方差优化基于 Markowitz 理论的均值-方差优化追求风险调整后收益最大化风险平价优化基于风险贡献均衡的权重分配风险均衡配置因子中性组合控制因子暴露度在中性水平消除特定因子风险暴露2.5 回测验证模块API 蓝图前缀/api/ml-factor/*核心服务BacktestEngineservices/backtest_engine.py单策略与多策略回测回测能力功能说明单策略回测对单个选股策略进行历史回测验证多策略比较同时运行多个策略并比较绩效表现年化收益率计算策略的年化收益夏普比率风险调整后收益指标最大回撤策略的最大净值回撤幅度胜率盈利交易占比卡尔玛比率年化收益与最大回撤的比值回测结果以可视化图表形式展示支持净值曲线、收益分布等多种视图。2.6 风险管理模块API 蓝图前缀/api/realtime-analysis/*核心服务RealtimeRiskManagerservices/realtime_risk_manager.py风险指标、预警管理、压力测试功能特性功能说明投资组合持仓 CRUD创建、查询、更新、删除投资组合持仓记录实时价格刷新通过通达信接口获取实时行情价格风险指标监控实时计算并展示组合风险指标预警管理设定预警规则触发时自动通知压力测试模拟极端市场场景分析组合表现2.7 数据管理模块API 蓝图前缀/api/data-jobs/*核心服务DataJobsservices/data_jobs/数据下载任务执行器数据架构存储用途说明Parquet 文件市场行情数据高性能列式存储承载日线/分钟线行情、基本面、技术面、资金流数据SQLite 数据库应用状态轻量级存储管理持仓、报告、预警等低并发元数据Redis 缓存任务队列 缓存Celery 任务 Broker、实时数据缓存、WebSocket 消息分发可选数据下载工具位于app/utils/工具数据源说明trade_calendar.pyTushare / Baostock交易日历下载stock_basic.pyTushare / Baostock股票基本信息下载其他数据脚本Tushare / Baostock行情、财务等数据下载注意下载顺序为trade_calendar.py→stock_basic.py→ 其他脚本。任务执行模式通过DATA_JOB_EXECUTION_MODE环境变量控制inline默认开发模式在 Web 进程中直接执行无需 Celerycelery默认生产模式通过 Celery Worker 异步执行需要 Redis2.8 Text2SQL 自然语言查询模块API 蓝图前缀/api核心服务Text2SQLEngineservices/text2sql_engine.pyLLM 驱动的自然语言转 SQL 查询LLMServiceservices/llm_service.pyLLM 服务封装Ollama / OpenAI功能说明用户可以使用自然语言描述查询需求系统通过 LLM 将自然语言转换为 SQL 查询语句直接查询股票数据。LLM 配置配置默认值说明默认提供商Ollama本地 LLM 服务默认模型qwen2.5-coder阿里通义千问代码模型可选提供商OpenAI API通过LLM_CONFIG配置切换2.9 实时分析报告模块API 蓝图前缀/api/realtime-analysis/*核心服务RealtimeReportGeneratorservices/realtime_report_generator.py分析报告生成器功能基于实时行情数据和分析结果自动生成可视化分析报告涵盖市场概况、板块表现、个股分析等内容。2.10 WebSocket 推送模块API 蓝图前缀/api/websocket/*核心服务WebSocketPushServiceapp/websocket/websocket_push_service.pyWebSocket 推送服务功能通过 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 # 初始化与诊断工具四、核心服务一览服务文件职责FactorEngineservices/factor_engine.py内置因子计算与自定义因子管理FactorExpressionEngineservices/factor_expression_engine.py白名单校验的自定义因子公式引擎MLModelManagerservices/ml_models.pyXGBoost / LightGBM / RandomForest 模型生命周期ModelTrainingJobServiceservices/model_training_job_service.py异步训练任务轮询与管理StockScoringEngineservices/stock_scoring.py因子评分与 ML 评分的综合选股引擎PortfolioOptimizerservices/portfolio_optimizer.py等权 / 均值方差 / 风险平价 / 因子中性BacktestEngineservices/backtest_engine.py单策略与多策略回测Text2SQLEngineservices/text2sql_engine.pyLLM 驱动的自然语言转 SQL 查询RealtimeIndicatorEngineservices/realtime_indicator_engine.py实时技术指标计算RealtimeTradingSignalEngineservices/realtime_trading_signal_engine.py多策略交易信号生成与融合RealtimeRiskManagerservices/realtime_risk_manager.py风险指标、预警管理、压力测试DataJobsservices/data_jobs/数据下载任务执行器Inline / Celery五、API 蓝图一览URL 前缀功能域/api主 API — 股票、分析、Text2SQL/api/ml-factor/*因子管理、ML 模型、选股评分、组合优化/api/data-jobs/*数据下载任务提交与状态查询/api/realtime-analysis/*实时指标、信号、监控、风险、报告/api/websocket/*WebSocket 管理端点六、快速开始1. 克隆 安装gitclonerepository-urlcdquantitative_analysis# 安装依赖pipinstall-rrequirements.txt# 如遇兼容问题使用最小依赖pipinstall-rrequirements_minimal.txt2. 下载数据下载预打包的 A 股历史数据解压到data/目录即可。也可通过系统内的数据管理页面在线更新。3. 启动系统# 启动 Web 服务python run.py# 访问地址http://localhost:5000# Web 界面http://localhost:5000/api# API 入口容器化启动可选cp.env.example .envdockercompose up--build默认启动 Web SQLite Redis市场数据和 ML 因子状态仍使用本地 Parquet 文件。七、配置说明所有配置通过config.py管理支持环境变量.env文件覆盖。配置项默认值说明DATA_SOURCEparquet数据源类型SQLALCHEMY_DATABASE_URISQLite应用状态数据库REDIS_HOST / REDIS_PORTlocalhost:6379Redis 连接Celery/缓存FLASK_ENVdevelopment运行环境DATA_JOB_EXECUTION_MODEinline任务执行模式inline / celeryLLM_CONFIGOllama (qwen2.5-coder)LLM 提供商配置八、项目定位✅ 适用场景量化交易入门学习策略研究与验证二次开发与定制量化系统架构参考❌ 不适用场景直接用于实盘交易高频交易系统九、版本历史版本日期内容v1.0.02025-06-01多因子选股系统初始版本因子管理和计算、机器学习模型集成、组合优化、回测验证引擎、Web 界面和 API 接口v2.0.0-parquet2026-06-06架构升级从 MySQL 迁移到 Parquet SQLite零外部数据库依赖。新增实时行情分析模块、通达信行情接入、日频数据中心、投资组合管理完整闭环、报告可视化、离线数据包多因子选股系统 — 面向 A 股市场的全链路量化分析平台MIT License