Files
stockbuddy/references/data-source-roadmap.md

4.6 KiB
Raw Permalink Blame History

StockBuddy 数据源升级方案Phase 1

目标

在不显著增加复杂度的前提下,提升 StockBuddy 对 A 股、港股、美股的:

  • 数据可用性
  • 数据源容错能力
  • 报告可解释性
  • 后续接入事件层的扩展性

当前原则:

  • 先做 行情/基础面多源容错
  • 再做 事件提示层
  • 暂不把新闻/社媒直接并入总评分

已实测可用的免费数据源

行情 / K 线 / 基础字段

  1. 腾讯财经

    • 适用A 股、港股;美股实时快照也可用
    • 实测quote 可用K 线可用
    • 用途:主行情源
  2. Yahoo Finance

    • 适用:美股
    • 实测chart 接口可用
    • 用途:美股 K 线主源 / fallback
  3. 东方财富部分行情接口

    • 适用A 股
    • 实测JSON 行情接口可用
    • 用途A 股补充行情源 / fallback

公告 / 事件层

  1. SEC

    • 适用:美股
    • 实测JSON submissions 可用
    • 用途:美股公告与硬信息源
  2. HKEX 披露网页

    • 适用:港股
    • 实测:搜索页可访问
    • 用途:港股公告层(需后续结构化适配)
  3. 巨潮资讯

    • 适用A 股
    • 实测:主页可访问;查询接口需单独适配
    • 用途A 股公告层

不建议当前作为主源的来源

  1. 新浪财经

    • 实测出现 403
    • 不适合作为稳定主源
  2. 雪球 / 股吧 / 其他社区舆情

    • 可访问性和结构稳定性不如行情源
    • 更适合后续做热度/风险雷达,不适合先进入主链路

Phase 1 架构

1. 行情主链路

A 股 / 港股

  • 主源:腾讯财经
  • A 股 fallback东方财富
  • 输出:
    • 最新价
    • 涨跌幅
    • K 线
    • PE / PB / 市值 / 52 周高低点(能取则取)

美股

  • 实时快照:腾讯财经可保留尝试
  • K 线主源Yahoo Finance
  • fallback后续可考虑 Finnhub / Twelve Data若未来接受 API key

2. 事件层(先只做扩展位,不进总分)

  • A 股:巨潮资讯 / 交易所公告
  • 港股HKEX
  • 美股SEC

输出方式:

  • 报告新增 “近期关键事件” 小节
  • 默认只摘要 1-3 条
  • 只做说明,不直接改变买卖评级

3. 社媒层(暂缓)

  • 国内:雪球 / 股吧
  • 海外X / Reddit / Stocktwits

定位:

  • 仅做热度、风险、情绪极端提示
  • 不纳入核心评分

建议的代码改造顺序

Step 1行情源抽象

将当前 analyze_stock.py 中的数据获取逻辑拆成可替换函数层:

  • fetch_quote_primary()
  • fetch_quote_fallback()
  • fetch_kline_primary()
  • fetch_kline_fallback()

建议后续拆到独立模块,例如:

  • scripts/providers/tencent.py
  • scripts/providers/eastmoney.py
  • scripts/providers/yahoo.py
  • scripts/providers/sec.py(后续事件层)

Step 2统一数据模型

无论来源是什么,最终统一成内部字段:

  • price
  • change_pct
  • volume
  • pe
  • pb
  • market_cap
  • 52w_high
  • 52w_low
  • currency
  • source

并允许部分字段缺失,避免某一源缺字段时整个分析失败。

Step 3报告补充数据来源

在最终输出中增加轻量数据源标记,例如:

  • 行情源:腾讯财经
  • K线源腾讯财经 / Yahoo Finance
  • 事件源SEC / HKEX / 巨潮(未来)

用途:

  • 方便排查数据异常
  • 提高报告透明度

Step 4事件层接入

在行情分析后,按市场类型追加事件抓取:

  • A 股 -> 巨潮
  • 港股 -> HKEX
  • 美股 -> SEC

若事件抓取失败:

  • 不影响主分析
  • 仅在报告中省略事件小节或标注“暂无近期关键事件”

报告层建议

默认模板继续保持简洁,但可新增一个可选区块:

🧾 数据来源

  • 行情:{quote_source}
  • K线{kline_source}
  • 事件:{event_source 或 暂无}

📰 近期关键事件(后续接入)

  • {事件1}
  • {事件2}
  • {事件3}

要求:

  • 事件层不抢主体位置
  • 不让报告变成资讯聚合页
  • 保持 Telegram 等 IM 场景的短消息可读性

Phase 1 成功标准

满足以下条件即可认为第一阶段完成:

  1. A 股分析:腾讯失败时可自动尝试东方财富补位
  2. 美股分析Yahoo K 线链路保持稳定
  3. 输出中可看到实际使用的数据源
  4. 单一来源失败不导致整份分析直接不可用
  5. 事件层接口预留清晰,但暂不强耦合评分逻辑

后续 Phase 2 / 3

Phase 2事件层

  • 接入 SEC / HKEX / 巨潮
  • 报告增加“近期关键事件”摘要

Phase 3舆情雷达

  • 接入雪球 / X / Reddit 等热度监测
  • 只做“情绪过热 / 异常传播 / 风险提示”
  • 不直接进入买卖总分