Skip to content

[Feature] 支持台湾市场个股分析(suffix-only MVP,对齐 #1718) #1772

Description

@WenyuChiou

功能描述 / Feature Description

新增**台湾股市(台股)**个股分析支持,采用与 #1718(日本/韩国 suffix-only MVP)完全相同的模式:仅放开「市场识别 + 数据路由 + Yahoo 抓取 + 类型放行 + seed 索引」,A 股专属重功能(资金流/龙虎榜/板块/市场宽度)一律按 not_supported 降级,与 jp/kr 同边界、可一行回滚。

  • 上市(TWSE)= NNNN.TW(例 2330.TW 台积电、0050.TW 元大台湾50)
  • 上柜(TPEx)= NNNN.TWO(例 6488.TWO 环球晶);与 KR 把 .KS+.KQ 折成一个 kr 一样,.TW+.TWO 折成一个 tw

使用场景 / Use Case

台湾用户基数大、需求高(项目已有 docs/README_CHT.md 繁中版),但目前完全无法分析台股grep -rn "\.TW" --include="*.py" = 0 笔;裸 6 位代码会落到 A 股语义,.TW 后缀代码则无任何识别分支。日韩 MVP 落地后,台股是同模式最自然的下一个市场。

期望实现 / Proposed Solution

镜像 #1718 的整条链路(market tag jp/krtw,suffix .T/.KS/.KQ.TW/.TWO),关键设计已对最新 main2f75e83)逐一核对:

项目 设计
代码格式 .TW/.TWO,数字 base 4–6 位(普通股 4 位;ETF 跨 4–6 如 00878/006208)— 比 JP .T 的 4–5 位宽,这是唯一不可照抄 JP 之处
市场识别 _is_tw_market() + _market_tagtwdetect_marketget_market_for_stock 三处一致,suffix 分支置于「裸 6 位→cn」fallback 之前(裸 2330 仍为 A 股,关键回归不变量)
数据路由 _DAILY_MARKET_FETCHER_SUPPORTYfinanceFetcher"tw";同 jp/kr 非 US,走通用 fetcher loop,无需新增分支
指数 加权指数 ^TWII、柜买指数 ^TWOII(已实测 Yahoo chart API 均 HTTP 200 解析成功)
交易日历 XTAI / Asia/Taipei;TWSE 09:00–13:30 连续无午休,session_has_break 自动走 no-break
Prompt 语境 保留台股的 ±10% 涨跌停、三大法人(外资/投信/自营商)、融资融券;仅排除 A 股专属的北向资金/龙虎榜

两个刻意取舍(想先和维护者对齐)

  1. 收盘集合竞价(13:25–13:30)暂不建模 → 严格镜像 jp/kr(_CLOSING_AUCTION_WINDOW_MINUTES 不加 tw),日后一行可补。
  2. ^TWOII(柜买指数)Yahoo 更新频率较低 → 可先只上 ^TWII,柜买留 follow-up。

范围约 80 个触点,横跨 data_provider/ src/ apps/dsa-web/ api/ scripts/ docs/ tests/,已分级 P0(缺它请求/build 失败)/ P1,并附完整 test_tw_market_support.py(镜像 test_jp_kr_market_support.py)。

备选方案 / Alternatives Considered

  • 专用台股数据源(如 FinMind/twstock):可拿到三大法人/融资融券等台股专属数据,但偏离本项目「先 suffix-only MVP、Yahoo 兜底」的既定路线,范围大、风险高 → 建议作为 MVP 之后的增强,不放进首个 PR。
  • 维持现状(不支持):台湾用户无法使用核心功能。

相关信息 / Additional Context

  • 是否愿意贡献代码实现 / Willing to implement: Yes(完整方案 + 逐档清单 + 测试已就绪,可直接提单一 suffix-only MVP PR)
  • 参考 / Reference: 对齐 [Feature] 支持日本/韩国市场个股分析(suffix-only MVP) #1718(日本/韩国 suffix-only MVP)
  • 想请教维护者 3 件事(影响 PR 落地)
    1. docs/architecture/api_spec.json重新生成方式?(它与 test_decision_signal_docs.py / test_api_schema_pydantic.py 快照锁步,手改 enum 易红灯)
    2. 是否接受单一 suffix-only MVP PR(各层 allowlist + 测试快照须锁步同改,拆 PR 会中间态红灯)?
    3. 首个 PR 是否纳入 ^TWOII,还是先只上 ^TWII

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions