finds.dev← search

// the find

zvtvz/zvt

★ 4,182 · Python · MIT · updated Apr 2026

modular quant framework.

zvt is a Python quant framework built primarily for Chinese equity markets (A-shares, HK, US stocks), covering data ingestion from multiple providers, factor calculation, backtesting, and live trading via QMT. The data layer is the strongest part — a unified record/query API across a dozen asset types with incremental updates baked in. It's aimed at individual quant developers who want a local-first, batteries-included system rather than a cloud service.

The provider abstraction is genuinely useful: each schema (Stock, FinanceFactor, etc.) maps to multiple data providers, so if eastmoney breaks you can fall back to sina or joinquant without changing your strategy code. The two-dimensional (entity_id × timestamp) MultiIndex DataFrame as the standard data shape for factor computation is the right design — it makes cross-sectional factor math natural in pandas without fighting the index. Incremental data recording is built in at the framework level, not bolted on; `record_data` only fetches what's missing, which matters when you're pulling years of tick data. Coverage is wide: A-shares, HK, US stocks, ETFs, indices, funds, futures, financial statements, actor positions — all under one API.

The README explicitly states no backward compatibility guarantee, and the author reserves the right to drop features as thinking evolves. That's an honest warning, but it makes this a bad foundation for anything you plan to maintain long-term. Real-time data for the newer REST API UI requires QMT, a Chinese retail broker platform — access requires contacting the author privately, which is a hard blocker for anyone outside mainland China. The ML component (`MaStockMLMachine`) is shown in five lines with zero explanation of what model is used, what features are computed, or whether the backtesting prevents lookahead bias — it's a black box with a misleading simplicity. The data providers (eastmoney, sina scrapers) are fragile by nature; they break silently when upstream pages change, and there's no monitoring or alerting built in to tell you when your data stopped updating.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →