Files
openclaw/agents/stock/workspace/memory/2026-05-07-ka10170-ottks-tp.md
T
hyowons fed3526b20 Initial commit: OpenClaw 워크스페이스 버전관리 시작
설정·스크립트·스킬·문서·큐레이션 메모리 추적.
시크릿(credentials/identity)·런타임 상태(state/logs/sessions/sqlite)·
백업(clobbered/bak)·dream 캐시는 .gitignore로 제외.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 15:39:41 +09:00

2.5 KiB

2026-05-07 ka10170 당일매매일지 ottks_tp 함정 — 보유분 매도 손익 0원 사고

레이가 "오늘 매매손익 0원"이라고 보고. 실제로는 ISA 계좌에서 5종목 매도해 +199,543원 실현손익 발생한 상태였음. 코디 작업으로 원인 추적·수정.

원인

scripts/kiwoom_client.py:get_trade_journal() 가 ka10170 호출 시 ottks_tp='1' 사용. 명세 정의:

의미
1 당일매수에 대한 당일매도 (round-trip만 — 당일 매수했다가 같은 날 매도한 경우)
2 당일매도 전체 (어제 이전 보유분의 당일 매도까지 포함)

코드 주석은 ottks_tp='1' (위탁) 으로 잘못 해석. "단주구분" 이라는 명세 라벨에서 추측한 것으로 보이지만 실제 의미는 round-trip 여부. 위탁/신탁 구분이 아님.

영향

  • 어제 이전부터 보유한 종목을 오늘 매도 → ka10170 응답의 pl_amt=0, tot_pl_amt=0
  • stock_portfolio_report.enrich_journal_realized_pl() 가 그 빈자리를 어제 스냅샷 avg_price로 추정 보강해 메일 카드에는 표시되었지만, 추정값이라 키움 ground truth(수수료·세금 정확 차감)와 미세 차이
  • 레이가 텔레그램에서 "당일 매매손익" 묻는 자연어 응답 → ka10170 직접 호출하면 0 반환 → 0원으로 답변

오늘 ISA 케이스 (ottks_tp=1 vs 2 비교):

종목 매도 수량 ottks_tp=1 pl_amt ottks_tp=2 pl_amt
아진산업 268 0 +144,931
KODEX 은선물(H) 1 0 -588
티엠씨 16 0 +45,220
KODEX 코스닥150레버리지 30 0 +9,980
합계 0 +199,543

수정

  • kiwoom_client.py:315ottks_tp='1''2'
  • 주석: "위탁" 잘못된 해석 제거, 명세 정의 기록
  • stock_portfolio_report.enrich_journal_realized_pl docstring 갱신 — 메인 경로에서 fallback 으로 격하 (ottks_tp=2면 평소 발동 안 함, 키움 응답 누락 시만 작동)

수정 후 검증:

  • ka10170 직접 호출: tot_pl_amt: 199543 (이전엔 0)
  • stock_portfolio_report.py run 메일에 당일 실현손익: +199,543원 (수수료·세금 3,719원) 정확히 표시
  • 회귀 테스트 136건 통과

미래의 자기에게 — ka10170 호출 규칙

  • ottks_tp='2' 무조건 사용. '1'은 round-trip 한정이라 일반적인 매매일지로는 부적절.
  • "단주구분" 라벨에 헷갈리지 말 것 — 의미는 round-trip 여부.
  • ottks_tp='1'로 회귀하는 PR이 들어오면 거부.