从零搭建量化分析系统之热点追踪-02-说明文档

版本:v1.0 | 更新日期:2026-07-16

1. 系统概述

1.1 系统定位

Market Hotspot 是一套面向 A 股(含港股通)的盘中热点侦测与评估系统。通过多源行情数据的实时采集、多维特征计算、加权评分以及收盘后的量化评估,帮助用户识别盘中异动个股和板块热点。

1.2 核心能力

能力 说明
实时热点侦测 每分钟计算 HotScore 综合评分,对股票池内个股实时排名
板块联动分析 监控行业/概念板块的涨跌、涨停分布,识别板块共振
异动告警 成交额爆发、HotScore 急升、板块共振、涨停炸板等 5 种告警规则
信号评估闭环 盘中拍快照 → N 分钟后回填真实涨跌 → 计算 Precision/Recall/超额收益
权重自动调优 基于滚动 IC 分析,收盘后自动调整 HotScore 分量权重
龙虎榜集成 收盘后自动采集东方财富龙虎榜数据,回填至评估指标
股票池热更新 每 5 分钟从 MySQL 检测股票池变化,自动增删采集和计算范围

1.3 技术栈

类别 技术选型
后端框架 FastAPI + Uvicorn(异步)
行情数据源 通达信 pytdx、新浪财经 HTTP、东方财富 Playwright
实时缓存 Redis(排行、特征、告警、龙虎榜)
历史持久化 DuckDB(特征历史、评估记录、日报)
股票池/板块 MySQL(stock_pool 数据库)
实时推送 WebSocket
进程模型 单进程多协程(asyncio)

2. 系统架构

2.1 分层架构

┌─────────────────────────────────────────────────────────┐
│                      API 层                              │
│   FastAPI REST  ·  WebSocket /ws  ·  静态前端(预留)      │
├─────────────────────────────────────────────────────────┤
│                     计算引擎层                            │
│  FeatureEngine · HotScoreEngine · SectorEngine · Alert   │
├─────────────────────────────────────────────────────────┤
│                      评估层                              │
│  EvalEngine · Baseline · SessionAnalyzer · IC · Reporter │
├─────────────────────────────────────────────────────────┤
│                     采集层                                │
│  Tick · OrderBook · Sector · LimitUp · HK · Longhu       │
├─────────────────────────────────────────────────────────┤
│                     存储层                                │
│  DataBus(内存)  ·  Redis(实时)  ·  DuckDB(历史)  ·  MySQL │
└─────────────────────────────────────────────────────────┘

2.2 数据流向

数据源                    采集层              DataBus         引擎层               存储 / API
──────                   ──────             ───────         ──────              ────────
通达信 pytdx ──→ TickCollector      ──→ [tick]     ──→ FeatureEngine ──→ Redis 排行
             ──→ OrderBookCollector ──→ [orderbook]     ↓                  DuckDB 历史
             ──→ LimitUpCollector   ──→ [limitup]  ──→ HotScoreEngine ──→ WebSocket
                                                        ↓
新浪财经 HTTP ──→ SectorCollector   ──→ [sector]   ──→ SectorEngine   ──→ Redis 板块
             ──→ HKCollector        ──→ [tick/ob]       ↓
                                                   AlertEngine    ──→ Redis 告警
东方财富     ──→ LonghuCollector    ──→ (直写Redis)      ↓
                                                   EvalEngine     ──→ DuckDB 评估
MySQL        ──→ 股票池/板块映射                          ↓
                                                   DailyReporter  ──→ 日报 + 调权

2.3 内部消息总线(DataBus)

系统通过内存中的 DataBus(基于 asyncio.Queue)实现采集层与引擎层的解耦:

通道 生产者 消费者
tick TickCollector, HKCollector FeatureEngine
orderbook OrderBookCollector, HKCollector FeatureEngine
sector SectorCollector SectorEngine
limitup LimitUpCollector SectorEngine

3. 数据采集层

3.1 采集器一览

采集器 数据源 采集内容 默认间隔 运行时段
TickCollector 通达信 pytdx 逐笔成交(含买卖方向) 15 秒 09:30–15:00
OrderBookCollector 通达信 pytdx 五档盘口快照 10 秒 09:15–15:35
SectorCollector 新浪财经 HTTP 行业 + 概念板块涨跌 300 秒 09:15–15:35
LimitUpCollector 通达信 pytdx 股票池内涨停检测 60 秒 09:25–15:35
HKCollector 新浪 hq.sinajs.cn 港股实时行情 30 秒 09:15–16:10
LonghuCollector 东方财富 Playwright 龙虎榜上榜记录 按需(17:00) 收盘后单次

说明:OrderBook、Sector、LimitUp 延伸到 15:35 以覆盖 A 股盘后固定价格交易时段(15:00–15:30)。

3.2 CollectorManager

CollectorManager 负责统一管理所有采集器的生命周期:

  • 注册与启动register_defaults() 自动创建所有采集器实例并注入关注列表
  • 时段控制_session_monitor() 每 30 秒检测当前时段,自动暂停/恢复各采集器
  • 连接池:为 pytdx 系采集器(tick/orderbook/limitup)提供共享的 TCP 连接池(默认 8 个连接)
  • 通达信服务器选优:启动时自动测速,选择延迟最低的服务器

3.3 TickCollector 细节

  • 增量采集:记录每只股票上次采集位置,只拉取新数据
  • 买卖方向解析:根据成交价与买一/卖一的关系判断主动买/卖
  • 并发控制:通过连接池限制并发连接数
  • 数据标准化:统一输出 TickRecord 结构体

3.4 HKCollector 特殊处理

  • 港股代码格式:HK00700(带 HK 前缀)
  • 午休跳过:12:00–13:00 不采集
  • 容错机制:连续失败后自动重建 HTTP 客户端,防止连接老化

3.5 LonghuCollector 工作原理

  1. 使用 Playwright 打开东方财富龙虎榜页面
  2. 监听 datacenter-web.eastmoney.com/api/data/v1/get 接口请求
  3. 自动处理弹窗和广告覆盖层
  4. 通过 JavaScript 注入一次性获取所有分页数据
  5. 解析 JSONP/JSON 响应,提取上榜记录
  6. 输出标准化 LonghuRecord 数据结构

4. 计算引擎层

4.1 FeatureEngine — 特征计算引擎

每分钟消费 tick 和 orderbook 数据,为股票池内每只股票计算 四大类特征

成交特征

特征 含义
volume_surge_5m 5 分钟成交额与前 30 分钟均值的比率
volume_surge_1m 1 分钟成交额突增比率
volume_ratio 量比(当前分钟 vs 历史同时刻均值)
turnover_rate 区间换手率
large_order_ratio 大单(≥50 万元)占比
trade_density 成交笔数密度(笔/分钟)

资金主动性特征

特征 含义
active_buy_amount 主动买入金额
active_sell_amount 主动卖出金额
net_active_buy 净主动买入 = 主买 − 主卖
active_buy_ratio 主动买入占比 = 主买 / 总成交
consecutive_buy_count 连续主动买入笔数
buy_momentum 买入动量(短期 vs 长期主买比率变化)

盘口结构特征

特征 含义
bid_ask_imbalance 买卖盘口不平衡度
seal_amount 涨停封单金额
seal_duration 涨停封单持续时间(分钟)
cancel_rate 撤单率
ask_decay_speed 卖盘衰减速度
spread 买一卖一价差
depth_ratio 买卖盘口深度比

板块联动特征(由 SectorEngine 注入)

特征 含义
sector_change_pct 所属板块涨跌幅
sector_up_ratio 板块内上涨比例
sector_limitup_count 板块内涨停数
sector_volume_surge 板块成交额突增
market_sentiment 全市场情绪指数(0–100)
sector_rank 板块在全市场排名

时序缓冲

每只股票维护一个 30 分钟环形缓冲TimeSeriesBuffer),用于计算滑动窗口指标。被移出股票池的标的会自动清理缓冲。

4.2 HotScoreEngine — 热点评分引擎

核心公式:

HotScore = Σ(weight_i × percentile_rank(feature_i)) × 100
分量 默认权重 来源特征
volume_surge 0.35 volume_surge_5m
active_buy 0.25 active_buy_ratio
sector_linkage 0.20 sector_up_ratio × sector_change_pct
turnover 0.10 turnover_rate
seal_quality 0.10 log1p(seal_amount × seal_duration)

评分等级

等级 阈值 含义
strong_hot Score ≥ 85 强热点
potential_hot Score ≥ 70 潜在热点
normal Score < 70 普通

