pyqqq.backtest.positionprovider#

백테스트 시에 보유 포지션 정보를 제공하는 모듈입니다. 다양한 브로커와 데이터 소스로부터 포지션 정보를 조회할 수 있는 표준 인터페이스를 제공합니다.

주요 기능#

  • 실시간 브로커 연동 포지션 조회 (KIS, EBest)

  • 수동 포지션 정보 관리

  • DB 기반 히스토리 포지션 조회

  • 다양한 데이터 소스에 대한 표준화된 인터페이스 제공

클래스 구성#

BasePositionProvider#

포지션 제공자의 기본이 되는 추상 클래스입니다.

주요 메서드

  • get_positions(date): 특정 날짜의 포지션 정보 조회

KISPositionProvider#

한국투자증권 계좌의 실시간 포지션 정보를 제공합니다.

주요 기능

  • KIS OpenAPI를 통한 실시간 포지션 조회

  • StockPosition 형식으로 표준화된 포지션 정보 제공

EBestPositionProvider#

LS(구 이베스트투자)증권 계좌의 실시간 포지션 정보를 제공합니다.

주요 기능

  • EBest OpenAPI를 통한 실시간 포지션 조회

  • StockPosition 형식으로 표준화된 포지션 정보 제공

ManualPositionProvider#

백테스팅을 위한 수동 포지션 정보를 관리합니다.

주요 메서드

  • update_positions(): 포지션 정보 업데이트

  • get_positions(): 현재 포지션 정보 조회

BackPositionProvider#

DB에 저장된 과거 포지션 정보를 조회합니다.

주요 기능

  • 특정 날짜의 포지션 정보 조회

  • API 기반 데이터 조회

  • 브로커별 계좌 정보 지원

사용 예시#

실시간 포지션 조회#

# KIS 포지션 조회
provider = KISPositionProvider()
positions = provider.get_positions()

# EBest 포지션 조회
provider = EBestPositionProvider()
positions = provider.get_positions()

백테스팅용 포지션 관리#

# 수동 포지션 설정
positions = [
    StockPosition(asset_code="005930", quantity=100)
]
provider = ManualPositionProvider(positions)

# DB 기반 포지션 조회
provider = BackPositionProvider(
    brokerage='kis',
    account_no='계좌번호'
)
positions = provider.get_positions(date=datetime.date(2024, 1, 1))