feat(옵투나·웹): 후처리 재탐색·ob_modes·적용감사·수집통계

- Optuna web jobs/TPE/apply snapshot·틱로더 정합, jobs limit·감사로그
- 백테 UI 호가모드·후보 적용 흐름, feed_collect_stats API/탭
- 가설검증·교차검증 룰, 4전략 스모크·OB slot41 진단 스크립트

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Your Name
2026-08-27 15:23:44 +09:00
parent 5e44b86f8b
commit 8fbba264ba
30 changed files with 2973 additions and 186 deletions

View File

@@ -157,12 +157,25 @@ def prepare_momentum_search_context(
base_fixed["_orderbook_filter_enabled"] = False
elif _ob_mode == "on":
base_fixed["_orderbook_filter_enabled"] = True
ob_filter_on = bool(base_fixed.get("_orderbook_filter_enabled")) or _ob_mode == "auto"
from kis_trader.backtest.optuna_tpe_common import optuna_tpe_needs_orderbook_feed
need_ob_feed = (
mk != "US" and optuna_tpe_needs_orderbook_feed(mode, _ob_mode)
)
ob_filter_on = (
bool(base_fixed.get("_orderbook_filter_enabled"))
or _ob_mode == "auto"
or need_ob_feed
)
if need_ob_feed:
# trial 이 ON/OFF — 스냅은 미리 로드 (필터 OFF 베이스여도)
base_fixed["backtest_use_trigger_snapshot_db"] = True
logger.info(
"📌 호가필터: %s (%s) market=%s",
"📌 호가필터: %s (%s) market=%s%s",
_ob_mode.upper(),
"적용" if ob_filter_on else "스킵 — 코어 파라미터 순수 탐색",
"스냅로드" if need_ob_feed else ("적용" if ob_filter_on else "스킵 — 코어 파라미터 순수 탐색"),
mk,
" · TPE 호가축" if need_ob_feed else "",
)
db = TradeDB()
@@ -321,12 +334,21 @@ def prepare_momentum_search_context(
momentum_backtest_use_tick_entry,
momentum_backtest_use_tick_exit,
)
if backtest_needs_trigger_snapshot_load(base_fixed, strategy="MOMENTUM"):
if backtest_needs_trigger_snapshot_load(base_fixed, strategy="MOMENTUM") or need_ob_feed:
_load_params = dict(base_fixed)
if need_ob_feed:
_load_params["_orderbook_filter_enabled"] = True
orderbook_by_code, program_by_code, trigger_snap_meta = load_trigger_snapshots_by_code(
_snap_db, start_key, end_key, set(codes_candles.keys()),
engine_params=base_fixed, strategy="MOMENTUM",
engine_params=_load_params, strategy="MOMENTUM",
)
log_verdict_by_code = trigger_snap_meta.get("log_verdict_by_code") or {}
if need_ob_feed:
ob_rows = int(trigger_snap_meta.get("ws_orderbook_rows_loaded") or 0)
logger.info(
"✅ TPE 호가축용 ws_orderbook %s",
f"{ob_rows:,}",
)
if momentum_backtest_use_tick_exit(base_fixed) or momentum_backtest_use_tick_entry(base_fixed):
from kis_trader.backtest.momentum_tick_loader import load_momentum_ticks_by_code
ticks_by_code, tick_rows = load_momentum_ticks_by_code(