权重热加载

  • 权重配置文件:config/hotscore_weights.yaml
  • 支持运行时修改后自动生效(文件变更检测)
  • 收盘后 _auto_adjust_weights() 基于 IC 分析自动优化权重

4.3 SectorEngine — 板块联动引擎

数据来源:新浪财经板块行情 + LimitUp 涨停检测

核心功能

功能 说明
板块热度排行 综合涨幅、涨停数、成交额计算板块 heat_score
龙头股识别 每个板块内涨幅最高的个股标记为龙头
全市场情绪指数 综合上涨比例、涨停数、板块热度的 0–100 评分
联动特征注入 为 FeatureEngine 提供每只股票所属板块的联动特征

板块映射来源:MySQL stock_pool 表的 sector 字段,维护双向映射(sector_to_symbols / symbol_to_sectors)。

4.4 AlertEngine — 异动告警引擎

规则 条件 级别 说明
hot_surge score_delta_5m > 25 high HotScore 5 分钟内急速升温
volume_explosion volume_surge_5m > 5 high 成交额 5 倍以上爆发
sector_resonance sector_heat > 80 且涨停 ≥ 3 medium 板块共振启动
seal_break 涨停封板 → 打开 medium 涨停板炸板预警
continuous_buy 连续买 > 20 且主买比 > 0.75 low 连续大单买入

限流策略
- 同规则同股票冷却:5 分钟内不重复告警
- 全局频控:每分钟最多 20 条告警


5. 评估层

评估层是 Market Hotspot 的核心价值闭环——不仅产出信号,还量化验证信号的准确性。

5.1 评估流程

盘中每分钟:
  ┌──────────────────────────────────────────────────────┐
  │ T 时刻: 拍快照 (HotScore Top N 的标的 + 当前价格)      │
  │                    ↓                                  │
  │ T+N 分钟: 回填真实结果                                  │
  │   · 当前价格 → 计算涨跌幅                               │
  │   · 是否涨停                                           │
  │   · 是否进入龙虎榜                                      │
  │   · 是否成交额 Top20                                    │
  │   · 是否板块龙头                                        │
  │                    ↓                                  │
  │ 生成 EvalRecord (Precision / Recall / 超额收益)         │
  └──────────────────────────────────────────────────────┘

收盘后 17:00:
  ┌──────────────────────────────────────────────────────┐
  │ 1. 采集龙虎榜 → patch_longhu 回填当日 outcomes          │
  │ 2. 生成每日评估报告                                     │
  │ 3. 基于 IC 自动调整 HotScore 权重                       │
  └──────────────────────────────────────────────────────┘

5.2 评估指标

指标 定义
Precision Top N 中上涨股票占比
Recall Top N 命中的上涨股票占全市场上涨股票的比例
平均收益 Top N 股票的平均涨跌幅
超额收益 Top N 平均收益 − 全市场平均收益
上涨比例 Top N 中上涨的比例
涨停命中 Top N 中后续涨停的股票数
龙虎榜命中 Top N 中当日上龙虎榜的股票数

5.3 评估子模块

模块 功能
PrecisionByThreshold 多阈值分析:Score ≥ 90/85/80/75/70,Top 10/20/50 各自的 Precision 和收益
BaselineComparator 基线对比:HotScore Top20 vs 成交额 Top20 vs 涨幅 Top20 vs 随机 20 只
SessionAnalyzer 分时段分析:开盘 15 分钟 / 上午中段 / 上午尾段 / 下午前段 / 下午中段 / 尾盘 30 分钟
FeatureICAnalyzer 分量 IC 分析:计算 5 个 HotScore 分量与后续涨跌的 Spearman Rank IC
WeightOptimizer 权重优化建议:基于 IC 正负和大小,建议权重调整方向(单次步长 ≤ 10%)
DailyReporter 日报生成:汇总以上所有分析生成结构化日报

5.4 每日评估报告示例

═══════════════════════════════════════════════════════
  2026-07-16 评估报告 | 10分钟窗口 | Top20
═══════════════════════════════════════════════════════

  快照数: 25  覆盖股票: 174

  ── 核心指标 ──
  平均 Precision:  14.6%
  平均 Recall:     2.3%
  平均收益:        -0.21%
  平均超额收益:    -0.11%
  平均上涨比例:    14.6%
  涨停命中:        107
  龙虎榜命中:      3

  ── 基线对比 ──
  策略                     平均收益       上涨比例        中位数
  HotScore Top20      +0.06%    25.0%    +0.00% ★
  成交额 Top20           +0.63%    75.0%    +0.53%
  涨幅 Top20            +0.01%    20.0%    +0.00%
  随机20只               +0.22%    40.0%    +0.00%

  ── 分时段 Precision ──
  下午中段       样本=  6  Precision=7.5%  收益=-0.35%  超额=-0.09%
  尾盘30分钟     样本= 19  Precision=16.8%  收益=-0.16%  超额=-0.12%

  ── 分量 IC 分析 ──
  volume_surge     IC=-0.082  权重 0.35 → -  [基本无用]
  active_buy       IC=-0.070  权重 0.25 → -  [基本无用]
  sector_linkage   IC= 0.122  权重 0.20 → 0.37  [强信号]
  turnover         IC= 0.000  权重 0.10 → 0.0  [基本无用]
  seal_quality     IC= 0.212  权重 0.10 → 0.63  [强信号]

  ── 多阈值 Precision ──
  score≥90     选中=  0  Precision=0.0%  收益=+0.00%
  score≥85     选中=  0  Precision=0.0%  收益=+0.00%
  score≥80     选中= 15  Precision=13.3%  收益=-0.41%
  score≥75     选中= 32  Precision=6.2%  收益=-0.33%
  score≥70     选中= 67  Precision=13.4%  收益=-0.22%
  top10        选中= 10  Precision=20.0%  收益=-0.43%
  top20        选中= 20  Precision=10.0%  收益=-0.37%
  top50        选中= 50  Precision=10.0%  收益=-0.22%
═══════════════════════════════════════════════════════

5.5 权重自动调优

收盘后系统基于近 5 日滚动 IC 自动调整 HotScore 权重:

  1. 计算每个分量在近 5 日的平均 Spearman IC
  2. IC 为负或接近零的分量,权重逐步降低(单次最多 -10%)
  3. IC 为正的分量,按 IC 大小重新分配权重
  4. 调整结果写回 config/hotscore_weights.yaml,同时保留 previous_weightsrolling_ic 作为审计记录

6. 存储层

6.1 Redis — 实时状态

Key 模式 数据类型 说明 TTL
hotspot:ranking:{date} Sorted Set 热点排行(score 为 HotScore) 24h
hotspot:features:{symbol} Hash 最新特征快照 24h
hotspot:score_history:{symbol}:{date} List 当日 HotScore 时序 7d
sector:ranking:{date} Sorted Set 板块热度排行 24h
alert:recent List(≤100) 最近告警列表 24h
hotspot:longhu:{date} List 龙虎榜记录(JSON) 3d
eval:latest:{horizon} Hash 最新评估指标
eval:precision_series:{date}:{horizon} List Precision 分钟时序 7d
system:collector_stats Hash 采集器状态统计

6.2 DuckDB — 历史持久化

内容 保留策略
feature_history 每分钟特征 + HotScore 快照 data_keep_days(默认 30 天)
eval_snapshots 评估快照(Top N 标的列表) 同上
eval_outcomes 单股回填结果(涨跌、涨停、龙虎榜等) 同上
eval_records 评估汇总记录(Precision、收益、命中数) 同上
eval_daily_report 每日评估报告 JSON 同上

数据库文件位置:data/hotspot/hotspot.duckdb

6.3 MySQL — 股票池

系统从 MySQL stock_pool 数据库读取关注列表:

用途
stock_pool 股票池,字段:symbol, name, sector, is_active, market 等

仅读取 is_active = 1 的记录,每 5 分钟自动检测变化并热更新。

6.4 DataBus — 内存消息队列

基于 asyncio.Queue 实现的轻量级发布/订阅总线,采集器发布原始数据,引擎层消费。队列溢出时自动清理旧数据并记录警告日志。


7. API 接口

系统默认运行在 http://127.0.0.1:8001

7.1 系统基础

方法 路径 说明
GET /health 健康检查,返回 status、is_trading_day、is_trading_time

7.2 热点排行 /api/hotspot

方法 路径 参数 说明
GET /api/hotspot/ranking n=20 返回 Top N 热点排行,含名称、等级、涨跌幅、量比
GET /api/hotspot/detail/{symbol} 单股详情:全量特征 + HotScore 分量明细
GET /api/hotspot/history/{symbol} 当日 HotScore 分钟级历史曲线
GET /api/hotspot/surging threshold=20 5 分钟内分数急升的股票(delta_5m > threshold)

