美股日线选股器 --- 项目概览
项目简介
美股日线选股器(US Stock Screener)是一个基于技术形态和价值指标的股票筛选工具。系统从 yfinance 获取约 200 只美股的日线数据,计算 80+ 个技术指标和形态信号,通过 FastAPI 后端和 React 前端提供交互式筛选、排序和对比功能。
系统还集成了实时行情推送(WebSocket)、预警系统(6种规则类型)、宏观指标监控、板块轮动分析、多时间周期共振策略、基本面评分体系、信号产品系统(候选池→盘中信号→模拟交易→绩效分析)和因子回测等高级功能。
技术栈
| 层级 | 技术 | 说明 |
|---|---|---|
| 数据获取 | yfinance | 免费 API,无需密钥 |
| 特征工程 | pandas + numpy | 技术指标计算 |
| 后端 | FastAPI + uvicorn | 异步 API 服务 |
| 前端 | Vite + React 18 + TypeScript | SPA 单页应用 |
| 数据存储 | Parquet 文件 | 列式存储,高效压缩 |
| 信号存储 | SQLite | 候选池、信号、模拟仓位持久化 |
| 预警存储 | SQLite | 规则与事件持久化 |
| 实时数据 | yfinance / 阿里云 | 免费(延迟)/ 付费(实时) |
| 实时推送 | WebSocket | 服务端主动推送报价 |
| K线图表 | lightweight-charts | 交互式技术图表 |
| 路由 | react-router-dom | SPA 页面路由 |
架构总览
┌──────────────────────────────────────────────────────────────────┐
│ Frontend (React 18 SPA) │
│ 筛选面板 │ 股票表格 │ 详情抽屉 │ K线图 │ 对比分析 │ 预警中心 │
│ 宏观指标 │ 板块轮动 │ 多周期预设 │ 数值筛选 │ 实时扫描器 │
│ 信号中心 │ 信号绩效 │ 模拟组合 │ 回测报告 │ 形态统计 │
└─────────────────────────────┬────────────────────────────────────┘
│ HTTP + WebSocket (proxy :5173 → :8000)
┌─────────────────────────────▼────────────────────────────────────┐
│ Backend (FastAPI + uvicorn) │
│ /api/meta │ /api/stocks │ /api/rt/* │ /api/alerts │ /api/macro │
│ /api/sectors │ /api/pattern-stats │ /api/presets │ /ws/rt │
│ /api/signals/* │ /api/backtest/* │
│ loader.py (内存缓存) ← data.parquet (200+行 × 80+列) │
│ history.parquet │ fundamentals.parquet │ macro/sectors parquet │
│ RTHub (推送中心) │ AlertEngine (预警引擎) │ SQLite (规则/信号存储) │
│ SignalEntryEngine (信号入场引擎) │ SignalProductRepository │
└─────────────────────────────┬────────────────────────────────────┘
↑ 构建时生成
┌─────────────────────────────┴────────────────────────────────────┐
│ Data Pipeline (scripts/) │
│ yfinance_client → feature_engine → scorer → parquet output │
│ rt_manager → rt_providers → rt_push_providers (实时数据) │
│ build_macro → macro.parquet │ build_sectors → sectors.parquet │
│ signal_candidate_pool → candidates │ signal_outcomes → MFE/MAE │
└──────────────────────────────────────────────────────────────────┘
模块说明
| 模块 | 文档 | 说明 |
|---|---|---|
| scripts/ | <01-data-pipeline.md> | 数据获取、特征工程、快照构建、宏观/板块数据、信号候选池 |
| backend/ | <02-backend-api.md> | API 服务、查询引擎、实时推送、预警系统、信号产品、回测接口 |
| frontend/ | <03-frontend-ui.md> | 筛选界面、详情、图表、对比、预警、信号中心、回测报告 |
| demo/ | <04-factor-backtest.md> | Alpha101 因子回测、中性化、多空选股、多信号共振 |
| scripts/screener/ | <05-realtime-screener.md> | 多因子实时选股引擎(基本面/周线/Alpha/盘中) |
| --- | <06-deployment.md> | 部署、开发服务器、测试体系、配置管理 |
核心功能
1. 技术形态筛选
支持 30+ 种 K 线形态和技术信号的组合筛选,包括单 K 形态、双 K 形态、三 K 形态、趋势结构、量价关系和波动率形态。
2. 高级技术指标
80+ 个技术指标覆盖 6 大类别:
| 类别 | 指标 | 信号列 |
|---|---|---|
| 趋势 | MACD (DIF/DEA/Histogram)、ADX (+DI/-DI) | 金叉/死叉、强趋势 |
| 动量 | RSI-14、Stochastic (%K/%D)、CCI-20、Williams %R | 超买/超卖、背离 |
| 波动率 | Bollinger Bands (上/中/下/宽度)、ATR + 止损 | 挤压信号、触及上下轨 |
| 量能 | OBV、Chaikin Oscillator、MFI-14、VWAP | 量价背离、资金进出 |
| 财务健康 | Piotroski F-Score (0-9)、Altman Z-Score | 财务强健/财务困境 |
| 综合评分 | Value-Growth Composite (0-100) | 价值质量 |
3. 基本面评分体系
三维度基本面分析框架:
- Piotroski F-Score:9 项财务健康指标评分(0-9 分),≥7 分标记为"财务强健"
- Altman Z-Score:破产预警模型,<1.81 标记为"财务困境"
- 价值-成长复合评分:估值质量 (40%) + 盈利能力 (30%) + 成长性 (30%)
4. 信号产品系统
完整的交易信号管线,从离线候选到盘中信号到绩效追踪:
- 候选池生成:离线多因子打分,输出每日 Top 20 候选股
- 盘中信号入场:4 重入场门控(VWAP、动量、量能、波动率)
- 模拟交易:Paper Trading 跟踪开仓/平仓/盈亏
- 绩效分析:MFE/MAE、多周期前向收益 (1/3/5/10 日)、胜率
5. 综合评分
基于多维度的信号评分系统(0-100 分),综合考虑技术形态、连续指标和估值水平。
6. 股票详情
详情抽屉展示完整的股票信息,包含基本面、技术指标、财务数据和风险指标。研究页面提供 K 线图、技术面分析、财务面分析和形态历史回溯。
7. 多股对比
最多 5 只股票的并列对比分析,按 7 个维度比较并高亮最优/最差值。
8. 实时行情
盘中实时数据支持:
- 免费源:yfinance(~15 分钟延迟)
- 付费源:阿里云金融 API(真正实时)
- WebSocket 推送:服务端主动推送报价到前端
- 实时排名:按成交额/涨跌幅/成交量排序
- 异动扫描:涨幅榜、跌幅榜、成交量异动
9. 预设策略
内置 5 种选股策略(趋势突破、回调低吸、质量成长、估值修复、风险预警),一键应用筛选组合。
10. 多时间周期共振
支持日线、周线、60 分钟、30 分钟、15 分钟、5 分钟多周期分析,提供跨周期预设策略与共振评分。
11. 预警系统
6 种预警规则类型(价格变动、突破新高/新低、成交量异动、均线交叉、52 周高低),通过 WebSocket 实时推送 Toast 通知。
12. 宏观指标监控
实时展示 VIX 恐慌指数、10 年期美债收益率、美元指数 DXY、标普 500 等宏观指标,自动计算风险等级(平静/正常/风险)。
13. 板块轮动分析
11 个板块 ETF + 3 个风格 ETF 的相对强弱排名,展示动量和相对 SPY 基准的表现。
14. 因子回测与回测报告
Alpha101 因子评估和多因子选股回测系统:
- 因子 IC/ICIR 评估与中性化
- 多空组合绩效分析(Sharpe、回撤、Calmar)
- 多信号共振回测(形态组合胜率统计)
- 交易成本建模(佣金、滑点、融券成本)
- 前端可视化回测报告页面
快速启动
bash
# 1. 构建数据快照
python3 scripts/build_snapshot.py
# 2. 构建宏观与板块数据
python3 scripts/build_macro.py
python3 scripts/build_sectors.py
# 3. 启动后端
cd backend && source .venv/bin/activate
uvicorn main:app --reload --port 8000
# 4. 启动前端
cd frontend && npm install && npm run dev
# 或使用统一脚本
bash scripts/dev_server.sh start
数据说明
- 股票池:约 200 只美股,覆盖科技、金融、医疗、能源、工业、消费、基建、太空、汽车等 9 个板块
- 数据源:yfinance(免费,无需 API Key),可选阿里云(付费,实时)
- 更新频率:手动运行 build_snapshot.py 更新快照
- 技术指标:约 80 个,包含移动平均、K 线形态、量价关系、波动率、动量、趋势等
- 财务指标:PE、PEG、ROE、利润率、营收增长、Piotroski F-Score、Altman Z-Score 等
- 实时推送:WebSocket 服务端推送,支持 TickFlow / Ashen / 阿里云三种上游源
- 预警规则:SQLite 存储,每设备最多 50 条规则,30 天事件保留
- 信号系统:SQLite 持久化候选池、入场信号、模拟仓位和绩效追踪