이번에 들어간 내용
한투 호가 = 2번째 앱키 전용 키 없거나 start 실패 시 메인에 H0STASP0 안 붙임. 운영설정 WS_ORDERBOOK_SAVE_KIS 빨간 danger. LS RAM 합집합 후보∪보유∪영구∪grace. sync_targets와 split reconcile 둘 다. 틱 DB 영구 게이트는 그대로. 분봉 쓰레기 → 다음 소스 봉 통째 그 분 틱 0건이거나 전부 봉끝 대비 LIVE_FEED_FALLBACK_MAX_AGE_SEC 초과면 구멍. 메인 WS → 2차 → LS → REST → rollup. CANDLE_GARBAGE_FALLBACK 기본 true. 파일: feed_fallback.py(신규), ws_manager.py, kis_ws.py, candle_series.py, bt_candle_source.py, live_config_schema.py, database.py, 스모크, MD 2개. 같은 ws_manager/database/kis_ws/live_config에는 직전 커밋 이후 쌓여 있던 시세 폴백·ENV 키 정리도 같이 들어갔습니다. 파일 단위로 나눌 수 없어서입니다.
This commit is contained in:
49
docs/옵투나.md
49
docs/옵투나.md
@@ -37,7 +37,9 @@ python3 -u kis_trader/backtest/optuna_rerun_postprocess.py \
|
||||
## 2. 진입 후처리 격자 (env_config_ext)
|
||||
|
||||
`ensure_optuna_gate_env_defaults` → `OPTUNA_OB_*`.
|
||||
`OPTUNA_OB_AXIS_TRIALS=0` 이면 `OPTUNA_OB_RECOMMEND_TRIALS`(기본 1000)/축.
|
||||
`OPTUNA_OB_COMBO_TRIALS_SINGLE`(기본 150) / `DOUBLE`(200) / `TRIPLE`(250) = 8방 중 켜진 축 개수별 trial.
|
||||
방 000은 TPE 없음. 모멘텀·돌파 합 150×3+200×3+250=1,300. 꼬리·스캘프는 진입 on/off만(150).
|
||||
구 `OPTUNA_OB_AXIS_TRIALS`(500)는 축 독립 탐색용 잔여 키 — 8방 경로에서는 안 씀.
|
||||
|
||||
| 키 | 널널 검사 기본 (2026-08-15) |
|
||||
|----|------------------------------|
|
||||
@@ -68,17 +70,46 @@ CLI: `--entry-mode align|limit_atr` · 순차 스크립트 `TAIL_OPTUNA_ENTRY_MO
|
||||
|
||||
## 4. 실매 DB 적용 분리
|
||||
|
||||
| 구분 | 차트 캔들 | 호가 후처리 숫자 |
|
||||
|------|-----------|------------------|
|
||||
| `--apply-best` (기본 미사용) | 차트 축 | 호가 합의 **자동 각인 아님** |
|
||||
| 웹 Optuna 「적용」 `upto` | 차트 + 선택 시 entry/exit/stop (`build_upto_env_patch`) | `upto=entry` 이상이면 호가 패치가 **들어갈 수 있음** |
|
||||
| 전용 스크립트 | — | `scripts/apply_optuna_ob_consensus.py --strategy MOMENTUM` |
|
||||
| 구분 | 차트 캔들 | 호가 후처리 |
|
||||
|------|-----------|-------------|
|
||||
| `--apply-best` (기본 미사용) | 차트 축 | 호가 자동 각인 아님 |
|
||||
| 웹 Optuna 「이 방 적용」 | 차트 + **8방 중 하나** (`build_combo_env_patch`) | 켠 축만 ON, 끈 축 ENABLED=false |
|
||||
| `whipsaw` | 차트 + **111방** + 휩쏘 | 휩쏘는 8방 밖 |
|
||||
| 구 upto `entry/exit/stop` | 별칭 → `e` / `ex` / `exs` | 하위호환만 |
|
||||
|
||||
후처리 **재실행만** 하면 JSON만 갱신. DB는 안 바뀜. 1일 best는 과적합 가능.
|
||||
**8방 ≠ 표 5열.** 8 = 진입×익절×손절(2³). 예전 UI의 「기본·진입·익절·손절·휩쏘」5열 누적은 레거시.
|
||||
후처리 **재실행만** 하면 JSON만 갱신. DB는 안 바뀜.
|
||||
|
||||
---
|
||||
|
||||
## 5. 웹 표기
|
||||
|
||||
`out_data["orderbook_recommend"]` · `postprocess_topn.postprocess_by_anchor`.
|
||||
진입 합의 예: `orderbook_max_spread_pct` / `orderbook_min_bid_ask_ratio` / `orderbook_entry_ask_max_mult`.
|
||||
`out_data["orderbook_recommend"]` · `postprocess_topn.postprocess_by_anchor` · `postprocess_consensus`.
|
||||
|
||||
### 5-1. 앵커별 8방 표
|
||||
각 Top5 「상세」 아래 **호가 8방** 표 + 방마다 「이 방 적용」. 휩쏘는 8방 밖 별도 행.
|
||||
|
||||
| 방 | 켜진 축 |
|
||||
|---|---|
|
||||
| 000 | 타점만(호가 OFF) |
|
||||
| 100 / 010 / 001 | 1축 |
|
||||
| 110 / 101 / 011 | 2축 스택 |
|
||||
| 111 | 진입+익절+손절 |
|
||||
|
||||
### 5-2. 합의(consensus) — 8방 기준 (2026-08-17~)
|
||||
상세 위 **`합의(gated+mode)`** 한 줄:
|
||||
- 사후합격 Top5 + mode_combo 앵커의 **8방 결과**만 모음 (stable·live 제외)
|
||||
- **median PnL이 가장 높은 방 1개** 선택 (동일 방 내 파라미터는 median)
|
||||
- 예: `호가 방: 011 익절+손절 · 5앵커 · PnL … · WR …`
|
||||
- 구 JSON(8방 없음)이면 축분리 median 폴백 + 「후처리 재실행 권장」
|
||||
|
||||
휩쏘·다단트레일 합의는 예전과 동일(median/최빈). **8방에 포함되지 않음.**
|
||||
|
||||
### 5-3. 레거시(정리·미삭제)
|
||||
| 항목 | 상태 |
|
||||
|------|------|
|
||||
| `OPTUNA_OB_AXIS_TRIALS`(500) | 8방 미사용 잔여키 |
|
||||
| `entry`/`exit`/`stop` JSON 중첩 | 구 JSON·apply 호환용 |
|
||||
| 모멘텀 `pattern_*`·시가컷 | 그리드/UI 잔여(실매 TRIGGER와 별축) |
|
||||
| `docs/layered_exit_design.md` | 옛 설계서 → `docs/호가.md` 참고 |
|
||||
| `remove/legacy_standalone_bots/` | 비활성 보관 |
|
||||
|
||||
Reference in New Issue
Block a user