CZSC(纏中說禪技術分析工具)研究筆記¶
資料來源¶
| 項目 | 連結 |
|---|---|
| GitHub repo(★6,221 / 1,739 forks) | https://github.com/waditu/czsc |
| PyPI | https://pypi.org/project/czsc/ |
| 專案文件(飛書 wiki) | CZSC 1.0.X 使用說明和案例 |
| DeepWiki 架構分析 | https://deepwiki.com/waditu/czsc/1-overview |
| 理論來源 | 纏中說禪博客備份(原新浪博客內容不完整且無評論,這是網友整理的備份) |
| 舊 Python 實作(0.9.X) | v0.9.69 tag |
Metadata(2026-09-15 抓取):6,221 stars / 1,739 forks / 11 open issues / 160 subscribers · 主語言 Rust · 建立於 2019-06-11、最後 push 2026-09-02 · topics:
czsc/quant/tushare· License 標為 Other(非標準授權,商用前請自行確認)。
先說清楚「纏論」是什麼¶
纏中說禪是 2006–2008 年在新浪博客寫作的一位中文作者(本名李彪,2008 年過世),他的技術分析體系被中文量化圈簡稱「纏論」。核心是用分型 → 筆 → 線段 → 中樞這套遞歸結構去描述 K 線走勢,再做多級別聯立判斷。
在中文投資圈這套理論的爭議很大:支持者認為它給了走勢一個嚴謹的形式化定義,質疑者認為它的判讀高度依賴人為解讀。CZSC 這個專案的價值,正好落在這個爭議點上——它把一套原本靠人讀圖的理論,變成了可以程式化、可回測、可統計驗證的東西。 演算法能不能賺錢是一回事;把模糊理論做成確定性程式碼,本身就是有意義的工程。
1.0 版最大的變化:核心演算法整包搬到 Rust¶
這是這個專案現在最值得看的地方。
1.0.X 版本開始,纏論核心演算法(分型、筆、中樞等)已全部遷移到 Rust 實作,透過 PyO3 擴展(
czsc._native)暴露給 Python。
架構長這樣:
czsc (Python 套件)
├── czsc._native ← Rust 擴展(PyO3),纏論核心
│ ├── CZSC / FX / BI / ZS / RawBar / NewBar / BarGenerator
│ ├── Freq / Mark / Direction / Signal / Event / Position / Operate
│ ├── CzscTrader / CzscSignals / generate_czsc_signals
│ ├── signals.* ← 220+ 信號函數
│ └── ta.* ← Rust TA 算子(ema/sma/boll…)
├── czsc.traders ← Python 門面,匯聚 Rust 交易 API
├── czsc.utils ← 繪圖/快取/統計/交易工具
├── czsc.connectors ← 資料源連接器(天勤/Tushare/CCXT/本地快取)
├── czsc.strategies ← 策略門面
├── czsc.fsa ← 飛書自動化工具
└── czsc.envs ← 環境變數管理
底層 Rust workspace 有 9 個 crate:czsc / czsc-core / czsc-derive / czsc-signals / czsc-trader / czsc-utils / czsc-ta / czsc-signal-macros / czsc-python(PyO3 綁定入口)。
為什麼這件事值得注意:纏論的分型與筆識別是逐根 K 線的遞歸狀態機,在 Python 裡跑多品種多級別會很慢。搬到 Rust 之後,多級別聯立與大批量回測才變得可行。這是「中文量化圈少見的、把 Python 效能瓶頸真的用 Rust 解掉」的案例,不是拿 Rust 當招牌。
代價也很直接:安裝從純 Python 變成需要預編譯 wheel,自己從源碼建置要裝 Rust 工具鏈 + maturin,而且
pyo30.22 要求 Python ≥ 3.10。系統預設 Python 低於 3.10 時要自己export PYO3_PYTHON=$(which python3.12),否則cargo build會在crates/czsc-python/build.rs提前 panic。
核心設計:信號—事件—交易 三層¶
這是這個專案除了纏論之外,最可以獨立帶走的架構:
| 層 | 做什麼 |
|---|---|
| 信號(Signal) | 220+ 個信號函數,每個回傳一個結構化的信號值。命名帶版本號(如 cxt_bi_status_V230101)——信號函數一旦發布就不改語意,要改就發新版本,這樣歷史回測結果才可重現 |
| 事件(Event) | 用 signals_all / signals_any / signals_not 對信號做邏輯組合,組出交易事件 |
| 交易(Position / Operate) | 事件觸發倉位操作;CzscTrader 做多級別聯立決策 |
信號函數帶版本號這個約定值得特別點名——它把「策略回測不可重現」這個量化研究的老問題,用命名規範直接解掉了。
快速開始¶
import czsc
from czsc import CZSC, Freq, format_standard_kline
from czsc.mock import generate_symbol_kines
df = generate_symbol_kines('000001', '30分钟', '20240101', '20240601')
bars = format_standard_kline(df, freq=Freq.F30)
czsc_obj = CZSC(bars) # 自動識別分型、筆、中樞
print(f"筆數量:{len(czsc_obj.bi_list)}")
print(f"中樞數量:{len(czsc_obj.zs_list)}")
多級別合成、信號生成、權重回測:
from czsc import BarGenerator, generate_czsc_signals, WeightBacktest
bg = BarGenerator(base_freq='1分钟', freqs=['5分钟', '30分钟', '日线'])
for bar in raw_bars:
bg.update(bar)
signals_seq = [
"czsc._native.signals.bar.bar_end_V230331",
"czsc._native.signals.cxt.cxt_bi_status_V230101",
]
results = generate_czsc_signals(bars, signals_seq)
wb = WeightBacktest(dfw, fee_rate=0.0002)
print(wb.stats)
視覺化用 plotly + lightweight-charts,產出自包含的離線 HTML(分型/筆/線段/中樞畫在 K 線上),方便分享與嵌入。
安裝:pip install czsc -U(Python ≥ 3.10)。
目前限制 / 注意事項¶
- 授權不是標準開源授權(GitHub 標 Other / NOASSERTION)。商用前務必自己確認 LICENSE 內容。
- README 頂端掛著商業產品推廣(「勝可知」大模型量化策略研究平台,附邀請碼與 500 元額度)。專案本身是開源的,但要知道它現在有商業產品在上面。
- 文件主要在飛書 wiki,不是 GitHub。這對牆外使用者的可及性是個問題,而且飛書連結的長期穩定性不如 repo 內文件。
- 理論本身有爭議。纏論在中文投資圈的評價兩極;這個專案提供的是工程實現與驗證工具,不是「纏論有效」的證明。想驗證有沒有效,就用它的
WeightBacktest自己跑。 - 主要面向 A 股 / 中國期貨(連接器是天勤、Tushare),台股要自己接資料源。
- 信號函數數量在 README 不同段落寫 220+ 和 246,以實際
czsc._native.signals為準。
研究價值與啟示¶
關鍵洞察¶
-
「把模糊理論做成確定性程式碼」本身就是一種研究貢獻。纏論的分型、筆、中樞原本是靠人讀圖判斷的東西,CZSC 給了它一個唯一確定的演算法定義。結果是:你終於可以問「這套理論到底有沒有統計優勢」——而在有程式碼之前,這個問題連問都問不清楚。
-
信號函數帶版本號(
cxt_bi_status_V230101)是可以直接抄走的約定。發布後不改語意、要改就發新版本——回測可重現性的問題,用一條命名規範就解掉一大半。任何做策略庫的人都該照抄。 -
Rust + PyO3 是 Python 量化效能瓶頸的務實解法。CZSC 沒有整包重寫成 Rust 服務,而是只把熱路徑(遞歸狀態機)搬過去,Python 端保留門面。這個切法保住了 Python 生態的易用性,又拿到了 Rust 的速度。代價是安裝複雜度上升——值不值得,取決於你的熱路徑是不是真的在那裡。
-
六年維護(2019 → 2026)在量化開源專案裡很稀有。大多數量化 repo 活不過一次牛熊。這個專案能活下來,跟它有明確的理論根基(不是東拼西湊的指標集合)、有社群(飛書群、B 站教程)、後來還長出商業產品,都有關係。
與其他專案的關聯¶
| 對照 | 關係 |
|---|---|
| Vibe-Trading | 同為中文量化工程專案;Vibe-Trading 是 LLM agent 工作台,CZSC 是確定性的技術分析引擎。兩者其實互補——CZSC 可以當 agent 的一個工具 |
| 反詐投資王 | 兩端對照:CZSC 給你更精細的進出場判斷,反詐投資王問你這些判斷到底有沒有統計優勢。先用後者驗證前者,順序才對 |
| StockAgent / TradingAgents | 那些是 LLM 多 agent 做決策,CZSC 是規則明確的形式化系統——兩種完全不同的建模哲學 |
| awesome-data | CZSC 的 connector 接的就是 Tushare 那一類資料源 |