# boardionaire **Repository Path**: eilinge/boardionaire ## Basic Information - **Project Name**: boardionaire - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-01 - **Last Updated**: 2026-08-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Boardionaire — A 股连板模式选股系统 基于同花顺热点 + 腾讯行情 + mootdx 数据管线的连板(连续涨停)选股工具。支持盘后全量筛选和盘中实时状态标注。 ## 架构 ``` screener.py ├── Layer 1 — 数据获取:同花顺热点 / mootdx 股票池 / 腾讯行情 K 线 ├── Layer 2 — 基础筛选:涨停识别 / 价格市值 / 技术指标 / 监管过滤 ├── 盘中状态标注 — 批量行情查今日状态:已封板 / 强势 / 盘整 / 弱势 └── Layer 3 — 策略打标:6 个独立策略模块,输出 basket 分组 strategies/ ← 6 个策略,自动发现注册 ├── first_board.py 首板异动 ├── second_board.py 一进二板 ├── third_board.py 二进三板 ├── n_pattern.py N 字反包 ├── new_high.py 120 日新高板 └── leader.py 板块龙头 predict.py ← LightGBM 连板概率预测(单任务) feature_engineering.py ← 周频横截面特征矩阵 track.py ← 候选股价格记录 + N 日后回看 ``` ## 快速开始 ```bash # 安装依赖 pip install mootdx requests pandas numpy lightgbm scipy # 盘后筛选(昨日涨停 → 过滤 → 预测) python screener.py --json a_stock_features/screener_output.json python predict.py --predict --screener a_stock_features/screener_output.json # 盘中模式(昨日涨停 + 今日实时状态标注) python screener.py --intraday --json a_stock_features/screener_output.json # 调试单只股票 python screener.py --debug-code 600397 # 一键全流程 bash run_all.sh bash run_all.sh --build # 首次构建数据管线(~1 小时) ``` ## 集合竞价分析(盘中模式) 9:25 集合竞价结束后使用 `--intraday` 模式筛选当日可买入的候选股。 ```bash python screener.py --intraday --json a_stock_features/screener_output.json ``` 输出新增 `开%` 和 `量比` 两列: ``` 代码 名称 昨收 今价 今% 开% 量比 连板 距高% 002643 万润股份 19.51 20.11 +3.08% +3.2% 2.8x 首板 +7.73% 002051 中工国际 13.63 14.30 +4.92% +4.5% 1.2x 首板 +3.03% ``` ### 开盘信号判断 | 开% | 量比 | 信号 | 操作 | |-----|------|------|------| | >3% | >2x | ✅ 有量有价,主力真金白银 | **可买入** | | >3% | <1x | ⚠️ 虚拉无量,无资金跟进 | 观望 | | 0-3% | >2x | ⚠️ 有量没价,资金在买但主力压盘 | 等站稳再进 | | <0% | 任意 | ❌ 低开抛压大 | 放弃 | - **高开%** = (今开 / 昨收 - 1) × 100,集合竞价的做多意愿 - **量比** = 当前量 / 5 日均量,集合竞价的资金参与度 ### 实战流程 ``` 前一日盘后: 1. screener.py (全量扫描, ~30s) → 找出昨日涨停候选 2. predict.py (~0.1s) → 模型排序涨停概率 次日上午 9:25: 3. screener.py --intraday (~10s) → 查候选今日开盘状态 4. 筛选: 开%>3% + 量比>2x → 买入信号 ``` ### 盘中状态 | 状态 | 条件 | 含义 | |------|------|------| | 🔒已封板 | chg ≥ 9.8% | 已涨停,买不到 | | 🔥强势 | 5% ≤ chg < 9.8% | 可买入 | | ⏳盘整 | 0% ≤ chg < 5% | 观望 | | ❄️弱势 | chg < 0% | 回避 | ## 筛选流程 ``` 同花顺热点 → 沪深主板股票池 → 价格5-30 / 总市值100-1000亿 / 流通市值20-500亿 → 涨停识别(昨日首板/一进二板/二进三板) → 技术指标(收盘 > MA20/MA60/MA120) → 距120日最高为正 → 监管过滤(立案/调查/通报批评等) → 策略打标(6 策略分组输出) ``` ### 涨停与连板定义 | 概念 | 定义 | |------|------| | 涨停 | 当日涨幅 ≥ 前收价 9.8% | | 首板 | 第一个涨停,无前置连续涨停 | | 一进二板 | 连续 2 天涨停 | | 二进三板 | 连续 3 天涨停 | | 排除 ST | 名称含 `ST` / `*ST` 已剔除 | ## 市场量能模式 根据当日市场成交额切换筛选范围: ```bash # 正常量能(日成交 < 3万亿) python screener.py --json a_stock_features/screener_output.json # 高量能(日成交 ≥ 3万亿,牛市场景) python screener.py --market-mode high --json a_stock_features/screener_output.json ``` | 参数 | normal(默认) | high | |------|---------------|------| | 股价 | 5-30 元 | 5-60 元 | | 总市值 | 100-1000 亿 | 50-2000 亿 | | 流通市值 | 20-200 亿 | 20-600 亿 | | 适用场景 | 日均成交 < 3万亿 | 日均成交 ≥ 3万亿(亢奋行情) | 高量能时龙头股普遍突破 30 元、千亿市值。`--market-mode high` 让过滤范围匹配当前市场量能,避免把辨识度最高的票筛掉。 ## 输出格式 ```json { "date": "2026-06-22", "sectors": ["电子", "机械设备"], "count": 5, "candidates": [ { "code": "600397", "name": "江钨装备", "price": 18.36, "today_price": 19.50, "today_status": "🔥强势", "limit_up_label": "一进二板", "dist_120d": -3.2 } ], "basket": { "一进二": { "count": 2, "candidates": [...] }, "新高板": { "count": 3, "candidates": [...] } } } ``` ## 策略详情 | 策略 | 文件 | 说明 | |------|------|------| | 首板异动 | `first_board.py` | 非涨停但放量异动(涨5-9.5%+量2倍) | | 一进二 | `second_board.py` | 连板序数 ≥ 2 | | 二进三 | `third_board.py` | 连板序数 ≥ 3 | | N字反包 | `n_pattern.py` | 涨停→回调→再攻 | | 新高板 | `new_high.py` | 涨停突破120日最高 | | 龙头 | `leader.py` | 连板 ≥ 4(身位领先) | ## 预测模型 ```bash # 训练 python predict.py # 对筛选结果预测 python predict.py --predict --screener a_stock_features/screener_output.json ``` 特征:`limit_up_seq`, `ret_1w`, `ret_13w`, `vol_4w`, `sec_mom_5d`, `dist_120d`, `vol_3d`, `ma_gap_20_60` 等 18 维。 ## 特征工程(离线) ```bash # 首次构建 python feature_engineering.py # 增量更新 python feature_engineering.py --update ``` ## 跟踪回看 ```bash python track.py --mode record python track.py --mode check --n-days 5 ``` ## 配置 | 常量 | 默认值 | 说明 | |------|--------|------| | `PRICE_MIN/MAX` | 5 / 30 | 股价范围 | | `MCAP_MIN/MAX` | 100 / 1000 | 总市值(亿) | | `FLOAT_MCAP_MIN/MAX` | 20 / 500 | 流通市值(亿) | | `LIMIT_UP_THRESHOLD` | 9.8 | 涨停阈值(%) | ## 项目结构 ``` boardionaire/ ├── screener.py 连板模式筛选器 ├── predict.py LightGBM 预测 ├── feature_engineering.py 特征工程管线 ├── track.py 候选股跟踪回看 ├── run_all.sh 一键全流程脚本 ├── data_audit.py 数据质量审计(样本分布、时间覆盖) ├── models_nn.py MLP / LSTM 神经网络模型定义 ├── train_nn.py 神经网络训练脚本 ├── api.py FastAPI 预测服务 + 实时接口 ├── retrain_monthly.py 月度自动重训练管线 ├── build_history_db.py 历史龙头 K 线形态特征提取 ├── detect_main_lines.py 当前主线板块识别 ├── find_similar_leaders.py K 线形态相似度匹配 ├── leader_ranker.py 龙头多维排名算法 ├── run_workflow.py 主线龙头识别系统主流程 ├── strategies/ 策略模块 │ ├── __init__.py 自动发现注册 │ ├── base.py 策略基类 │ ├── first_board.py │ ├── second_board.py │ ├── third_board.py │ ├── n_pattern.py │ ├── new_high.py │ └── leader.py ├── a_stock_features/ 数据缓存(自动生成) │ ├── klines/ 日K线 parquet │ ├── models/ 训练模型 │ ├── train/valid/test.parquet │ └── ... └── results/ 运行日志 ``` ## 数据源 | 数据 | 来源 | 说明 | |------|------|------| | 股票列表 | mootdx | 沪深主板 | | 行业分类 | mootdx F10 | 每只股票所属行业 | | 实时行情 | qt.gtimg.cn | 价格/市值/涨跌幅/量比 | | 日K线 | web.ifzq.gtimg.cn | 前复权,≤800 根 | | 热点板块 | 同花顺 10jqka | 每日强势股聚合 | | 监管信息 | mootdx F10 最新提示 | 过滤监管风险 | ## 依赖 ``` mootdx >= 0.10 requests pandas numpy lightgbm >= 4.0 scipy torch >= 2.0 fastapi uvicorn ``` --- ## 神经网络模型(MLP / LSTM) 对历史数据中的涨停事件进行建模,预测个股次日涨停概率。 ### 数据审计 ```bash # 分析训练/验证/测试数据集的质量 python data_audit.py ``` 输出样本分布、时间覆盖、正例(涨停)比例、板块分布、N 日收益分布,以及神经网络训练的配置建议。 ### 模型定义 | 模型 | 文件 | 说明 | |------|------|------| | LimitUpMLP | `models_nn.py` | 全连接网络,适合截面特征 | | LimitUpLSTM | `models_nn.py` | 双向 LSTM,适合时序特征 | ### 训练 ```bash python train_nn.py --model mlp # 训练 MLP python train_nn.py --model lstm # 训练 LSTM(默认) python train_nn.py --model mlp --epochs 50 --lr 0.001 ``` 详细的训练对比报告见 `.claude/reports/model_comparison_report.md`。 --- ## 预测 API 服务 基于 FastAPI 的实时预测服务,提供 REST 接口。 ```bash # 启动服务(默认 8000 端口) uvicorn api:app --reload --port 8000 # 查看交互式文档 # http://localhost:8000/docs ``` ### 接口 | 端点 | 方法 | 说明 | |------|------|------| | `/predict` | POST | 单只股票次日涨停概率预测 | | `/predict/list` | POST | 批量预测已筛选候选股 | | `/health` | GET | 服务健康检查 | 详细使用说明见 `API_QUICKSTART.md`。 --- ## 月度自动重训练 ```bash # 手动触发重训练 python retrain_monthly.py # 查看训练日志 cat a_stock_features/retraining_logs/*.log ``` 自动流程: 1. 检查训练数据是否需要更新(距上次训练 ≥ 30 天) 2. 加载最新数据并重新提取特征 3. 重新训练 LightGBM、MLP、LSTM 模型 4. 对比新旧模型性能,择优保存 5. 记录训练日志和性能报告 详细配置见 `RETRAINING_SETUP.md`。 --- ## 主线龙头识别系统 将当前候选股与历史主线龙头的 K 线形态对比,识别潜在龙头。 ### 流程概览 ``` ┌─────────────────────┐ │ build_history_db.py │ ← 历年主线龙头配置 │ 提取 K 线形态特征 │ ← HP: 四大 + 新增 33 只 └─────────┬───────────┘ │ ▼ ┌──────────────┐ ┌─────────────────────┐ │ screener.py │ → │ detect_main_lines.py│ ← 分析 screener 数据的板块热度 │ 筛选候选股 │ │ 识别当前主线板块 │ └──────┬───────┘ └─────────┬───────────┘ │ │ ▼ ▼ ┌──────────────────────────────────────────────┐ │ find_similar_leaders.py │ │ 候选股 K 线 vs 历史龙头 K 线 → 形态相似度 │ └──────────────────┬───────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────┐ │ leader_ranker.py │ │ 综合排名:相似度 + 市场情绪 + 板块地位 │ │ + 技术指标 + 风险评估 │ └──────────────────┬───────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────┐ │ run_workflow.py │ │ 主流程编排:一键串联 Step 1→2→3→4 │ └──────────────────────────────────────────────┘ ``` ### 运行方式 ```bash # 完整流程(全部 4 个步骤) python run_workflow.py --mode full # 快速模式(跳过历史数据库构建,适合已有缓存) python run_workflow.py --mode quick # 仅排名(需要已有相似匹配结果) python run_workflow.py --mode rank-only --top-n 5 # 自定义参数 python run_workflow.py --threshold 0.80 --top-n 10 ``` ### 各模块详解 #### 1. 构建历史龙头数据库 ```bash python build_history_db.py python build_history_db.py --add-custom '{"2025-新主线":[{"code":"000001","name":"股票名","sector":"板块"}]}' ``` 当前内置 **33 只历史龙头**,覆盖 **13 条主线**: | 年份 | 主线 | 龙头数 | 代表股 | |------|------|--------|--------| | 2025 | 化工涨价 | 2 | 中毅达 600610、湖北宜化 000422 | | 2025 | DeepSeek算力 | 2 | 航锦科技 000818、掌阅科技 603533 | | 2025 | 机器人 | 3 | 鸣志电器 603728、中大力德 002896 | | 2025 | 固态电池 | 4 | 三祥新材 603663、天赐材料 002709 | | 2025 | 军工 / 商业航天 / 海峡两岸 | 3 | 长城军工、航天发展 000547 | | 2024 | 低空经济 | 5 | 万丰奥威 002085、中信海直 000099 | | 2024 | 半导体 | 3 | 上海贝岭 600171、北方华创 002371 | | 2024 | 华为海思 | 3 | 欧菲光 002456、捷荣技术 002855 | | 2023 | 华为汽车 | 4 | 赛力斯 601127、圣龙股份 603178 | | 2023 | AI算力 | 4 | 剑桥科技 603083、工业富联 601138 | 提取的 K 线特征:价格序列(归一化)、涨跌幅、连板统计、波动率、成交量趋势、均线多空比、MACD 状态等。 #### 2. 主线识别引擎 ```bash python detect_main_lines.py ``` 分析 `screener_output.json` 中各板块候选股数量和平均涨幅,识别当前最具持续性的主线板块。 #### 3. K 线形态相似度匹配 ```bash python find_similar_leaders.py --threshold 0.75 ``` 使用 **欧氏距离 + DTW 动态时间规整** 计算候选股与历史龙头的 K 线形态相似度。支持自定义阈值: - `--threshold 0.80`(默认):较严格匹配 - `--threshold 0.70`:宽松匹配,召回更多 - `--window 60`:K 线回溯天数 #### 4. 龙头排名算法 ```bash python leader_ranker.py --top-n 10 --min-score 60 ``` 五维综合评分: | 维度 | 权重 | 评分因子 | |------|------|----------| | K 线形态相似度 | 30% | 与历史龙头的形态匹配度 | | 市场情绪 | 25% | 连板数、涨幅强度、成交量放大、阳线连续性 | | 板块地位 | 20% | 板块内涨幅排名、是否为最高价、成交额排名 | | 技术指标 | 15% | 均线多头排列、MACD 金叉、量价关系 | | 风险评估 | 10% | 最大回撤、波动率、连续下跌天数、价格位置 | ### 输出 ```json { "rank": 1, "code": "002106", "name": "莱宝高科", "sector": "华为海思", "total_score": 64.7, "scores": { "similarity": 91.2, "market_sentiment": 28.0, "sector_status": 50.0, "technical": 100.0, "risk": 53.9 }, "details": { "best_match_leader": "欧菲光", "best_match_similarity": 0.91, "sentiment": { "limit_up_days": 2, ... }, "technical": { "is_bullish_alignment": true, ... }, "risk": { "max_drawdown": 10.13, ... } } } ``` 中间产物保存在 `a_stock_features/` 目录: - `historical_leaders.json` — 历史龙头特征库 - `main_lines.json` — 当前主线板块 - `similarity_matches.json` — 相似匹配结果 - `leader_ranking.json` — 最终排名输出