Chan theory determines whether CZSC fits
CZSC implements Chan theory, a Chinese framework for breaking market bars into structures such as fractals, strokes, and central zones, then combining them across timeframes. The package turns that vocabulary into objects, more than 220 signal functions, logical events, positions, and a multi-level trader. Researchers can generate signals, replay a strategy, and pass position weights into a backtest.
Shared types cover raw bars, processed bars, frequency, direction, signals, events, and positions. A BarGenerator creates larger intervals from base bars, while CzscSignals and CzscTrader coordinate analysis across frequencies. HTML charts can overlay structures and signal points. If the team does not use Chan theory, most of this specialized API is unnecessary.
Version 1.0 moved the core into 9 Rust crates
Starting with 1.0, core algorithms moved from Python to Rust and are exposed through czsc._native using PyO3. Nine Rust crates cover objects, signals, trading, technical-analysis operators, macros, utilities, and Python bindings. Python remains the user-facing layer for pandas and Polars data, connectors, plotting, and research helpers.
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. Python 3.10 is now the minimum. Existing users should inventory imports and signal identifiers, then compare results on frozen data before replacing an older environment.
Contributors face another cost. Signal functions live in Rust modules and the old Python core has no fallback. Debugging a native extension or changing calculations requires Rust and maturin. Version 1.0.1 added structural-analysis functions and CZSC.zs_list after issue 343 reported that the README example failed on release candidate 8. Pin the package version used for research.
What happened when we ran it
Our sandbox installed commit 701e480 in 753 seconds, adding 57 packages and occupying 748 MB. The build completed in 7 seconds. We used an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Python 3.12, and no secrets. Pip-audit found 0 known vulnerabilities in the installed environment.
Pytest exited 1 after 29 seconds. It reported 516 passed, 1 failed, and 6 skipped out of 517. test_make_it_daily expected the dt column to use datetime64[ns], but received datetime64[us]. The log shows a precision mismatch; it does not identify whether CZSC, pandas, Python 3.12, or the test assumption caused it.
The 3.9 MB checkout contained 626 files and about 69,317 source lines. It had a tests directory and 4 CI workflow files, but no Dockerfile. Installation and compilation worked. One assertion in a trading utility kept the complete suite from passing, which matters if daily conversion feeds later calculations.
Market data and provider credentials stay outside CZSC
Prebuilt PyPI wheels hide the Rust toolchain on supported platforms. A source build needs Rust and maturin, plus an explicit Python 3.10-or-newer interpreter when the system default is older. The numerical and data stack includes pandas, Polars, SciPy, statsmodels, Plotly, and wbt, which supplies weight backtesting and reports.
Market data remains the user's responsibility. Connectors cover TQSdk for futures, Tushare for Chinese equities, CCXT for crypto exchanges, and a local cache. Each provider has its own dependencies, credentials, limits, and symbol conventions. Issue 346 asks for AKShare support, so that connector was not part of the documented 1.0 surface. Mock data teaches the API; it says nothing about a strategy's returns.
The ecosystem split is sensible once understood. CZSC handles analysis and signals, wbt performs offline weight backtests, and the separate wmr project stores weights for downstream use. A team still has to validate timestamps, corporate actions, fees, slippage, leakage, and execution assumptions around those pieces.
Chinese documentation is detailed; official English docs are absent
The README covers architecture, installation, examples, the public API, connectors, plotting, development commands, and ecosystem dependencies. Linked Feishu pages and Bilibili videos add case studies. Nearly all first-party material is Chinese, including many market terms and community discussions.
There is no official English README in the repository. A linked DeepWiki page can help an English-speaking developer explore the code, but it is generated documentation rather than the project's maintained contract. International teams should expect translation work and keep a shared glossary if signals and enum values enter production code.
The LICENSE file says Apache 2.0, although GitHub metadata returned no detected SPDX identifier. That mismatch is worth recording during procurement, then resolving by reviewing the actual file and package metadata.
An August 16 push follows the v1.0.1 migration
GitHub recorded the last push on August 16, 2026, and v1.0.1 was released on August 9. The repository had 5,922 stars and 8 open issues and pull requests combined when fetched. That is current activity around a project with years of history, but the Rust-backed public API is still young.
CZSC belongs on the shortlist for a Chinese-speaking researcher committed to Chan theory. Our 516 passing tests show considerable exercised behavior, while the remaining datetime assertion and the 0.9-to-1.0 break argue for pinned environments and output comparisons. For broad technical analysis with English-first documentation, vectorbt or an event-driven backtester asks less of the team.

