4. 数据源与数据采集

市场行为监控系统的第一道工程关口不是模型,而是数据。监控结论是否可信,取决于六类数据能否在正确的时间、以正确的粒度、按正确的关联键进入系统。本节从数据源分类出发,讲清接口形态、采集策略与常见陷阱。

一、核心原理:六类数据的定位与关联键

六类数据并非并列关系,而是围绕"谁、在什么市场环境下、做了什么、结果如何、外部如何解释"构成一条证据链。账户数据回答"谁",行情数据回答"环境",委托与成交数据回答"做了什么、结果如何",资讯与公告数据回答"外部解释与披露"。

数据类别典型来源接口形态关键关联键时效要求
行情数据交易所行情网关、Level-2 供应商TCP 组播/专线、WebSocket证券代码 + 时间戳毫秒级
委托数据交易所委托流水、券商柜台文件 + 实时流委托编号 + 账户秒级
成交数据交易所成交回报、清算文件实时流 + 日终文件成交编号 + 委托编号秒级
账户数据账户系统、适当性系统数据库、API账户号 + 客户号分钟级/日级
资讯数据新闻供应商、舆情平台HTTP API、推送证券代码 + 发布时间分钟级
公告数据交易所披露平台、巨潮等HTTP 抓取、RSS公告 ID + 证券代码分钟级/小时级

关联键设计是采集阶段最容易被低估的工作。若委托与成交无法通过委托编号稳定关联,后续的撤单率、报撤比、对倒识别都会失真。

二、方法流程:从接入到可用的四步链路

  1. 接入与鉴权:行情走专线或组播,业务数据走 API 网关,统一做密钥、IP 白名单与限流。
  2. 解析与标准化:把不同来源的字段映射为内部统一 Schema,统一时间基准(建议全部转 UTC 毫秒)。
  3. 缓冲与落库:实时流先进消息队列削峰,再分冷热路径写入时序库与关系库。
  4. 质量校验:做空值、重复、时序倒挂、价格越界、账户缺失等规则校验,异常进死信队列。
采集策略的核心取舍是"实时性 vs 完整性"。行情与委托成交必须实时;账户、资讯、公告可准实时或批量补采。不要用同一套采集频率覆盖所有数据源。

三、可视化:六类数据采集链路

市场行为监控:六类数据采集链路 行情数据 委托数据 成交数据 账户数据 资讯 / 公告 采集接入层 专线 / 组播 API 网关 文件抓取 鉴权 / 限流 字段标准化 时间基准统一 消息队列缓冲 存储与校验 时序库:行情 / 委托 / 成交 关系库:账户 / 公告 对象存储:原始报文 质量规则校验 死信队列 监控告警 血缘与审计

四、案例与场景:一次异常报撤比排查

某监控任务发现某账户在 10:15 至 10:20 的报撤比异常升高。排查路径如下:先从成交数据确认该账户实际成交极少,再从委托数据提取该时段全部委托与撤单记录,发现撤单集中在买一价上方 1 至 2 档;随后用行情数据还原当时盘口,确认其撤单时点与盘口快速变化高度同步;最后用账户数据确认该账户为程序化交易账户,资讯数据未发现相关公告。结论指向"频繁报撤但无成交意图"的监控特征。

# 采集配置示例(伪代码)
sources:
  - name: market_l2
    type: multicast
    endpoint: 239.1.1.10:9000
    schema: market_tick
    latency_sla_ms: 50
  - name: order_stream
    type: kafka
    topic: order.events
    schema: order_event
    key: order_id
  - name: account_snapshot
    type: jdbc
    cron: "0 5 0 * * ?"
    schema: account_dim
quality_rules:
  - no_null: [order_id, account_id, ts]
  - monotonic: ts
  - range: price > 0
on_failure: dead_letter_queue
建议为每类数据保留原始报文(raw payload)至少 30 天。当监控结论被质疑时,原始报文是唯一可回溯的证据。

五、误区与复盘

  • 误区一:只采实时流,不采日终文件。实时流可能丢包或乱序,日终文件是校准基准,两者必须对账。
  • 误区二:时间戳不统一。行情用交易所时间、委托用柜台时间、资讯用供应商时间,若不统一到同一基准,跨源关联会出现毫秒级错位。
  • 误区三:忽略账户维度更新。账户状态、适当性、关联关系会变化,若只采一次快照,后续监控会用到过期维度。
  • 误区四:公告与资讯只做全文存储。应抽取证券代码、发布时间、公告类型等结构化字段,否则无法参与实时规则计算。
采集阶段最危险的错误是"静默失败":接口返回 200 但内容为空、字段映射错位、时区偏移一小时。必须在采集层加入行数、空值率、时序连续性三类基线告警,而不是等到监控结果异常才回头查数据。

复盘建议:每次监控误报或漏报,先查数据血缘,确认是采集缺失、解析错误还是规则问题。把采集质量指标纳入监控大盘,与业务指标同等对待,才能让端到端项目真正可运营。