Your Name
d8ac1595c1
fix(backtest): 22.8% 쓰레기스킵 → 5.2% (bt_candle_source 로더 통일)
## 근본원인
bt_candle_source._load_ticks_by_code_bulk / _ticks_for_bar_garbage 가
자체 SELECT 로 recv_ts/tick_time_raw 미포함 → bar_is_garbage 가
_lag_sec/recv_ts 없이 봉끝 폴백 → WS 봉의 76% 대량 컷.
엔진 로더(breakout_tick_loader.load_common_ticks_by_code) 는 이미
recv_ts + _lag_sec 완비였지만 두 로더가 발산 상태 → 이번에 사고 촉발.
## 수정 (C안: 로더 통일)
- _load_ticks_by_code_bulk: breakout_tick_loader._fetch_ws_ticks_day_rows
위임. flat 리턴은 _ingest_flat_tick_rows (신설) 로 어댑팅.
recv_ts + _lag_sec 모두 포함 → 엔진 로더와 100% 동일 SELECT/계산.
- _ticks_for_bar_garbage: 단일 종목용으로 _load_ticks_by_code_bulk
(codes_filter=[code]) 재사용. 별도 SELECT 제거.
## 검증
Optuna scalp TPE 10 trials · 2026-09-04 · Python 엔진:
- Before: 슬롯 63671 · 쓰레기스킵 14495 (22.8%) · hole 7.4% · kis/ws pick 11%
- After: 슬롯 63671 · 쓰레기스킵 3324 ( 5.2%) · hole 3.7% · kis/ws pick 20%
실매 스모크 (scripts/test_live_execution_validation.py): 최종 통과 · 완결
로그: logs/test_live_execution_validation_20260906_201535.log
## 문서 (rust_engine_parity_port_plan.md)
- 부록 A: A6~A11 사전 정지 작업 추가 (wall-clock 정합·로더 통일·파케이·게이팅·뱃지)
- 부록 C (신설): D안 로드맵 — Rust 세션이 현재 봉만 받고 틱/호가/프로그램매매 미전달.
Python 정합 개선을 받아도 Rust 는 여전히 데이터 절반짜리 상태. P0 최우선 6단계.
## 룰
- CRITICAL §0 (봉 freeze · OHLC 폴백 금지) 준수
- 룰 19 (근본원인 딥다이브 · 3안 선보고) — B/C/D 안 제시 후 사용자 C안 선택
- 룰 25-1 (교차검증) — 두 로더 발산 재발 방지
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 20:18:11 +09:00
..
2026-09-06 19:23:01 +09:00
2026-07-06 01:27:00 +09:00
2026-07-21 07:50:24 +09:00
2026-07-06 01:27:00 +09:00
2026-08-19 22:11:31 +09:00
2026-08-27 15:21:21 +09:00
2026-09-06 20:18:11 +09:00
2026-05-05 21:04:17 +09:00
2026-07-06 01:27:00 +09:00
2026-07-21 07:50:24 +09:00
2026-08-28 16:46:27 +09:00
2026-09-06 19:23:01 +09:00
2026-08-23 17:51:29 +09:00
2026-08-27 15:21:21 +09:00
2026-08-28 16:46:27 +09:00
2026-08-19 22:11:31 +09:00