Skip to content

docs(reorg): futu 第二数据源接入探索 (Q5 参考) - #9

Merged
HRLoveFun merged 3 commits into
mainfrom
worktree-futu-provider-exploration
Sep 11, 2026
Merged

HRLoveFun merged 3 commits into
mainfrom
worktree-futu-provider-exploration

Conversation

@HRLoveFun

Copy link
Copy Markdown
Owner

目的

探索 futu-api 作为第二数据 provider 的接入方案,回应
business_line_reorg.md §8 Q5providers/base.py 协议必须同时对照 yfinance 和 futu 两边设计,避免被 yfinance 形状绑架。

不含代码、不新增 ADR、不改动已 Accepted 的 ADR 0011/0012 结论。 纯文档,docs/plans/futu_provider_integration.md 新增 + business_line_reorg.md §8/§9 加交叉引用。

结论速览

问题 结论
能否接通 futu 机制上可以——SDK futu-api 9.5.5508Futu_OpenD.app 均已安装,2026-03 实机验证过(AAPL 26 个到期日 / 158 合约)。当前 OpenD 未运行且需交互登录。
futu 期权字段 三段式:静态链(code/strike/expiry/type)+ subscribe 动态报价(last/volume/OI/IV/Greeks)。bid/ask 缺失,IV 是百分比,inTheMoney 需自算。
如何映射 内部契约 {ticker, spot, expiries, chain{exp:{calls,puts DF}}},列 strike/bid/ask/lastPrice/impliedVolatility(小数)/openInterest/volume/inTheMoney。差异点:iv/100itm 由 strike vs spot 推导、bid/askNaN。ticker 转换 utils/ticker_utils.py 已就绪。
如何防竞争 四道缝:provider 列作真判别键;独立限流器(绝不复用 yf_throttle());显式 provider 选择 + 按市场路由(HK/CN → futu,US → yfinance);实时期权数据不落库(ADR 0004)故按 (ticker, provider) 缓存。
最大阻碍 OpenD 是有状态、需鉴权、GUI 优先的本地常驻进程——相对 yfinance「开箱即用、零基建」是真正的运维成本。

内容

  • Part A 连通性:OpenD 网关模型、本机现状、复验步骤、权限/配额限制(US 实时行情需付费权限;期权链 10 次/30s → 全链拉取 80s+,不能在请求内同步跑;1000 订阅配额)
  • Part B 字段清单 + 缺口表
  • Part C 映射到项目格式(含 spot 在 US 盘后不可用的处理链)+ base.py 协议草图
  • Part D 防 yfinance 竞争的四道缝
  • Part E F0–F4 分阶段部署计划
  • Part F 风险与待决问题(Q-a..Q-e,含 Python/依赖漂移)

检查

  • python scripts/doc_guard.py — clean(pre-commit 全绿)
  • 无代码改动,无测试影响

🤖 Generated with Claude Code

HRLoveFun and others added 3 commits September 11, 2026 02:29
探索 futu-api 作为第二数据 provider 的接入方案,回应 business_line_reorg
§8 Q5(provider 协议不应被 yfinance 形状绑架)。不含代码、不新增 ADR、
不改动已 Accepted 的 ADR 0011/0012 结论。

- 连通性:SDK + OpenD 均已安装,2026-03 实机验证过;OpenD 当前未运行、
  需交互登录。US 实时行情需付费权限,期权元数据不受限。
- 字段清单:静态链 + subscribe 动态报价三段式;bid/ask 缺失、IV 为百分比、
  inTheMoney 需自算;Greeks 是 futu 相对 yfinance 的增量。
- 映射:内部契约 {ticker, spot, expiries, chain{exp:{calls,puts DF}}};
  iv/100、itm 由 strike vs spot 推导、bid/ask 置 NaN;ticker 转换已有
  utils/ticker_utils.py。
- 防竞争四道缝:provider 列作真判别键、独立限流器(不复用 yf_throttle)、
  显式 provider 选择 + 按市场路由、实时期权数据不落库故按
  (ticker, provider) 缓存。
- 部署:OpenD 是有状态、需鉴权、GUI 优先的本地常驻进程,是相对 yfinance
  真正的运维成本;分 F0–F4 阶段。
- base.py 协议草图(对照 yfinance + futu 双方)。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…r-exploration

# Conflicts:
#	docs/plans/business_line_reorg.md
CI's lint-and-test job runs ruff format --check over the whole repo, which
includes Python fences inside markdown; the base.py protocol sketch had a
missing space in a Literal and two over-aligned trailing comments.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@HRLoveFun
HRLoveFun marked this pull request as ready for review September 11, 2026 01:48
@HRLoveFun
HRLoveFun merged commit a9e0a01 into main Sep 11, 2026
3 checks passed
@HRLoveFun
HRLoveFun deleted the worktree-futu-provider-exploration branch September 11, 2026 01:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant