Skip to content

feat: 자본 슬롯 시뮬레이터 — 자본 결정을 실시간 시세로 지원 - #435

Merged
easygap merged 1 commit into
mainfrom
feat/capital-simulator
Jul 6, 2026
Merged

feat: 자본 슬롯 시뮬레이터 — 자본 결정을 실시간 시세로 지원#435
easygap merged 1 commit into
mainfrom
feat/capital-simulator

Conversation

@easygap

@easygap easygap commented Jul 6, 2026

Copy link
Copy Markdown
Owner

무엇

대기 중인 유일한 오너 결정(자본, #422 A안)을 돕는 읽기 전용 시뮬레이터와, 재시작 절차의 함정 두 가지를 문서에 반영합니다.

  1. 문서 §3의 자본별 표는 작성 시점(7/2, 하이닉스 242.4만) 시세 고정입니다. 7/6 시세(232.2만)로 재계산하니 32M이 34M보다 우수(배치율 77.4% vs 74.5%)로 뒤집혔습니다 — 정수 절사의 톱니 효과 때문에 최적 자본은 시세와 함께 움직입니다. 고정 숫자 대신 결정 시점에 도구로 재계산해야 합니다.
  2. 6/10 진입 타이밍 비용(-1%p)의 원인을 재분석한 결과, 그날 사이클이 4회 수동 실행돼 하루에 61%를 몰아 산 것이 원인이었습니다. 정상 자동화(1일 1사이클)는 회전 상한(15%/일)이 초기 매입을 5~6거래일에 자연 분할합니다 → P2-9(분할 진입 기능)는 코드 불필요로 종결하고, 재시작 절차에 "하루 여러 번 돌리지 말 것"을 명시했습니다.

무엇을 했나

  • tools/capital_slot_simulator.py (신규, 읽기 전용 — 주문·DB 변경 없음)
    • 순수 함수 simulate_slot_fills: 자본×실효비중으로 슬롯 금액 → 정수 주수 → 채움율/미체결(1주 초과·최소거래 미달) 판정. 가격 조회 불가는 미체결과 분리 표기(오표기 방지).
    • 시세는 실제 사이클과 동일 소스(BasketRebalancer._fetch_current_prices) 재사용.
    • 기본 스윕(10/30/32/34/40/62M) 또는 --capital 단일 상세.
  • docs/PAPER_MONTH1_REVIEW_AND_PLAN.md §3: "자본 숫자는 결정 시점에 재계산" 절 추가(선택 기준: 미체결 0 + 배치율 -5%p 이내 + 하이닉스 채움 ≤92% 여유를 만족하는 최소 자본), 재시작일 다중 실행 금지 노트, P2-9 종결, 치트시트에 도구 추가, 재시작 전제조건(P0-1+크론) 충족 기록.

실측 스모크(7/6 시세):

자본 10,000,000 — 배치율 58.0% · 미체결 1개(하이닉스 1주 2,322,000 > 슬롯 800,000)  ← 현재 상태 재현
자본 32,000,000 — 배치율 77.4% (-2.6%p) · 미체결 0개 · 하이닉스 채움 90.7%
자본 34,000,000 — 배치율 74.5% (-5.5%p) · 미체결 0개 · 하이닉스 채움 85.4%

(도구가 현재 10M 상태의 미체결·배치율을 정확히 재현하는 것으로 검산)

테스트

  • tests/test_capital_slot_simulator.py — 채움/미체결(1주 초과·최소거래)·가격불명 분리·비중 재정규화·월1 하이닉스 실측 재현 8케이스.
  • pytest tests/ 전체 통과.

대기 중인 자본 결정(#422 A안)의 근거 표가 작성 시점 시세에 고정돼 있어
낡는 문제를 해결한다. 실제로 7/2 기준 34M 권고가 7/6 시세(하이닉스
242.4만→232.2만)로는 32M이 우수(배치율 77.4% vs 74.5%)로 뒤집혔다 —
정수 절사 톱니 효과 때문에 최적 자본은 시세와 함께 움직인다.

tools/capital_slot_simulator.py (읽기 전용 — 주문·DB 변경 없음):
- simulate_slot_fills(순수): 자본×실효비중 슬롯 → 정수 주수 → 채움율,
  미체결(1주 초과·최소거래 미달) 판정. 가격 조회 불가는 별도 표기.
- 시세는 실제 사이클과 동일 소스(BasketRebalancer 시세 경로) 재사용.
- 기본 스윕(10~62M) 또는 --capital 단일 상세. 현재 10M 상태의
  미체결·배치율(58%)을 정확히 재현하는 것으로 검산.

문서 §3 갱신:
- 자본 숫자는 결정 시점에 시뮬레이터로 재계산하는 절 + 선택 기준
  (미체결 0 · 배치율 -5%p 이내 · 하이닉스 채움 92% 이하 여유를
  만족하는 최소 자본)
- 재시작일 다중 실행 금지: 6/10 타이밍 비용(-1%p)은 그날 사이클 4회
  수동 실행으로 하루 61% 집중 매입한 것이 원인 — 정상 자동화는 회전
  상한(15%/일)이 초기 매입을 자연 분할하므로 P2-9(분할 진입)는
  코드 불필요로 종결
- 재시작 전제조건(P0-1 머지 + 재시도 크론) 충족 기록

전체 스위트 1604 통과.
@easygap
easygap merged commit 1c9bb59 into main Jul 6, 2026
1 check passed
@easygap
easygap deleted the feat/capital-simulator branch July 6, 2026 02:36
easygap added a commit that referenced this pull request Jul 6, 2026
feat: 자본 슬롯 시뮬레이터 — 자본 결정을 실시간 시세로 지원
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant