Vespa314/chan.py

开放式的缠论python实现框架,支持形态学/动力学买卖点分析计算,多级别K线联立,区间套策略,可视化绘图,多种数据接入,策略开发,交易系统对接;

chan.py – 缠论 기반 시장 분석 및 거래를 위한 Python 프레임워크

소개 – chan.py는 缠论 (Chan‑Theory) 기술 분석 방법론을 구현한 오픈소스 Python 라이브러리입니다. 다음과 같은 풀스택 파이프라인을 제공합니다:

  • 저수준 계산 – 缠论 요소 계산: 프랙탈, 필 (strokes), 세그먼트 (segments), 중심 구역 (central zones), 매수/매도 포인트 (고전적 형태학적 포인트 및 사용자 정의 전략 포인트).
  • 특징 공학 – 매수/매도 포인트당 500개 이상의 특징을 생성하여 머신러닝 모델에 즉시 활용 가능.
  • 모델 통합 – XGBoost, LightGBM 및 간단한 MLP 래퍼와 AutoML 하이퍼파라미터 탐색 유틸리티 제공.
  • 백테스팅 및 평가 – 파라미터 스윕 스크립트를 갖춘 구성 가능한 백테스트 엔진.
  • 실거래 – Futu 증권 API(시뮬레이션 및 실시간) 커넥터, 실시간 가격 피드(Sina, pytdx, akshare 등) 및 데이터베이스 백엔드(MySQL, SQLite).
  • 시각화 – Matplotlib 기반 정적 플롯 및 단계별 재생을 위한 애니메이션 드라이버.

주요 구성 요소 (폴더별)

폴더 목적
Bi, Seg, ZS 구성 가능한 알고리즘을 갖춘 핵심 缠论 요소 (필, 세그먼트, 중심 구역).
BuySellPoint, CustomBuySellPoint 고전적 형태학적 매수/매도 포인트 (bsp) 및 사용자 정의 전략 포인트 (cbsp).
ModelStrategy 모델 학습, 특징 조정, AutoML 및 백테스팅 유틸리티.
ChanModel 추상 모델 클래스, 특징 레지스트리 및 데모용 XGBoost 모델.
DataAPI 통합 데이터 액세스 계층 – akshare, baostock, Futu, 오프라인 CSV 및 실시간 스냅샷 API.
Trade 거래 엔진, 주문 실행, 포지션 사이징 및 데이터베이스 영속성.
Plot 플롯 드라이버 (정적 이미지용 CPlotDriver, 애니메이션 재생용 CAnimateDriver) 및 COS 업로드 도우미.
Debug 전략 예제 스크립트, 성능 프로파일링 도구 및 노트북.
App 라이브러리 기반의 GUI 스캐너 예제.

설치 (Python 3.11+)

# clone the repo
git clone https://github.com/Vespa314/chan.py.git
cd chan.py
# install required packages (the repo ships a requirements.txt)
pip install -r requirements.txt

이 라이브러리는 Python 3.11을 필요로 합니다 (작성자에 따르면 3.8 대비 약 16%의 속도 향상이 보고됨).


빠른 시작 (정적 분석 및 플롯)

from Chan import CChan
from ChanConfig import CChanConfig
from Plot.PlotDriver import CPlotDriver

# basic configuration – all options are passed as a dict
cfg = CChanConfig({
    "zs_combine": True,
    "bi_strict": True,
    "seg_algo": "chan",
    "trigger_step": False,
})

# instantiate the core engine – here we request daily K‑lines for HK.00700
chan = CChan(
    code="HK.00700",
    begin_time="2012-01-01",
    end_time=None,
    data_src=DATA_SRC.FUTU,
    lv_list=[KL_TYPE.K_DAY],
    config=cfg,
    autype=AUTYPE.QFQ,
)

# plot everything (k‑line, bi, seg, zs, buy‑sell points)
plot_cfg = {
    "plot_kline": True,
    "plot_bi": True,
    "plot_seg": True,
    "plot_zs": True,
    "plot_bsp": True,
    "plot_cbsp": True,
}
plot_para = {"figure": {"width": 24}}

CPlotDriver(chan, plot_config=plot_cfg, plot_para=plot_para)

스크립트를 실행하면 지정된 기간의 모든 缠论 요소가 계산되며, 전체 시각화 결과가 포함된 Matplotlib 창이 열립니다.


머신러닝 모델을 사용한 신호 점수 산정

from ChanModel.XGBModel import CXGBModel

# attach a trained XGBoost model (the demo model ships with the repo)
model = CXGBModel(model_path="ModelStrategy/models/Xgboost/model.bin")
cfg.model = model          # enable model scoring
cfg.cal_feature = True     # force feature calculation
cfg.score_thred = 0.6      # only act on signals with score ≥ 0.6

모델은 각 후보 매수/매도 포인트에 대해 생성된 500개 이상의 특징을 받아 신호 필터링이나 순위 지정에 사용할 수 있는 확률 점수를 반환합니다.


실거래 워크플로우

  1. 데이터 피드 – Config/demo_config.yaml에서 FutuAPI(또는 기타 스냅샷 API)를 설정합니다.
  2. 전략 – 내장된 CCustomStrategy/CSegBspStrategy를 사용하거나 Strategy를 상속받은 사용자 정의 클래스를 구현합니다.
  3. 거래 엔진 – TradeEngine은 생성된 신호를 소비하고, 포지션 사이징(OpenQuotaGen)을 적용하며, FutuTradeEngine을 통해 주문을 전송합니다.
  4. 영속성 – 거래 로그는 설정에 정의된 MySQL 또는 SQLite에 저장됩니다.
  5. 모니터링 – RealTimeTracker는 오픈 포지션의 손절매/익절 이벤트를 감시합니다.

라이브러리 활용 대상

  • 퀀트 연구원: 특징 생성 및 백테스팅을 위해 충실한 缠论 구현이 필요한 분.
  • 알고리즘 트레이더: 데이터 수집 → 신호 생성 → ML 점수 산정 → 실거래 주문 실행으로 이어지는 엔드투엔드 스택을 찾는 분.
  • 교육자/학생: 금융 특화 AI 파이프라인의 구체적이고 실무적인 예제에 관심이 있는 분.

라이선스 및 커뮤니티

이 프로젝트는 MIT 라이선스 하에 배포됩니다. 질문을 위한 Telegram 그룹(https://t.me/zen_python)이 제공되며, 저장소에는 온보딩을 위한 quick_guide.md가 포함되어 있습니다.


위의 모든 세부 정보는 저장소의 README에서 직접 가져온 것이며, 추가 기능은 추론되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트