mrkeyoor.com_
Thu 13 Aug 13:43 UTC
Dataevaluationupdated 13 Aug 2026

czsc

CZSC is a Chinese-first Python and Rust toolkit for applying Chan theory to market charts, building signals, and researching trading strategies. No official English documentation is included in the repository, although the README links to a generated DeepWiki reference. It turns candlestick data into Chan structures, multi-timeframe signals, positions, visualizations, and backtest inputs.

Verdict

CZSC is a serious and unusually deep implementation for researchers who specifically want Chan theory, not a general recommendation for anyone doing technical analysis. The Rust rewrite makes its core more distinctive, but also raises the migration and contributor barrier just as the 1.0 API is settling. Choose it if the methodology and Chinese documentation fit your work; otherwise a general backtester will be easier to learn, verify, and staff.

Setup3/5Easy wheel install, harder source build, data setup, and 1.0 migration
Docs3/5Detailed Chinese references, but no official English documentation
Community4/5Active releases, a focused user group, videos, and current issue replies
Maturity3/5Established project with a newly incompatible Rust-based 1.0 core

Who it’s for

Chinese-speaking quantitative researchers who already understand or want to study Chan theory.
Python users who need reusable fractal, stroke, central-zone, signal, event, and position objects.
Strategy researchers working across Chinese equities, futures, or crypto data sources.
Performance-conscious developers comfortable using a Python API backed by Rust.

Who it’s NOT for

English-only developers who need first-party tutorials and reference material: the README, public API guide, changelog, examples, issue discussion, and linked community resources are primarily Chinese.
Existing CZSC 0.9 users expecting a routine upgrade: the README says 1.0 moved the core and signal functions to Rust and is incompatible with older code.
Teams that require a pure-Python implementation they can step through or patch: the 1.0 core is a PyO3 extension, and source builds require Rust plus maturin.
Researchers expecting market data to be bundled: connectors target TQSdk, Tushare, CCXT, and local caches, while AKShare support remains an open request.
Anyone seeking a validated profit system or brokerage execution product: the README frames the project as technical exchange, and its analysis and backtests still require independent data, cost, bias, and live-trading validation.

Setup reality

For a supported platform, pip install czsc -U is a pleasantly short start, provided Python 3.10 or newer and a compatible prebuilt wheel are available. The package pulls in a sizable numerical and data stack plus wbt for weight backtesting. Building from source is a different commitment: install Rust and maturin, compile the PyO3 extension, and understand the nine-crate workspace. Useful research also needs correctly formatted candlestick data and, for live or historical provider data, separate credentials and provider-specific dependencies. Migrating an older strategy can be more work than installation because 1.0 removed or renamed many Python modules, functions, signal paths, and visualization components.

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.

Alternatives

ProjectWhat it isPick it when
vectorbtA NumPy and pandas-centered framework for fast, vectorized strategy research.pick this instead when broad indicator testing, parameter sweeps, and English documentation matter more than Chan-specific structures.
BacktraderA widely used Python engine for event-driven backtesting and trading strategies.pick this instead when you want a general strategy engine with feeds, brokers, and orders rather than a Chan-analysis toolkit.
Zipline ReloadedA maintained continuation of Zipline for event-driven quantitative backtests.pick this instead when portfolio simulation and a familiar general quant API take priority over CZSC's signal vocabulary.

What people are saying

  1. [github-trending] waditu/czsc

Sources

  1. CZSC README
  2. CZSC changelog
  3. CZSC public API reference
  4. CZSC 1.0.1 release
  5. Missing zs_list report on release candidate 8
  6. AKShare connector request