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()