# vnpy marks every gateway with a 4.0 arrow, and four do not have it

> A Python quant trading framework whose gateway list, app modules and new machine learning layer are all shipped as separate repositories, with compatibility marked per module. The core is MIT and installs on Python 3.10 to 3.13, but Qt is a hard dependency and the alpha examples need a commercial data service.

**vnpy/vnpy** — GitHub describes it as 基于Python的开源量化交易平台开发框架. The repository metadata lists Python as its primary language. The metadata lists the MIT license. This article stays within the project description and details documented in the GitHub repository README.

- Repository: https://github.com/vnpy/vnpy
- Website: http://www.vnpy.com
- Stars: 45,673 · Forks: 12,511
- Language: Python
- License: MIT
- Published: 2026-08-13 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/vnpy-vnpy

## The English documentation is README_ENG.md, not the file GitHub shows

The repository's front page is in Simplified Chinese, and the English version is a separate file, README_ENG.md, linked from the top of the Chinese README. That arrangement has consequences beyond translation. The two files drift independently, so an English reader can find a gateway list or an app description that the Chinese page words differently, and a contributor who fixes one file has not fixed the other. The package metadata reflects the same asymmetry: pyproject.toml declares a Natural Language of Chinese (Simplified) and lists the author as Xiaoyou Chen. Documentation for the framework as a product lives off the repository, at www.vnpy.com/docs, with a separate community forum, and the project describes its own history as ten years of community contribution, with version 4.0 released to mark that anniversary and 4.4.0 published on 2026-05-14.

## PySide6 is a pinned hard dependency, so a headless install still pulls Qt

The core dependency list in pyproject.toml starts with the desktop stack: PySide6==6.8.2.1 as an exact pin, pyqtgraph>=0.13.7, qdarkstyle>=3.2.3, plus numpy>=2.2.3, pandas>=2.2.3, ta-lib>=0.6.4, deap, pyzmq, plotly, tqdm, loguru, nbformat, requests and qrcode. None of that is optional, so a server with no display still installs a Qt toolkit and a charting library. The repository ships examples that suggest the GUI is not always wanted, including examples/no_ui/ and examples/notebook_trading/, alongside cta_backtesting/, spread_backtesting/ and portfolio_backtesting/. Two costs follow from the exact PySide6 pin: a newer Qt release cannot be taken without editing metadata, and a machine that already has a different PySide6 for another tool has to share it. If you run vnpy next to another Qt application, that pin is the first thing that collides.

## The up arrow is a compatibility claim, and four domestic gateways lack it

Gateways in the README are annotated, and the annotation is a 4.0 compatibility test, not decoration. The text explains that modules marked with the arrow have completed 4.0 upgrade adaptation testing, and that because the 4.0 core prioritised compatibility most modules can be used directly, with one exception: interfaces that wrap a C++ API must be upgraded before use. Most of the domestic list carries the mark, including CTP and CTP Mini, XTP, TORA, femas, esunny, hts, sec, sopt, ksgold, lstar, rohon, jees and tts for simulation. Four do not: 东证OST (ost), 东方财富EMT (emt), 飞鼠 (sgit) and 中汇亿达 (comstar). Overseas is thinner, with Interactive Brokers, tap and da. The practical effect is that gateway choice is made under a compatibility constraint, and picking one without reading the arrow costs a port before you can trade.

## The alpha examples fetch through RQData or 迅投研, not from the repository

The machine learning layer added with 4.0 lives in vnpy.alpha and is split into dataset for factor feature engineering, model for training, strategy for turning signals into trading logic, and lab for the research workflow. The optional extra called alpha installs polars, scipy, alphalens-reloaded, scikit-learn, lightgbm, torch and pyarrow, and the model directory ships Lasso, LightGBM and MLP implementations. The feature set called Alpha 158 is taken from Microsoft's Qlib project, which the README credits as the design inspiration. The notebooks are where the gap appears. examples/alpha_research/ contains download_data_rq and download_data_xt, which obtain A-share index constituent changes and bar data through the RQData service and the 迅投研 data service respectively. So the modelling stack installs from pip while the data does not, and a demo run needs an account on one of those services before the first cell produces anything.

## script_trader has no backtest and cta_backtester has no notebook

The app modules split research and execution by interface, and the split is a decision you make early. cta_backtester is a graphical backtesting module: it does strategy backtesting analysis and parameter optimisation through a GUI with no Jupyter Notebook required. script_trader goes the other way, aimed at multi-instrument strategies and compute tasks, and it also offers trading as REPL-style commands on the command line, but it explicitly does not support backtesting. If your process is notebook-first, the backtester is the wrong tool and you build your own harness; if your process is a window and a parameter sweep, the script trader leaves you without history. In between sit cta_strategy, which gives fine-grained control over order placement for slippage and high-frequency work, and algo_trading, which provides TWAP, Sniper, Iceberg and BestLimit as ready execution algorithms.

## Three installers, Python 3.10 to 3.13, and CPython only in the metadata

The repository root carries install.bat, install.sh and install_osx.sh, one per desktop platform, which is the path the project expects you to take rather than a hand-rolled pip invocation. The metadata is specific about the target: requires-python is >=3.10, the classifiers enumerate 3.10, 3.11, 3.12 and 3.13, the operating systems are Windows, POSIX Linux and MacOS, and the only implementation listed is CPython, with Typing :: Typed and a Development Status of Production/Stable. The absence of Jython or PyPy is a real constraint for anyone who runs a non-CPython stack, and the platform list is narrow compared with the range of brokers the gateways target, since a domestic futures gateway generally assumes a Windows or Linux host. The dev extra is small, holding type stubs for pandas and scipy plus hatchling and babel, so the test and lint tooling is not where the weight sits.

## The README opens by advertising VeighNa Fusion, a commercial path

The first promotional block in the README is not the open-source framework. VeighNa Fusion is presented as a hosted route into futures quant trading through partner futures companies, with three claims attached: access is granted by applying through a partner company so you do not have to complete the connection testing yourself, a data centre handles historical data download and management to lower the data preparation barrier for beginners, and a research assistant turns a written strategy description into logic and then code, connecting that to backtesting and parameter optimisation. The relevance for someone evaluating the repository is that the tedious part Fusion removes, the broker connection testing, is exactly what a self-hosted user of the CTP gateway still has to do. The two products share a name and a version line; they are not the same thing, and the open-source tree contains neither the data centre nor the onboarding.

## Conclusion

Adopt vnpy if you need a Chinese or overseas brokerage gateway behind a Python strategy and can live with picking the module set yourself, since gateways, apps and the alpha layer are separate repositories rather than one install. Check the arrow on your gateway before writing strategy code, read the 4.0 compatibility note if the interface wraps a C++ API, and budget for a data service account if you intend to run the alpha examples, which fetch through RQData or 迅投研 rather than from the repository.

## FAQ

### What is vnpy and who is it for?

vnpy, also called VeighNa, is a Python framework for developing quantitative trading systems that has grown toward a multi-function trading platform. The project says its users include private funds, securities companies and futures companies, and the package description is A framework for developing quant trading systems.

### What Python versions and platforms does vnpy support?

pyproject.toml sets requires-python to >=3.10 and lists classifiers for 3.10, 3.11, 3.12 and 3.13 on CPython, with Windows, POSIX Linux and MacOS as the operating systems. The repository root carries install.bat, install.sh and install_osx.sh, one installer script per platform.

### What does the vnpy alpha module add?

Added with version 4.0, vnpy.alpha covers factor feature engineering in dataset, model training in model, strategy building in strategy, and research workflow management in lab. It ships Lasso, LightGBM and MLP models, an Alpha 158 feature set taken from Microsoft's Qlib project, and example notebooks under examples/alpha_research.

### How do I get market data with vnpy?

Gateways cover domestic and overseas brokers, with CTP for domestic futures and options, XTP and TORA for A-shares and ETF options, and Interactive Brokers for overseas instruments, plus rqdata and xt gateways for cross-market real-time quotes. Locally, the data_manager module browses a tree of stored data and imports and exports CSV, and data_recorder writes tick or bar data to the database for later backtesting or live initialisation.

### Is vnpy free to use?

The framework is MIT licensed and open source, with the licence stated in pyproject.toml and in the LICENSE file at the repository root. The README also advertises VeighNa Fusion, a commercial offering reached through partner futures companies that bundles a data centre and strategy-to-code research tooling.

## Sources

- [Official documentation](http://www.vnpy.com)
- [Official README](https://github.com/vnpy/vnpy#readme)
- [Project repository](https://github.com/vnpy/vnpy)
- [Release notes](https://github.com/vnpy/vnpy/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/vnpy-vnpy