7.3 板块 /api/sector

方法 路径 参数 说明
GET /api/sector/ranking n=30 板块热度排行,含 heat_score、涨幅、涨停数、龙头

7.4 告警 /api/alert

方法 路径 参数 说明
GET /api/alert/recent n=50 最近告警列表

7.5 评估 /api/eval

方法 路径 参数 说明
GET /api/eval/realtime horizon=10 实时评估指标:Precision、超额收益、涨停命中
GET /api/eval/precision_series/{date} horizon=10 指定日期的 Precision 分钟时序
GET /api/eval/daily/{date} 指定日期的评估日报
GET /api/eval/trend days=7 近 N 日 Precision / 超额收益趋势

7.6 龙虎榜 /api/longhu

方法 路径 参数 说明
GET /api/longhu/today trade_date 当日龙虎榜记录,含上榜原因、买卖金额、是否在股票池
GET /api/longhu/symbols trade_date 当日上榜标的代码集合

7.7 系统管理 /api/system

方法 路径 说明
GET /api/system/collectors 采集器实时状态 + Redis 存储统计
GET /api/system/config 当前运行配置(密码等敏感字段脱敏)

7.8 WebSocket /ws

连接后自动接收实时推送,消息格式为 JSON:

type 触发时机 data 内容
ranking_update 每分钟计算完成后 Top 20 排行(含 level、change_pct、score)
alert 告警触发时 告警详情(规则、级别、标的、描述)
eval_update 评估回填完成时 最新 EvalRecord(Precision、收益、命中数)

8. 配置说明

所有配置集中在 config/settings.yaml,支持点分路径访问(如 settings.get("storage.redis.host"))。

8.1 系统配置

配置项 默认值 说明
system.name market_hotspot 系统名称
system.log_level INFO 日志级别(DEBUG / INFO / WARNING / ERROR)
system.timezone Asia/Shanghai 系统时区
system.debug_mode false 调试模式,跳过交易日/时段限制
system.stock_pool_reload_seconds 300 股票池热更新间隔(秒)
system.data_keep_days 30 DuckDB 历史数据保留天数

8.2 采集器配置

配置项 默认值 说明
collector.watch_source stock_pool 关注列表来源(stock_pool / market_csv)
collector.tick.interval_seconds 15 逐笔成交采集间隔
collector.tick.max_symbols 600 最大监控标的数
collector.orderbook.interval_seconds 10 五档盘口采集间隔
collector.orderbook.batch_size 80 盘口单次批量查询数
collector.sector.interval_seconds 300 板块行情采集间隔
collector.limitup.interval_seconds 60 涨停扫描间隔
collector.hk.interval_seconds 30 港股行情采集间隔
collector.longhu.headless false 龙虎榜 Playwright 无头模式
collector.longhu.timeout_ms 60000 龙虎榜页面加载超时

8.3 连接池配置

配置项 默认值 说明
collector.connection_pool.size 8 pytdx TCP 连接池大小
collector.connection_pool.reconnect_delay 5 断线重连延迟(秒)
collector.connection_pool.max_retries 3 最大重试次数
collector.tdx_servers 11 个服务器 通达信行情服务器列表

8.4 特征与评分配置

配置项 默认值 说明
feature.buffer_minutes 30 时序缓冲保留分钟数
feature.compute_interval_seconds 60 特征计算周期(秒)
feature.large_order_threshold 500000 大单阈值(元)
hotscore.thresholds.strong_hot 85 强热点阈值
hotscore.thresholds.potential_hot 70 潜在热点阈值

8.5 告警配置

配置项 默认值 说明
alert.cooldown_minutes 5 同规则同股票告警冷却时间
alert.max_alerts_per_minute 20 每分钟最大告警数

8.6 评估配置

配置项 默认值 说明
eval.horizons [5, 10, 15, 30] 评估回看窗口(分钟)
eval.top_n_list [10, 20, 50] 评估 Top N 粒度
eval.snapshot_interval_seconds 60 快照间隔(秒)

8.7 存储配置

配置项 说明
storage.redis.host Redis 服务器地址
storage.redis.port Redis 端口
storage.redis.db Redis 数据库编号
storage.redis.password Redis 密码
storage.duckdb.data_root DuckDB 数据目录
storage.mysql.host MySQL 服务器地址
storage.mysql.port MySQL 端口
storage.mysql.database MySQL 数据库名
storage.mysql.username MySQL 用户名
storage.mysql.password MySQL 密码

8.8 API 配置

配置项 默认值 说明
api.host 127.0.0.1 监听地址
api.port 8001 监听端口
api.ws_ping_interval 30 WebSocket 心跳间隔(秒)

8.9 HotScore 权重配置

独立文件 config/hotscore_weights.yaml,支持热加载和自动调优:

version: 1
updated_at: "2026-07-14"
note: "初始权重,来自规划书推荐值"

weights:
  volume_surge: 0.35
  active_buy: 0.25
  sector_linkage: 0.20
  turnover: 0.10
  seal_quality: 0.10

thresholds:
  strong_hot: 85
  potential_hot: 70

normalization:
  method: "percentile_rank"

自动调权后文件会更新 version、附带 previous_weightsrolling_ic 审计字段。


9. 运行时间线

9.1 交易日完整时间线

时间 事件 说明
启动 系统初始化 加载配置 → 连接存储 → 加载股票池 → 启动采集器 + API
09:15 盘前采集开始 orderbook / sector / hk 开始运行
09:25 涨停扫描开始 limitup 采集器启动
09:30 开盘 tick 采集器启动,特征计算和评估开始
09:30–11:30 上午盘 每分钟:采集 → 特征 → 评分 → 快照 → 回填 → 告警
11:30–13:00 午休 A 股采集暂停,港股持续(跳过 12:00–13:00)
13:00–15:00 下午盘 恢复全量运行
15:00–15:30 A 股盘后交易 orderbook / sector / limitup 继续采集(tick 已停)
15:35 A 股采集结束 orderbook / sector / limitup 暂停
16:10 港股收盘 hk 采集器暂停
17:00 收盘任务 ① 龙虎榜采集 → ② patch_longhu 回填 → ③ 日报生成 → ④ 权重调优 → ⑤ 历史清理
每 5 分钟 股票池热更新 仅在 09:00–15:40 期间检测 MySQL 变化

9.2 非交易日

系统保持运行但采集器不启动,计算循环不执行(可通过 debug_mode: true 强制运行)。


10. 部署与运维

10.1 环境要求

依赖 版本要求 说明
Python ≥ 3.10 推荐 3.11+
Redis ≥ 5.0 实时缓存
MySQL ≥ 5.7 股票池数据源
Playwright 龙虎榜采集需要(需安装 Chromium)

10.2 安装步骤

# 1. 创建虚拟环境
conda create -n market_hotspot python=3.11
conda activate market_hotspot

# 2. 安装依赖
pip install -r requirements.txt

# 3. 安装 Playwright 浏览器(龙虎榜采集)
playwright install chromium

# 4. 配置
cp config/settings.yaml.example config/settings.yaml
# 编辑 settings.yaml,填入 Redis/MySQL 连接信息

# 5. 启动
python main.py

10.3 运行方式

# 前台运行
python main.py

# 后台运行(Linux)
nohup python main.py > /dev/null 2>&1 &

# systemd 服务(推荐)
systemctl start market_hotspot

10.4 日志

  • 控制台输出:带颜色的实时日志
  • 文件日志:logs/ 目录下按日滚动
  • 日志格式:时间|级别|模块:函数:行号 - 消息
  • 日志级别:通过 system.log_level 配置

10.5 运维检查

检查项 方式
服务存活 GET /health
采集器状态 GET /api/system/collectors
Redis 连通性 检查采集器统计是否更新
数据时效性 检查排行更新时间
磁盘空间 DuckDB 文件大小,30 天自动清理

11. 工具脚本

11.1 Redis 陈旧数据清理

当股票池发生较大变动后,可运行此脚本清理不在当前股票池中的 Redis 残留数据:

# 预览模式(不实际删除)
python scripts/cleanup_redis_stale.py

# 执行清理
python scripts/cleanup_redis_stale.py --execute

清理范围:
- hotspot:features:* 中不在股票池的标的
- hotspot:score_history:* 中不在股票池的标的
- 当日排行中不在股票池的成员


12. 已规划未实现功能

以下功能在技术方案中有规划但尚未实现:

功能 说明 优先级
AI 模型预测 基于 LightGBM 的热点预测模型,model/ 目录已占位
前端界面 实时排行、K 线、板块热力图等可视化界面,frontend/ 路由已预留
节假日日历 接入 akshare 的 A 股交易日历,当前仅排除周末
板块详情 API /api/sector/detail/{sector} 查看板块成分股详情
板块共振 API /api/sector/resonance 多板块联动分析
权重手动调整 PUT /api/system/config/weights 通过 API 修改权重
评估详细 API 快照详情、基线对比、IC 趋势等独立接口

附录 A:数据模型

核心数据结构

模型 字段概要 用途
TickRecord symbol, price, volume, amount, direction, timestamp 逐笔成交记录
OrderBookSnapshot symbol, bids[5], asks[5], last_price, amount 五档盘口快照
SectorSnapshot sector_code, name, change_pct, volume, leader 板块快照
LimitUpRecord symbol, name, seal_amount, open_count, sector 涨停记录
LonghuRecord symbol, name, trade_date, reason, buy_amount, sell_amount, net_amount 龙虎榜记录
FeatureSnapshot symbol + 25 个特征字段 全量特征快照
HotScoreResult symbol, score, level, rank, components 评分结果
Alert rule, level, symbol, message, timestamp 异动告警
EvalSnapshot snapshot_id, top_symbols, prices, scores 评估快照
OutcomeRecord symbol, return_pct, went_up, hit_limit_up, entered_longhu, ... 回填结果
EvalRecord precision_up, avg_return, excess_return, limit_up_count, ... 评估汇总
MarketState sentiment, up_ratio, limit_up_count 全市场状态
CollectorStats name, total_records, total_requests, errors 采集器统计

附录 B:目录结构

market_hotspot/
├── main.py                     # 系统入口
├── requirements.txt            # Python 依赖
├── .python-version             # conda 环境名
│
├── config/
│   ├── settings.yaml           # 全局配置
│   └── hotscore_weights.yaml   # HotScore 权重(支持热加载 + 自动调优)
│
├── api/                        # REST + WebSocket API
│   ├── routes_hotspot.py       # 热点排行相关
│   ├── routes_sector.py        # 板块相关
│   ├── routes_alert.py         # 告警相关
│   ├── routes_eval.py          # 评估相关
│   ├── routes_longhu.py        # 龙虎榜相关
│   ├── routes_system.py        # 系统管理
│   └── ws.py                   # WebSocket 管理
│
├── collector/                  # 数据采集层
│   ├── base.py                 # 采集器基类
│   ├── manager.py              # 采集器管理器
│   ├── tick_collector.py       # 逐笔成交
│   ├── orderbook_collector.py  # 五档盘口
│   ├── sector_collector.py     # 板块行情
│   ├── limitup_collector.py    # 涨停检测
│   ├── hk_collector.py         # 港股行情
│   └── longhu_collector.py     # 龙虎榜
│
├── engine/                     # 计算引擎层
│   ├── feature_engine.py       # 特征计算
│   ├── hotscore_engine.py      # 热点评分
│   ├── sector_engine.py        # 板块联动
│   └── alert_engine.py         # 异动告警
│
├── evaluator/                  # 评估层
│   ├── eval_engine.py          # 评估引擎
│   ├── precision.py            # 多阈值 Precision
│   ├── baseline.py             # 基线对比
│   ├── session_analyzer.py     # 分时段分析
│   ├── ic_analyzer.py          # IC 分析
│   ├── weight_optimizer.py     # 权重优化
│   └── reporter.py             # 日报生成
│
├── storage/                    # 存储层
│   ├── cache.py                # DataBus + 时序缓冲
│   ├── redis_store.py          # Redis 存储
│   └── duckdb_store.py         # DuckDB 存储
│
├── common/                     # 公共模块
│   ├── config.py               # 配置管理
│   ├── models.py               # 数据模型
│   ├── trading_calendar.py     # 交易日历
│   ├── symbol_utils.py         # 代码工具
│   └── logger.py               # 日志配置
│
├── scripts/                    # 工具脚本
│   └── cleanup_redis_stale.py  # Redis 清理
│
├── data/                       # 运行时数据
│   └── hotspot/hotspot.duckdb  # DuckDB 数据库
│
├── logs/                       # 运行日志
│
└── docs/                       # 文档
    ├── 技术方案.md
    ├── 热点侦测系统.pdf
    └── 产品说明手册.md          # 本文档

评论 (0)

暂无评论,快来抢沙发吧~