免费开源、本地运行的 A 股量化研究与回测平台
帮助量化新手在个人电脑上完成数据同步、选股、策略回测和风险分析,支持 Windows 一键启动。
下载稳定版 · 新手教学网站 · 73秒项目总览 · 完整视频教程 · 快速开始 · 产品预览 · 功能特性 · 技术栈与数据来源 · 贡献说明 · MIT License
如果 QFO 对你的量化学习或研究有帮助,欢迎点亮右上角的 Star,方便以后找到项目。
点击封面观看 73 秒项目总览
QFO 是一个面向 A 股量化分析的本地化量化回测平台,适合在个人电脑上完成 A股量化回测、股票量化回测、数据同步、股票与 ETF 筛选、因子研究、策略回测、组合优化、风险分析、K 线可视化和新闻情绪跟踪。
- 本地运行:后端、前端、SQLite 数据库都在本机运行,敏感配置不会上传到 Git。
- 多数据源:以 Tushare Pro 为主,结合 AkShare、BaoStock 做补充。
- 一体化流程:从数据同步到选股、回测、组合和风险分析,尽量减少手工切换工具。
- 首次运行友好:提供
run_first_time.bat自动创建环境、安装依赖并启动服务。
| 适合 | 不适合 |
|---|---|
| 希望从数据同步开始学习完整量化研究流程的新手 | 希望直接获得股票推荐、买卖建议或收益承诺的用户 |
| 需要在 Windows 个人电脑上进行选股、因子研究和策略回测的用户 | 需要云端免安装服务、实盘自动下单或机构级高频交易系统的用户 |
| 重视数据、配置和密钥保存在本机的研究者 | 不愿安装本地运行环境或维护本地数据的用户 |
更多页面和使用说明可访问:QFO 教学网站。
| 数据中台 | 智能选股 |
|---|---|
![]() |
![]() |
| 策略回测 | 新闻中心 |
|---|---|
![]() |
![]() |
- 下载:直接下载最新稳定版
- 解压:将压缩包解压到一个不包含中文、空格的路径下,例如
D:\QFO。 - 运行:双击文件夹内的
run_first_time.bat启动;日常快速启动使用run_quick_start.bat。
注意
- 请勿直接在压缩包内运行。
- 需要使用 Python(下载链接)、Node.js(下载链接) 运行环境。
请先在电脑上安装:
- Windows 10/11
- Python 3.12+
- Node.js 18+
- Git
git clone <你的仓库地址>
cd QFO第一次从 Git 下载项目后,推荐直接双击运行:
run_first_time.bat
run_first_time.bat 会自动完成:
- 检查 Python 是否可用
- 检查 Node.js 是否可用
- 创建后端虚拟环境
backend/.venv - 安装后端依赖
- 安装前端依赖
frontend/node_modules - 如果没有
backend/.env,自动从backend/.env.example创建 - 启动后端服务
- 启动前端页面
启动成功后访问:
后端 API: http://localhost:8000
前端页面: http://localhost:3000
首次进入系统后,打开页面右上角设置,填写自己的 Tushare Token(获取链接) 并保存。
backend/.env 是本地配置文件,里面可能包含 Token 或 API Key,不会上传到 Git。
推荐首次运行、新电脑运行、刚从 Git 下载项目后使用。
它会检查环境、安装依赖、创建 .env,适合完整初始化项目。
日常快速启动使用。
它默认你已经运行过 run_first_time.bat,并且本地已经存在:
backend/.venvfrontend/node_modulesbackend/.env
如果是第一次下载项目,不建议直接运行 run_quick_start.bat。
项目源码需要整体上传到 Git,尤其确认以下关键文件和目录存在:
backend/
frontend/
run_first_time.bat
run_quick_start.bat
backend/.env.example
backend/requirements.txt
frontend/package.json
frontend/package-lock.json
README.md
.gitignore
首次上传到 GitHub 可以参考:
git add -A
git commit -m "Initial project setup"
git remote add origin <你的仓库地址>
git branch -M main
git push -u origin main以下文件不会上传到 Git:
backend/.env
backend/.venv/
frontend/node_modules/
backend/quant_data.db
backend/quant_data.db-wal
backend/quant_data.db-shm
backend/cache_data/
backend/logs/
这些都是本地环境、敏感配置、数据库、缓存或运行日志。
如果不使用启动脚本,也可以手动启动。
cd backend
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
python -m uvicorn main:app --host 0.0.0.0 --port 8000 --reloadcd frontend
npm install
npx vite --port 3000访问:
后端 API: http://localhost:8000
前端页面: http://localhost:3000
常用配置项在 backend/.env 中管理,也可以通过前端设置页面修改。
第三方 API 需使用者自行提供账户和密钥,密钥仅保存在本地配置中。相关费用需使用者自行在第三方平台充值或购买,与开发者无关;本项目仅提供 API 对接的技术规范和本地调用入口。
| 配置项 | 是否必填 | 说明 |
|---|---|---|
TUSHARE_TOKEN |
必填 | Tushare Pro Token |
TAVILY_API_KEY |
可选 | Tavily 搜索 API Key,用于增强新闻模块 |
LLM_SILICONFLOW_KEY |
可选 | SiliconFlow API Key,用于新闻情绪和研报摘要 |
LLM_ANSPIRE_KEY |
可选 | Anspire API Key,用于新闻情绪和研报摘要 |
TELEGRAM_* |
可选 | Telegram 推送通知配置 |
WECHAT_WEBHOOK_URL |
可选 | 企业微信/微信机器人 Webhook |
- 📊 数据中台:以 Tushare Pro 为主,A 股行情支持 AkShare、BaoStock 降级;覆盖股票、ETF、可转债、财务、资金流向、融资融券、行业指数和事件数据,支持增量同步与完整性检查。
- 🔍 智能选股:支持股票、ETF、可转债筛选;股票覆盖基本面、资金、行业轮动、事件、多因子信号和技术趋势,ETF 支持趋势、流动性、规模与溢价分析,可转债支持双低、价格、溢价率和评级筛选。
- 🧠 因子模块:覆盖反转、价值、质量、规模、动量、低波、成长、红利、筹码集中和杠杆情绪因子,支持综合评分、IC 归因与衰减、分层回测和自定义因子表达式。
- ⚡ 策略回测:内置多因子、均线择时、MACD/RSI、布林带、海龟、网格、放量突破、ETF 动量、可转债双低和事件驱动策略,支持参数配置与优化。
- 🎯 组合优化:支持最大夏普、最小方差、风险平价和等权配置,提供方法比较、权重分析及月度、季度再平衡模拟。
- 🛡️ 风险管理:计算 VaR、CVaR、最大回撤、波动率、Sharpe、Sortino 和 Calmar,并结合沪深 300 分析 Beta、Alpha、跟踪误差和信息比率。
- 📈 可视化:提供日、周、月、季 K 线,支持 MA、MACD、RSI、KDJ、布林带、唐奇安和网格指标,以及技术诊断、回测买卖点和新闻事件标记。
- 📰 新闻中心:聚合 Tushare、AkShare 新闻并支持 Tavily 全网搜索,提供 LLM 情绪分析、事件识别与回测、自动抓取和多渠道摘要推送。
当前内置多种回测策略,包括多因子选股、均线择时、MACD/RSI 动量、布林带回归、海龟交易、放量突破、ETF 动量轮动、可转债双低、网格交易和事件驱动策略。
因子体系覆盖反转、价值、质量、规模、动量、低波、成长、红利、筹码集中和杠杆情绪等维度,可用于综合评分、选股和策略回测。
平台以 Tushare Pro 为主力数据源,结合 AkShare、BaoStock 做补充。已同步的数据优先读取本地 SQLite,减少重复 API 请求;未入库或实时查询场景再按需访问外部数据源。
backend/ 后端 API、数据同步、业务服务
backend/routers/ FastAPI 路由
backend/services/ 核心业务逻辑
backend/jobs/ 数据同步和定时任务
backend/models/ 数据库模型
backend/tests/ 后端测试
frontend/ React 前端
frontend/src/components/ 页面组件
run_first_time.bat 首次运行脚本
run_quick_start.bat 日常快速启动脚本
前端测试:
cd frontend
npm test后端本地测试:
cd backend
$tests = Get-ChildItem tests -Filter "test_*.py" | ForEach-Object { $_.FullName }
.venv\Scripts\python.exe -m pytest $testsbackend/tests/quick_connection_test.py 会连接外部数据源,适合手动检查 Tushare、AkShare、BaoStock 等连接状态,不作为普通本地测试必跑项。
| 类别 | 说明 |
|---|---|
| 后端 | Python、FastAPI、SQLAlchemy、SQLite |
| 前端 | React、Vite、TailwindCSS、Recharts、TradingView Charts |
| 数据源 | Tushare Pro 为主,AkShare、BaoStock 补充 |
| 本地存储 | SQLite 本地数据库优先读取,减少重复 API 请求 |
| AI 能力 | 可选接入 SiliconFlow、Anspire 等 LLM 渠道,用于新闻情绪和研报摘要 |
QFO 支持新闻摘要、精选新闻和高分事件推送。推送能力默认关闭,用户可在设置页配置后启用。
当前代码支持 Telegram、企业微信/微信机器人、PushPlus、Server酱、飞书和通用 Webhook 等渠道;其中 backend/.env.example 预留了 Telegram 和企业微信 Webhook 的基础配置。
推送配置属于本地私有配置,运行时会写入 backend/.notify_config.json,该文件已被 .gitignore 排除,不会上传到 Git。
请先安装 Python,并确认安装时勾选了 Add Python to PATH。
请先安装 Node.js,然后重新打开命令行或重新双击启动脚本。
请先在设置页面填写自己的 Tushare Token,然后到数据中台同步数据。
首次运行会安装 Python 和 Node.js 依赖,耗时取决于网络环境。安装完成后,后续启动会快很多。
首次同步数据还取决于本地是否已有数据库水位、是否勾选“强制补历史(忽略水位全量重拉)”、Tushare 积分额度和网络稳定性。以 2024-01-01 到 2026-07-17 为例:
日常数据拉取约 2 分钟,最新季报/中报财务数据拉取约 30 分钟到 50 分钟,空库首次建仓或强制补历史数据拉取约 2~4 小时。
- 日常已有水位的增量同步,约 2 分钟属于正常且很快的水平。
- 空库首次建仓或强制补历史,会重新拉取股票、ETF、可转债、指数、资金流等历史数据,通常需要 2~4 小时;如果同时包含财务报表、股东户数等慢接口,耗时可能继续增加。
- “财务报表最新 2026-06-30”这类日期是正常的季报/中报报告期日期,不是同步当天日期;财报数据通常按季披露,存在自然滞后。如果同步日志显示“财务数据:跳过”,则本次不会消耗财报拉取时间;如果单独拉取最新季报/中报,通常需要 30 分钟到 50 分钟。
- 强制补历史适合首次建仓、修复缺口或主动重建数据库,不建议作为每天常规同步方式。
本项目仅用于量化研究、策略验证和编程学习,不构成任何投资建议、交易建议或收益承诺。股票、基金、可转债等金融资产存在风险,历史回测结果不代表未来表现。使用者应自行判断数据质量、策略风险和交易后果。
| 类型 | 方式 |
|---|---|
| 合作邮箱 | yyy18337@gmail.com |
| 问题反馈 | 提交 Issue |
MIT License © 2026 yeh2017
欢迎在二次开发或引用时注明本仓库来源,感谢支持项目持续维护。




