RSSHub 事件流

📎 引用文件

本文引用的文件 - rsshub_events.py - base.py - SKILL.md - test_rsshub_events_provider.py - test_rsshub_events_lookahead.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与可靠性
  8. 故障排查指南
  9. 结论
  10. 附录:配置与使用示例

简介

本文件面向在回测与实盘中集成 RSSHub 事件流的工程实践,围绕“事件订阅、实时推送(通过外部 RSSHub 实例)、消息处理机制”展开,覆盖事件源配置、过滤规则、去重策略、错误处理、持久化存储、索引构建与查询优化,并给出事件驱动策略的触发条件、响应逻辑和执行流程。同时提供新闻监控、舆情分析和市场事件捕捉的应用案例说明。

项目结构

RSSHub 事件流在本仓库中作为“事件数据层”嵌入到回测引擎的事件增强管线中,核心由以下部分组成: - 事件提供者:从自托管 RSSHub 实例拉取 RSS 2.0 数据,标准化为统一事件表结构,并保证“点-in-time”安全(无未来信息泄露)。 - 引擎集成:在回测引擎启动时解析配置,构造事件提供者,将事件信号以衰减聚合的方式注入价格帧,供后续信号生成使用。 - 技能规范:定义事件 CSV 的字段与语义,确保事件数据与策略逻辑解耦。

graph TB A["回测引擎<br/>BaseEngine"] --> B["事件增强函数<br/>enrich_price_frames_with_events"] B --> C["RSSHub 事件提供者<br/>RSSHubEventProvider"] C --> D["RSSHub 实例<br/>HTTP 获取 RSS 2.0"] C --> E["XML 解析与安全<br/>defusedxml"] C --> F["评分器<br/>默认词典/可插拔 LLM"] B --> G["价格帧<br/>OHLCV + event_score/event_count"]

图表来源 - base.py:348-371 - rsshub_events.py:288-400 - rsshub_events.py:449-484 - rsshub_events.py:501-568

章节来源 - base.py:348-371 - rsshub_events.py:288-400 - rsshub_events.py:449-484 - rsshub_events.py:501-568

核心组件

章节来源 - rsshub_events.py:107-179 - rsshub_events.py:288-400 - rsshub_events.py:501-568 - base.py:348-371

架构总览

下图展示从配置到事件增强的完整调用链,强调“点-in-time”约束与衰减聚合。

sequenceDiagram participant CFG as "配置" participant ENG as "回测引擎" participant ENR as "事件增强函数" participant PROV as "RSSHub 事件提供者" participant RSS as "RSSHub 实例" participant PARSE as "XML 解析/评分" participant DF as "价格帧" CFG->>ENG : 读取 event_feeds / end_date / 衰减参数 ENG->>ENR : _maybe_enrich_events(data_map, config) ENR->>PROV : 构造 RSSHubEventProvider(feeds=specs) ENR->>PROV : query_events(codes, as_of=end_date) PROV->>RSS : GET /route/{code} (带超时/预算) RSS-->>PROV : RSS 2.0 XML PROV->>PARSE : 解析 item -> title/description/pubDate PARSE-->>PROV : 标准化行 {ts_code,knowable_date,event_type,score,source,summary} PROV-->>ENR : 去重+过滤后的事件表 ENR->>DF : 对每个 bar 计算衰减聚合 event_score/event_count ENR-->>ENG : 返回增强后的数据映射

图表来源 - base.py:348-371 - rsshub_events.py:343-400 - rsshub_events.py:402-447 - rsshub_events.py:449-484 - rsshub_events.py:501-568

详细组件分析

事件源配置与订阅

章节来源 - base.py:340-371 - rsshub_events.py:40-50 - rsshub_events.py:77-104 - rsshub_events.py:107-179 - rsshub_events.py:324-341

事件数据模型与评分

章节来源 - rsshub_events.py:52-62 - rsshub_events.py:239-261 - rsshub_events.py:264-285 - rsshub_events.py:343-400 - SKILL.md:21-51

事件增强与衰减聚合

flowchart TD Start(["开始"]) --> Q["查询事件<br/>query_events(as_of)"] Q --> Filter{"as_of 过滤"} Filter --> |是| Thresh{"是否设置最小分数阈值"} Filter --> |否| Thresh Thresh --> |是| Keep["保留 |score| >= 阈值的行"] Thresh --> |否| Keep Keep --> Loop["遍历每个标的的价格帧"] Loop --> Window["按 lookback 天窗口筛选事件"] Window --> Decay["按天数计算指数衰减并求和"] Decay --> Clip["裁剪到 [-1, 1]"] Clip --> Attach["写入 event_score / event_count"] Attach --> End(["结束"])

图表来源 - rsshub_events.py:501-568

章节来源 - rsshub_events.py:501-568

错误处理与健壮性

章节来源 - rsshub_events.py:402-447 - rsshub_events.py:343-400 - test_rsshub_events_provider.py:121-133 - test_rsshub_events_provider.py:223-233

点-in-time 安全与无前瞻保证

章节来源 - rsshub_events.py:264-285 - rsshub_events.py:343-400 - test_rsshup_events_lookahead.py:53-77

与回测引擎的集成

章节来源 - base.py:340-371

依赖关系分析

graph LR Engine["回测引擎 base.py"] --> Enhance["事件增强 rsshub_events.py"] Enhance --> Provider["RSSHubEventProvider rsshub_events.py"] Provider --> HTTP["httpx.Client"] Provider --> XML["defusedxml"] Provider --> Pandas["pandas/numpy"]

图表来源 - base.py:348-371 - rsshub_events.py:288-447

章节来源 - base.py:348-371 - rsshub_events.py:288-447

性能与可靠性

[本节为通用性能讨论,不直接分析具体文件]

故障排查指南

章节来源 - base.py:348-371 - rsshub_events.py:324-400 - rsshub_events.py:449-484 - test_rsshup_events_lookahead.py:53-77

结论

本方案通过 RSSHub 事件提供者与回测引擎的事件增强管线,实现了“事件订阅—标准化—评分—衰减聚合—注入信号”的端到端流程。其核心优势包括: - 严格的点-in-time 安全,杜绝未来信息泄露 - 可插拔评分器,兼容词典与 LLM 等策略 - 明确的错误处理与健壮性保障 - 与回测引擎无缝集成,支持灵活配置与扩展

附录:配置与使用示例

章节来源 - base.py:340-371 - rsshub_events.py:40-50 - rsshub_events.py:107-179 - SKILL.md:125-133