ZVT 项目研究站 · 模块化量化框架(zvtvz/zvt)

ZVT 量化框架:把取数、因子、选股与回测放进同一套约定的 Python 框架

ZVT 是 2019 年开源的 Python 量化框架,官方一句话定位是 “modular quant framework”。它不是实时行情软件,也不是完整的实盘交易系统:它不提供行情服务,也不做开箱即用的软件;它提供的是一套统一约定——把七类可交易标的抽象成统一的实体与事件,用 record_data 把不同数据源写进本地库,用 query_data 按同一套参数查出来,再在二维索引的 DataFrame 上算因子、选股票、跑策略。

形态:Python 库(pip 安装)+ 两个自带界面版本:0.13.5(2026-01-18 发布)依据官方仓库与本机 EasyClaw 技能目录(2026-09-18 核验)

项目来源与仓库现状

GitHub 公开读数:4,306 Star / 1,015 Fork / 887 次提交,MIT 许可;页面 tab 显示 14 个 Issue 与 8 个 Pull Request(GitHub API 的 open_issues_count 为 22,指的是两者之和)。数字会随社区活动变化,采集日期为 2026-09-18。

zvtvz/zvt 的 GitHub 仓库页面截图:仓库名、About 简介 modular quant framework、MIT license、4.3k Star、1.0k Fork、887 Commits 与顶层文件列表 查看官方仓库
GitHub 公开页面截图(2026-09-18T14:31:52+08:00 无头 Edge 采集,1600×1100,SHA-256 7349e80d…);仅证明该页面在采集时的公开状态。
What it solves

ZVT 解决什么问题:把「换个数据源就重写一遍」这件事收敛掉

国内做量化研究最费时间的往往不是策略,而是每个数据源一套字段、一套复权口径、一套缓存方式。ZVT 的设计目标就是把这一层抽象掉,代价是你需要先接受它的约定。

用统一的写入接口吃掉数据源差异

无论是东财、新浪、交易所还是聚宽,取数的入口都是 Schema.record_data(provider=..., codes=...):同一个 schema 可以挂多个 provider,某个源失效时换 provider 参数即可,业务代码不用改。这一层是项目文档里反复强调的「系统稳定性的基石」。

用本地库把「查询」和「网络」解耦

数据先落本地(默认在 zvt_home/data),第二次运行只做增量更新;之后的筛选与因子计算全部打在本地数据上,不再受接口限流和网络波动影响。这也是它和「每次问一次接口」的对话式工具的关键差别。

用二维索引统一多标的计算

因子层的 DataFrame 以 (entity_id, timestamp) 为二维索引,因此「一次算 3000 只股票的 MACD」和「一次算 1 只」是同一个写法,输出的 result_df 直接给出每只标的在每个时点是否命中条件,交给 TargetSelector 变成选股结果。

How it works

ZVT 跑一次完整研究要经过的四个环节

官方 README 把数据、因子、策略分章讲,但没画过一张贯穿的图。下面四个环节的名称全部取自 README 的示例输出与源码模块名。

实体与事件TradableEntity + EntityEvent
写库与查询record_data / query_data
因子三层data_df / factor_df / result_df
策略与界面StockTrader / zvt / zvt_server
  1. 确定研究对象:七类可交易标的

    框架把研究对象称为 TradableEntity,它周围发生的事叫 EntityEvent。官方 README 输出的 zvt_context.tradable_schema_map 包含 stock、stockhk、stockus、index、etf、block、fund 七个键——这七个键就是「你能用它研究什么」的硬边界。预期:知道自己要研究的东西属于哪一类。

  2. 把数据写进本地:record_data

    Stock.record_data(provider="em") 这样一行就把标的清单写进本地库;带 entity_idscodes 时只写指定标的,不带就是全市场。写库是增量的,重复运行不会重复拉取。预期:本地出现对应表;未配置凭据的 provider 会在这一步报错。

  3. 算因子:data_df → factor_df → result_df

    因子对象读 schema 得到 data_df,经 Transformer(例如 MacdTransformer(count_live_dead=True))产出 factor_df,再给出 result_dffilter_result 为 True/False,或 score_result 为 0 到 1 的评分。预期:得到一张二维索引表,行是 (标的, 时间)。

  4. 变成策略与界面:Trader + 两个入口

    策略继承 StockTrader 并实现 on_time(timestamp),在里面调用 trade_the_targets(...)。跑完打开自带界面看结果:zvt 命令起 Dash 界面(8050),zvt_server 起 FastAPI 服务(8090)。预期:界面上能看到标的、因子、信号与绩效。

现实提醒:官方 README 的 Declaration 段明确写着当前不保证任何向后兼容,升级需要谨慎;本站也未在本机安装运行过 ZVT(本项目与 EasyClaw 无已证实集成),因此页面只描述官方材料与源码结构,不给任何运行结果或绩效数字。
Key facts

ZVT 关键事实速览:11 项可核验数字与边界

这张表是本站逐份打开 setup.pyrequirements.txtsrc/zvt/config.json、GitHub API 与 PyPI 元数据后整理的,官方首页没有这样一张对照,也是判断 ZVT 是否适合你的最快入口。

项目事实依据与注意点
项目定位官方 About:modular quant framework.;PyPI 摘要:unified, modular quant framework for human beingsREADME 强调「no backward compatibility guarantee」,定位偏研究框架而非交付产品
当前版本0.13.5,2026-01-18 发布;PyPI 累计 86 个版本setup.py 与 PyPI、GitHub Release 三方一致
许可MIT仓库根目录存在 LICENSE;GitHub API 的 spdx_id 为 MIT;但 PyPI 的 license 字段为空,只靠 classifier 声明,介意合规的团队建议以仓库 LICENSE 原文为准
Python 版本setup.py 与 PyPI 均写 >=3.9, <4官方材料口径不一致:README.md 写 3.8、README-cn 写 3.6、docs 的 install 页写 3.7 与 3.8。详见安装页的四份材料对照表
依赖规模requirements.txt 19 项,全部钉死版本含 SQLAlchemy 2.0.36、pandas 2.2.3、numpy 2.1.3、dash 2.18.2、fastapi 0.110.0;钉版本意味着与你的环境可能冲突;uvicorn 不在依赖里,REST 路线要另装
可研究对象7 类:stock / stockhk / stockus / index / etf / block / fund取自 zvt_context.tradable_schema_map 的实际输出键
数据源src/zvt/recorders/ 下 8 组目录:em 26、eastmoney 23、joinquant 21、exchange 11、sina 9、qmt 7、jqka 4、wb 4(单位:Python 文件数)文件数不等于可用数据面;聚宽一侧需要 jq_username/jq_password
K 线周期股票覆盖 1m/5m/15m/30m/1h/4h/1d/1wk/1mon,其中 5 个周期另有后复权(hfq)版本src/zvt/domain/ 的实际文件为准;不是每个标的类型都有全周期
界面入口zvt → Dash 界面 8050;zvt_server → FastAPI 8090;前端在独立仓库 zvt_ui(3000)当前入口文件的 Dash layout 只注册了 factor 一个标签页,不要按 README 截图想象有整站功能
实时行情依赖 QMT 数据源;stock_quote schema 只有 qmt 一个 providerREADME 明确写「需要开通的同学请联系作者」——本框架的实时能力不是装上就能用
时间线2019-04-04 建仓,最近一次代码推送 2026-07-01仍在更新,但主要维护者只有一位(作者 foolcage)
Name check

先分清同名:此 ZVT 是 Python 量化框架,不是电源里的 ZVT

「ZVT」这三个字母在技术圈至少有两种完全不同的含义,先对号入座,避免看到不相干的内容。

同名项指什么典型场景与本文的关系
ZVT(本页)zvtvz/zvt,Python 量化框架:取数、因子、选股、回测A 股数据落到本地库、算财务与技术因子、写策略本文与本站全部页面讲的就是它
ZVT = Zero Voltage Transition电力电子里的「零电压转换」软开关技术开关电源、Boost/LLC 变换器拓扑、软开关设计无关:属于电力电子学科,与金融数据、量化无关
其它零星缩写某些行业内部缩写或产品代号——搜索时若结果与「量化/股票/Python」无关,基本就是同名项
为什么单独说这件事:用「ZVT」这个词搜索时,很容易混进电力电子方向的资料;反过来,做电源的人也可能被本文干扰。本站用「ZVT Python」「ZVT 量化框架」「ZVT A 股数据」「ZVT 金融数据」「ZVT 策略开发」这组限定词来消歧——你搜这几个词,来的就是这里。
Setup and route

自建 ZVT 环境,还是先用对话式技能把这几个问题问清楚

两条路线的交付物不同:ZVT 交的是一套可复现的本地研究环境,技能交的是一次可以直接看的回答。它们的关系是上游和下游,不是替代。

自建 ZVT适合要把研究固化成流程的人
配 Python 环境pip 装 zvt选 provider 取数写因子跑策略

换来的是完全可控的口径与可复现的结果:复权怎么选、增量怎么更新、因子怎么算,全部写在代码里。代价是它不提供任何行情服务,行情、财务、龙虎榜都要自己通过 provider 取;实时行情还额外依赖 QMT 授权。

免部署技能路线适合只想先把问题问清楚
安装客户端一句话提问

本机已核验的技能里,akshare-finance、tushare-finance、mx-data 负责取数,mx-select-stock、iwencai 负责条件选股,quant-analyst 提供回测与风险指标方法论。它们不能运行 ZVT 的因子流水线,也不落本地库;两者无已证实集成。

路线边界:ZVT 的官方仓库与文档从未提到 EasyClaw;本机 29 个技能目录里也没有任何 ZVT 相关技能。两侧是并列的两条路线:一条要求你有 Python 环境与自己的数据权限,一条只要求装上客户端。ZVT 与对话式技能的任务级对照在顶部导航的「对比」页。
EasyClaw demo

不想先装 Python 环境?看看这两类问题能怎么问

下面两张是本站集群内 2026-09-18 采集的 EasyClaw 对话截图(示例均为 A 股个股),点击左右箭头翻页。它们只说明「取数与回测方法论类的问题可以一句话发起」,不说明 ZVT 能在客户端里运行——ZVT 是本地 Python 框架,没有任何证据表明它可以被安装进这类环境。

样例边界:两张截图只证明「对应任务可以一句话发起并拿到结构化结果」,不证明安装成功、不证明与 ZVT 集成,也不构成任何投资建议。
Who fits

什么人值得花时间学 ZVT

它的更新节奏是每年几个版本、主要维护者一位,判断值不值得投入要看你的任务形态,而不是看 Star 数。

适合你,如果…

你研究的是 A 股、港股、美股、指数、ETF、板块或基金这七类标的中的任意一类,并且需要「同一套代码换数据源也能跑」;你愿意接受框架的约定(先写库再查询),也需要把研究过程固化成别人能复现的代码。

不太适合,如果…

你只是想查一段行情、看一眼技术指标,或者不愿意维护 Python 环境与本地数据库;你如果要做高频或需要实时行情的实盘系统,ZVT 的实时能力依赖 QMT 授权,也不是一条独立可走的路。这种情况下先看清「对比」页会更省时间。

先算清三项成本

①环境成本:ZVT 的 19 个钉版本依赖,可能与现有环境冲突;②数据成本:聚宽、QMT 等 provider 需要自有账号或授权;③维护成本:README 明确不保证向后兼容,升级前要留回滚方案。三项都接受,再进入安装页。

FAQ

ZVT 常见问题

以下回答均以官方仓库文件、README 与 PyPI 元数据为依据;本站没有在本机安装运行 ZVT,凡涉及运行结果的问题都会明确说明证据缺口。

ZVT 到底是什么?和 Qlib、vnpy 有什么不同?

它是一个 Python 量化框架,核心资产是「统一数据模型 + 统一取数接口 + 二维索引因子层」。与 Qlib 相比,它的数据层是自建 provider 目录、强调先写本地库再查询;与 vnpy 相比,它不做交易接口与实盘报单,重点在数据、因子与选股这条研究链路。具体差异以各自官方文档为准,本站不代做优劣结论。

ZVT 免费吗?可以商用吗?

代码是 MIT 许可,仓库根目录有 LICENSE 文件,可自由使用、修改与分发(保留版权声明)。注意两点:PyPI 的 license 字段为空、只有 classifier 声明 MIT,合规严格的团队建议以仓库 LICENSE 原文为准;另外代码免费不等于数据免费,聚宽、QMT 等数据源有各自的授权与条款。

它自带行情数据吗?我需要自己买数据吗?

不带。它提供的是从各数据源抓取并写库的能力,数据本身要用你自己能访问的源:东财与新浪一侧多数不需要账号,聚宽一侧需要 jq_username/jq_password,实时行情一侧需要 QMT。数据源清单与前置条件见「数据源」页。

能取实时行情吗?能做实盘吗?

实时行情依赖 QMT 数据源,README 写明「需要开通的同学请联系作者」;stock_quote 这类实时表的 provider 里只有 qmt。至于实盘,官方材料里没有交易接口与实盘下单的证据,本站不宣称它能实盘。

支持哪些市场?

可交易标的共七类:stock(A 股)、stockhk(港股)、stockus(美股)、index、etf、block(板块)、fund。周期覆盖各标的类型不同,股票最全(含分钟级与后复权),详见「K 线与复权」页的覆盖表。

有中文文档吗?上手难不难?

仓库里有中文 README(README-cn.md),但官方 ReadTheDocs 文档站是英文的,而且 docs/source/usage.rst 只有标题、没有正文——也就是说「怎么用」这一层官方基本没写。本站的取数、因子、策略三页就是针对这个缺口整理的,但请以源码与 README 为准。

为什么说 Python 版本有歧义?

因为官方五处材料的写法不一致:setup.py 与 PyPI 写 >=3.9, <4,README.md 写 3.8,README-cn 写 3.6,ReadTheDocs 的安装页写 3.7 与 3.8。安装页把五处原文并列成表,并说明为什么应该以 setup.py 作为执行口径。

能在 EasyClaw 里安装或运行 ZVT 吗?

没有已证实集成。本机技能目录里不存在任何 ZVT 相关技能,也没有把 Python 框架装进对话环境的证据。可用的是取数、选股、技术面与研究方法论这类技能,属于并列的另一条路线,入口在顶部导航「对比」。

本站的数字和结论是怎么来的?

项目事实来自 GitHub 公开 API、README.md / README-cn.md、setup.pyrequirements.txtsrc/zvt/config.json、仓库文件树(704 条路径)与 PyPI 元数据;对照侧来自本机 C:\Users\CF\.easyclaw\skills 下各技能 SKILL.md 的原文。本站没有在本机安装 ZVT,页面不提供任何运行输出或绩效数字。

你要的是可复现的研究流程,还是一次研究结论?

要固化成流程,就从安装与版本口径看起(先把 Python 版本这件事定下来);只想先把问题问清楚,可以先走免部署的对话式技能路线,需要时再回来搭环境。