44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
최적화 전후 성능 비교 스크립트
|
|
KR 상위 50개 종목으로 2022-2023년 백테스트를 실행하고 시간 측정
|
|
"""
|
|
|
|
import time
|
|
import sys
|
|
import config
|
|
import backtester
|
|
|
|
print("=" * 70)
|
|
print("최적화 적용 후 백테스트 성능 측정")
|
|
print("=" * 70)
|
|
print(f"대상 시장: {config.TARGET_MARKET}")
|
|
print(f"KR 시장 종목: {config.KR_MARKET_CAP_START} ~ {config.KR_MARKET_CAP_END}")
|
|
print(f"테스트 기간: {config.BACKTEST_START_DATE} ~ {config.BACKTEST_END_DATE}")
|
|
print(f"포트폴리오 크기: {config.MAX_PORTFOLIO_SIZE}")
|
|
print()
|
|
|
|
# 백테스트 실행 및 시간 측정
|
|
start_time = time.time()
|
|
|
|
try:
|
|
backtester.run_backtest()
|
|
except Exception as e:
|
|
print(f"\n[에러] 백테스트 실행 중 문제 발생: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
elapsed_time = time.time() - start_time
|
|
|
|
print()
|
|
print("=" * 70)
|
|
print(f"백테스트 총 실행 시간: {elapsed_time:.2f}초")
|
|
print("=" * 70)
|
|
print()
|
|
print("최적화 내용:")
|
|
print(" 1. iloc/get_loc 기반 날짜 인덱싱 (df.loc 대신 사용)")
|
|
print(" 2. compute_last_peak_series 함수로 피크 사전 계산")
|
|
print(" 3. 캐시 재활용: 더 넓은 범위 pkl 파일을 찾아 slice로 재사용")
|
|
print(" 4. 티커 목록 캐싱 (pykrx 네트워크 호출 감소)")
|