Files
kis_bot/docs/like_mcp.md/slippage_improvement.md

2.0 KiB

실매매 슬리피지(Slippage) 정확도 개선 요건

현재 백테스트 웹 모니터링에서 제공하는 슬리피지(Slippage) 수치는 target_price(수익 실현 목표가)를 기준으로 계산되어 실제 호가 괴리율을 대변하지 못하는 문제가 있습니다. 이를 해결하고 정확한 슬리피지를 추적하기 위해 다음 개선 작업이 필요합니다.

1. DB 스키마 개선

  • active_trades 테이블: 매수 주문 생성 당시의 "주문 의도 가격"을 저장할 order_intent_price (또는 entry_intent_price) 컬럼을 FLOAT 형태로 추가.
  • trade_history 테이블: 위와 동일하게 order_intent_price 컬럼을 추가.

2. 실매매 봇 엔진 수정 (Order Flow)

  • 주문 모듈(예: kis_order.py 또는 order_worker.py)에서 시장가(IOC/FOK) 매수 주문을 KIS API로 쏘는 바로 그 시점의 **1호가 매도 잔량 가격(또는 최우선 매수 기준가)**을 포착.
  • 해당 가격을 DB active_trades INSERT/UPDATE 시 order_intent_price에 기록.
  • (기존 target_price는 순수한 '익절 목표가' 용도로만 유지)

3. 청산 모듈 (Trade History 이관)

  • database.pyclose_trade 함수에서 active_trades의 데이터를 trade_history로 옮겨 담을 때, order_intent_price 값도 함께 복사(INSERT)되도록 쿼리 수정.

4. 백테스트 웹 API 및 프론트엔드 연동

  • backtest_web.pyapi_actualfeed_collect_stats.py에서 슬리피지 계산 공식을 변경:
    • 이전: (buy_price - target_price) / target_price * 100
    • 변경: (buy_price - order_intent_price) / order_intent_price * 100
  • 변경된 공식으로 계산된 슬리피지는 "주문을 넣으려던 호가 대비 실제 체결가가 얼마나 밀렸는지(혹은 유리하게 잡혔는지)"를 정확히 대변하게 됩니다.
  • 프론트엔드의 툴팁과 안내 문구를 "주문 당시 호가 대비 체결 밀림 현상"으로 갱신.