pyqqq.backtest.broker#

브로커 인터페이스와 구현체를 포함하는 모듈입니다. 실제 거래와 백테스팅에서 동일한 인터페이스를 통해 주문 실행, 계좌 관리, 시장 데이터 조회 등의 기능을 제공합니다.

주요 기능#

  • 계좌 정보 조회 및 관리

  • 실시간/과거 시장 데이터 조회

  • 주문 생성, 수정, 취소

  • 포지션 조회 및 관리

  • 거래 이력 추적 및 분석

클래스 구성#

BaseBroker#

모든 브로커 구현체의 기본이 되는 추상 클래스입니다.

주요 메서드

  • get_account(): 계좌 정보 조회

  • get_minute_price(): 분단위 가격 데이터 조회

  • get_price(): 현재 가격 조회

  • get_daily_price(): 일별 가격 데이터 조회

  • get_pending_orders(): 미체결 주문 조회

  • get_positions(): 보유 포지션 조회

  • create_order(): 주문 생성

  • update_order(): 주문 수정

  • cancel_order(): 주문 취소

TradingBroker#

실제 거래를 수행하는 브로커 클래스입니다.

특징

  • KIS(한국투자증권) 국내주식/해외주식 API 지원

  • 시세 조회와 거래 실행 API 분리

  • 실시간 주문 처리 및 체결

  • 상세 거래 로깅

MockBroker#

백테스팅을 위한 가상의 브로커 클래스입니다.

특징

  • 과거 데이터 기반 모의 거래 지원

  • 시장가/지정가/조건부지정가 주문 처리

  • 실제 거래와 동일한 수수료 체계 적용

  • 상세한 거래 이력 관리 및 분석 기능

  • 포지션 추적 및 손익 계산

  • 시간별 포트폴리오 가치 분석

주요 분석 기능

  • show_trading_history_report(): 거래 이력 분석 및 보고서 생성

  • show_pnl_timeline(): 시간별 손익 현황 분석

  • show_positions(): 현재 포지션 현황 분석

사용 예시#

실제 거래#

# 국내주식 거래
data_api = KISSimpleDomesticStock(...)
trading_api = KISSimpleDomesticStock(...)
broker = TradingBroker(data_api, trading_api)

# 주문 실행
broker.create_order("005930", OrderSide.BUY, 10, OrderType.MARKET)

백테스팅#

# 백테스팅 환경 설정
clock = WallClock(
    live_mode=False,
    start_time=datetime(2023, 1, 1)
)
broker = MockBroker(clock, position_provider)

# 초기 자본금 설정
broker.set_initial_cash(100_000_000)

# 백테스트 실행 및 분석
broker.show_trading_history_report()
broker.show_pnl_timeline()