A specialist toolkit built around Chan theory
CZSC is not another library of moving averages. It implements Chan theory, a Chinese framework for breaking market bars into structures such as fractals, strokes, and central zones, then combining those structures across timeframes. The package turns that vocabulary into programmable objects, more than 220 signal functions, logical events, positions, and a multi-level trader. Researchers can generate signals, replay a strategy, optimize candidates, and feed weights into a backtest.
CZSC provides shared types for raw bars, processed bars, frequency, direction, signals, events, and positions. A BarGenerator builds larger intervals from base bars, while CzscSignals and CzscTrader coordinate analysis across frequencies. HTML chart output can overlay structures and signals for inspection.
The method is also the first filter. If a team does not intend to use Chan theory, much of the package is irrelevant. General frameworks such as vectorbt or Backtrader offer a wider conceptual entry point. CZSC is valuable because it is opinionated, not because it replaces every part of a quantitative stack.
Version 1.0 changes the center of gravity
Starting with 1.0, the core algorithms moved from Python to Rust and are exposed through czsc._native using PyO3. The workspace now spans nine Rust crates covering core objects, signals, trading, technical-analysis operators, macros, utilities, and Python bindings. Python remains the user-facing environment, with pandas and Polars data, strategy wrappers, connectors, plotting, and research helpers around the compiled core.
This architecture should appeal to researchers who want Python ergonomics without keeping every bar-by-bar calculation in Python. It is less friendly to contributors accustomed to opening a .py file and changing a signal. Signal functions now live in Rust modules, and the old Python core has no fallback. Debugging a native extension and contributing across language boundaries require a different toolchain and skill set.
The compatibility cost is explicit. The README says 1.0 is incompatible with 0.9, and the changelog lists removed namespaces, functions, Streamlit components, report builders, and renamed connector paths. Signal naming changed, Python implementations disappeared, and Python 3.10 became the minimum. Existing users should treat 1.0 as a migration project, inventory every import and signal identifier, and compare outputs on fixed data before replacing an older environment.
Version 1.0.1 shows the API is still settling. It added public structural-analysis functions and a CZSC.zs_list property after a user reported that the README example failed on release candidate 8. The changelog says the property is now present, even though the issue remains open. Start on 1.0.1 or newer rather than an RC, and pin the version used to produce research results.
Installation is easier than understanding the inputs
The recommended install is a normal PyPI command on Python 3.10 or newer. Prebuilt wheels hide the Rust machinery, so a notebook user may never need Cargo. Source installation requires the Rust toolchain and maturin, and development adds uv, pytest, Ruff, and type checking. This is reasonable for a hybrid project, but it makes unsupported platforms and native build failures more demanding than a pure-Python package.
The runtime dependency set is substantial: pandas, NumPy, PyArrow, Polars, SciPy, statsmodels, Plotly, and several utility packages are installed, while wbt is a hard dependency that supplies weight backtesting and reports. The README is refreshingly clear about the ecosystem split. CZSC focuses on analysis and signals, wbt handles offline weight backtests, and the separate wmr project manages stored weights downstream.
Market data remains the user's responsibility. Connectors cover TQSdk for futures, Tushare for Chinese equity history, CCXT for crypto exchanges, and a local research-data cache. Those providers have their own packages, credentials, limits, symbol conventions, and data quality concerns. An open request asks for AKShare support, so users committed to that source must write an adapter or wait. The mock-data helpers are useful for learning APIs, not evidence that a strategy survives real prices.
Documentation is detailed and linguistically narrow
The README includes architecture, installation, runnable examples, an API overview, connectors, plotting, development commands, and ecosystem dependencies. A separate public API manual maps exported names to their real Rust or Python implementation and internal dependencies. The changelog is exceptionally specific about breaking changes and release engineering. Linked Feishu pages and Bilibili videos add case studies and community teaching.
Nearly all of that material is in Chinese. There is no official English README in the repository, and many concepts, enum display values, signal names, and community discussions assume Chinese financial terminology. A generated DeepWiki link may help exploration, but it is not a maintained English contract. International teams should budget for translation and keep their own glossary if CZSC becomes shared infrastructure.
The license file and package metadata identify Apache 2.0, even though GitHub's repository metadata does not currently detect an SPDX license. That is a documentation wrinkle rather than evidence of missing license text, but organizations should review the actual file as usual.
Strong current activity, young new architecture
The last push was August 12, 2026, three days after version 1.0.1 shipped. GitHub showed only seven open issues and pull requests, including current dependency updates and user questions. The release history was active throughout early 2026, and the quick response from the missing zs_list report to a documented 1.0.1 addition is encouraging.
Maturity is mixed. The project has years of history, thousands of stars, a focused community, and a broad research surface. The Rust implementation and its public API are much newer, with a major compatibility break behind them and small rough edges still being discovered. Backtest results also carry the normal risks of bad data, leakage, costs, and overfitting, none of which disappear because the structural calculations are fast.
CZSC is an excellent shortlist candidate for a Chinese-speaking researcher committed to Chan theory. Install the wheel, begin with mock data, move to a verified provider, and compare every migration on a frozen dataset. For a team that simply needs a general backtester or English-first documentation, its specialized power does not repay the learning and maintenance cost.