auto: 일일 백업 2026-09-23 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1295,7 +1295,7 @@ def _build_owner_data(positions_by_acc: dict, balances: dict, journal_by_label:
|
||||
nxt_inactive_set = set((prev_snap_all or {}).get('_nxt_inactive') or [])
|
||||
for r in consolidated:
|
||||
r['pred_close_krx'] = r.get('pred_close', 0)
|
||||
if r.get('code') in nxt_inactive_set:
|
||||
if r.get('code') in nxt_inactive_set or not _is_nxt_traded(r.get('code') or ''):
|
||||
r['_nxt_inactive'] = True
|
||||
# 개별 종목의 day_change/pred_close를 어제 NXT 종가 baseline으로 재계산.
|
||||
# kt00018 NXT 응답의 pred_close_pric가 KRX 종가로 채워져 raw day_change가 NXT-vs-KRX 갭으로
|
||||
@@ -1817,6 +1817,15 @@ def _fetch_all_data(entries: list[dict], only_owner: str | None = None) -> dict:
|
||||
'price': qa.get('price', 0), 'change_pct': qa.get('change_pct', 0.0),
|
||||
'change': qa.get('change', 0), 'volume': qa.get('volume', 0),
|
||||
}
|
||||
# NXT 미거래 종목은 통합(AL)과 KRX가 같은 시장값이어야 한다. 전날 NXT
|
||||
# 스냅샷이 stale 하더라도 KRX 배치시세의 전일종가로 화면 기준을 즉시 교정한다.
|
||||
if r.get('_nxt_inactive') and qk_valid:
|
||||
krx_prev = (qk.get('price', 0) or 0) - (qk.get('change', 0) or 0)
|
||||
if krx_prev > 0:
|
||||
r['pred_close_snap'] = krx_prev
|
||||
r['pred_close'] = krx_prev
|
||||
r['day_change'] = qk.get('change', 0) or 0
|
||||
r['day_change_pct'] = qk.get('change_pct', 0.0) or 0.0
|
||||
# 단일 캔들 primary — 4값(open/high/low/price) 모두 있는 응답만 후보. 거래 없는 시간대 0값 응답 배제.
|
||||
# 통합(AL) 우선 — 시간대에 따라 캔들이 뒤바뀌지 않고 하루 한 개로 유지된다.
|
||||
# NXT 미거래 종목은 AL == KRX 라 결과가 같다. AL 이 불완전할 때만 KRX 로 폴백.
|
||||
@@ -3052,7 +3061,7 @@ def _render_row(c: dict, source: str = 'watchlist') -> str:
|
||||
if pc > 0:
|
||||
pred_close_krx = pc
|
||||
# NXT 미상장 종목은 baseline 무효화 → NXT 컬럼 `-` placeholder.
|
||||
if c.get('_nxt_inactive'):
|
||||
if c.get('_nxt_inactive') or not _is_nxt_traded(c.get('code') or ''):
|
||||
pred_close_nxt = 0
|
||||
else:
|
||||
nxt_ref = c.get('_pred_close_nxt')
|
||||
|
||||
Reference in New Issue
Block a user