ZVT 项目研究站 · 实体模型

ZVT 支持哪些市场:七类可交易标的与统一的实体命名方式

ZVT 把「你能研究什么」这件事写死在一个字典里:zvt_context.tradable_schema_map。它一共七个键——stock、stockhk、stockus、index、etf、block、fund。理解这七个键和它们的实体命名规则,比记住任何函数都重要,因为后面所有的取数、因子与查询都建立在这一层抽象上。

标的类型:7 类实体命名:{entity_type}_{exchange}_{code}核验日期:2026-09-18

ZVT 七类标的与一种命名

stockA 股
stockhk港股
stockus美股
index指数
etfETF
block板块
fund基金
节点名逐字取自官方 README 输出块中 zvt_context.tradable_schema_map 的七个键(非官方架构图);实体 id 示例为 stock_sz_000001
Tradable entities

ZVT 的七类可交易标的:各自是什么、数据面有多大

下面这张表把 README 里的字典键、源码里的 domain 目录与文件命名对应起来——官方 README 只贴了一段字典输出,没有解释每一类能拿到什么。

schema 键对应对象可拿到的数据面适用场景注意点
stockA 股个股标的清单、九个周期的 K 线(含后复权)、财务报表、财务指标、分红融资、股东与高管交易、龙虎榜、资金流个股研究、因子选股、策略回测的主力标的数据面最全,也最容易被限流;全市场写库耗时长
stockhk港股个股标的清单、1 日 K 线(含后复权)、实时行情表结构港股对照研究周期覆盖远少于 A 股,没有分钟级
stockus美股个股标的清单、1 日 K 线(含后复权)、实时行情表结构美股研究、跨市场对照标的清单里同一代码可能同时出现在 nyse 与 nasdaq,需要按 exchange 区分
index指数指数清单(含分类与基点)、1 日/1 周/1 月 K 线、指数成分股基准对照、指数增强研究清单里区分 scope 等类别,筛选时要带 category 条件
etfETF清单、1 日 K 线场内基金研究只有日线,没有分钟级
block板块板块清单(行业与概念两套来源)、板块日/周/月 K 线、板块资金流板块轮动、概念题材研究东财与新浪两种板块口径不完全一致,ZVT 默认取第一个注册的 provider,同一板块名可能指向不同成分
fund基金基金清单与净值相关表公募基金研究部分表依赖聚宽一侧的口径与账号
边界:这七类之外的东西——期货、可转债、加密货币、外汇——在 tradable_schema_map不是可交易标的一等公民。仓库里确实有 future / cbond / currency 相关的 domain 文件,但它们没有出现在这份 schema 映射中,不能当成 ZVT 已支持的研究对象来宣传。
Entity & Event

实体、事件与实体 id:三个概念一次讲清

官方文档把这些称为核心概念,但没有给出完整的命名规则说明。下面按 README 的输出反推并逐条标注依据。

  1. 实体(TradableEntity)= ZVT 里被研究的对象

    股票、指数、ETF、板块、基金都是实体。每个实体由 entity_id 标识,形如 stock_sz_000001{entity_type}_{exchange}_{code}。注意三段的顺序是类型在前、交易所在中、代码在后,和常见的「代码.交易所」写法相反。

  2. 事件(EntityEvent)= 对象身上发生的事

    行情、财务报表、分红、股东变动、龙虎榜、资金流都是事件。事件的表名由实体名 + 周期 + 复权方式拼出来(例如 Stock1dKdata),所以「研究一只股票」实际是在研究它的实体记录加一串事件记录。

  3. 实体类型(entity_type)= 决定有哪些表可用

    实体类型决定这个对象能不能有分钟级数据、能不能有财务数据。stock 有九个周期,etf 只有 1d——这不是配置问题,而是 domain 里就没有那些表。写代码前先用 zvt_context.tradable_schema_map 确认自己研究对象属于哪一类。

  4. 交易所(exchange)= 同代码不同标的的区分位

    美股尤其明显:README 港股与美股示例里,同一段输出中可能出现相同代码分属 nyse 与 nasdaq 两条记录。查询时用 entity_id 或带 exchange 条件,不要只用 code。

Snapshot

ZVT 的 README 示例数据量级,以及它为什么不能当现状

README 的输出块里带着具体行数,很多人直接当作「ZVT 能取到多少数据」的结论。下表说明正确的读法。

README 示例输出行数正确读法注意点
中国 A 股标的清单4136 行只能说明「这份输出被打印时」的记录条数输出里已含 2021 年上市的 605xxx 代码,说明快照大约在 2021 年前后
美股标的清单5826 行同上同一代码可能重复出现在不同交易所
港股标的清单2597 行同上含 8xxxx 的 -R 类人民币柜台代码
指数清单(scope 类)30 行只是带 category=='scope' 过滤后的子集不是指数总数;不带过滤条件时行数不同
单只股票日线3431 行(2007-04-30 起)示例标的潍柴动力的历史长度不同标的上市时间不同,行数不能横向比较
单只美股日线8770 行(1984-09-07 起)示例标的 AAPL 的历史长度早期价格出现负值,属数据源口径问题,需自行清洗
结论:这些行数是 README 输出快照,不是当前市场标的数量。要得到真实数量必须自己在本机跑一次 Stock.record_data() 后查询。本站不把快照数字当作现状引用。
Fit

按研究任务选标的类型:场景 → 选哪类 → 为什么

七类标的能做的事差别很大,这张表按任务而不是按类型组织。

你要做的研究该用哪类标的理由注意点
个股多因子选股stock + 财务与资金流事件表A 股的数据面最全,能支撑横截面因子全市场写库耗时最长,建议先小范围验证
板块轮动或题材研究blockstock 组合板块有独立 K 线与资金流,可与成分股交叉验证行业与概念两套口径不同,先确定用哪套
指数增强或基准对照index + stock指数有成分股表,可以直接构造股票池指数清单要带 category 条件筛选
跨市场对照(A 股 vs 美股)stock + stockus两类标的都有日线与后复权版本交易日历不同,对齐前先处理日期
场内基金或 ETF 轮动etf有日线可用没有分钟级;基金净值要走 fund 一侧
Misconceptions

ZVT 实体模型的三个常见误解

这三条在中文教程里反复出现,但都能在源码与 README 里被反驳。

误解一:ZVT 自带行情

它只带「从数据源抓数据并写库」的能力。tradable_schema_map 描述的是标的类型,不是数据来源;能不能取到数据取决于 provider 与本机网络。这也是本站单独做「数据源」页的原因。

误解二:所有标的都有分钟线

domain 目录里只有股票有 1m 到 4h 的周期表,ETF、指数、港股、美股都只有日线。想用分钟级做高频或日内研究,ZVT 在这几类标的上不提供。

误解三:七类标的等于七类市场

「标的类型」是抽象层,不等于市场:美股的 nyse 与 nasdaq 同属 stockus,A 股的沪深同属 stock。做市场维度统计时要在 ZVT 的实体 id 上自己按 exchange 再分组。

FAQ

标的与实体模型常见问题

涉及数据面的回答以 src/zvt/domain/ 的实际文件与 README 为准。

七类标的之外还能研究期货或可转债吗?

不是一等公民。仓库里有 future、cbond、currency 相关的 domain 文件(还有对应的 em provider recorder),但它们没有出现在 zvt_context.tradable_schema_map 的七个键里,官方 README 的数据与策略示例也全部围绕这七类展开。要用这些,等于自己走非主路径。

实体 id 中间那段一定是交易所吗?

从 README 的输出看是这样:stock_sz_000001stockus_nasdaq_AAPLstockhk_hk_00700index_sh_000001 都是「类型_交易所_代码」。指数用的是 sh/sz 这类市场前缀。以源码里的实体构造逻辑为准。

同一个代码出现在两个交易所怎么办?

entity_id 查而不是按 code 查。README 的美股示例里,AACG 同时出现在 nasdaq 与 nyse 两行,如果不指定交易所,查询结果会混在一起。

板块数据在东财和新浪之间怎么选?

README 的示例里 Block.provider_map_recorder 同时注册了 eastmoney 与 sina 两个 recorder,默认取第一个。两家的板块口径(尤其概念板块)不一样,换 provider 会换成分股,做历史对照前先固定一家。

README 示例里的 4136 只 A 股是最新的吗?

不是。那是 README 输出被打印时的快照,从其中的 605xxx 代码推断大约在 2021 年前后。要当前数量请在自己的环境写库后查询。本站也不把这些快照数字当现状引用。

这些标的类型和 EasyClaw 技能路线有什么关系?

没有已证实集成。本机技能里有 akshare-finance、tushare-finance、mx-data 等取数技能,也覆盖 A 股、港股、美股与基金,但它们是即取即用、不落本地库的形态,和 ZVT 的「先写库再查询」是两种做法。对照见顶部导航「对比」。

知道能研究什么之后,下一步是知道怎么把它查出来

标的类型只是抽象层。真正写代码时你要面对的是 record_data 的 provider 与 codes 参数、query_data 的 filters 与 index 参数,以及「不传 code 就是全市场」这个容易误伤的默认行为。