Files
trex-core/docs/discovery/dcy-021_20260610_position-sizing-target-intent.md
T
genichinandClaude Opus 4.8 5ee5f7f4e2 docs(srs/batch): dcy-021 REQ + BAT-031 + Implemented 전환
- draft-req: REQ-066(사이징 도메인·end-to-end), REQ-067(baseline 정합) 신규
- change-req: REQ-057(CHG-03 holding→pending_buy)·REQ-061(CHG-04 사이징 intent)·
  REQ-062(CHG-03 부분 매도 min(주문,잔고)) — Implemented→Approved 후 재구현
- confirm-req: REQ-066/067 Approved
- BAT-031 batch(index/planning/design D1~D4/implementation/verification) → release-candidate
- confirm-batch-verification 승인 + confirm-req-implemented:
  REQ-057/061/062/066/067 → Implemented (BAT-031 verification 근거)
- srs/batch index + dcy-021 discovery 생성 REQ 역참조 갱신

(issue #21 dcy-022 는 별도 작업으로 미포함)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 18:53:53 +09:00

24 KiB

0. 문서 상태

이 문서의 현재 상태와 식별 정보를 기록한다. 문서 추적과 승인 흐름에 필요한 최소 메타데이터를 적는다.

  • 상태: confirmed
  • 문서 ID: dcy-021_20260610_position-sizing-target-intent
  • 이슈명: 포지션 사이징 — 활성 자산 슬롯 보유 수량 변경(HOLDING→HOLDING)·부분 매도·선언형 target intent (issue #1, dcy-020 OQ-4 후속)
  • 작성 시각(KST): 2026-06-10 17:06 KST
  • 마지막 갱신 시각(KST): 2026-06-10 17:46 KST (draft-req: REQ-066·067 생성 + change-req REQ-057/061/062 예정)
  • 대체됨: 없음
  • 후속 Discovery 참조: 없음
  • 생성된 REQ 참조: REQ-066, REQ-067 (+ change-req REQ-057/061/062)

1. 계획 상태 요약

현재 Discovery가 어떤 배경에서 작성되고 있는지, 연계 문서가 있는지, 지금 시점의 해석이 무엇인지 짧게 요약한다.

  • 연계 문서 현황:
    • 관련 점수 파일: 미생성
    • 관련 TODO/메모: GitHub issue #1(포지션 사이징/선언형 target intent). dcy-020(자산 중심 영구 슬롯 — 본 주기의 직접 토대, OQ-4 에서 분리), dcy-013(부분 체결 후 외부 취소 — 부분 수량/잔량 처리 선례), REQ-062(청산 수량 브로커 정본·수량 hub 정본+미러), REQ-057(상태머신).
  • 해석:
    • dcy-020 이 자산 중심 영구 슬롯 substrate 를 완성하면서 "수량 가변 전제는 모델에 남김 / 활성=진입·종료=전량 청산 경계는 고정"으로 OQ-4(포지션 사이징)를 명시 분리했다. 본 Discovery 는 그 토대 위에 보유 중 수량 조정(증액·부분 감액)과 선언형 target intent 를 얹는 후속 주기다.
    • 핵심 판단: HOLDING 상태에서 같은 자산 슬롯의 수량을 바꾸는 상태머신·집행·intent 계약을 정의한다. 계약 형태는 명령형으로 확정(OQ-1, 2026-06-10): 전략이 스냅샷의 cash+quantity 로 사이징을 계산해 qty+price 를 실은 매수(증액)/부분 매도 intent 를 보내고, core 는 실행 substrate(단일 writer·멱등·브로커 세션·슬롯 상태)에 집중한다. core 는 "의도 수량"을 저장/추적하지 않으며, 드리프트 재수렴은 전략이 스냅샷으로 수행한다. 남은 판단은 단위(OQ-2)·avg_price 가중평균 세부(OQ-3)다.

2. 요구사항 판정 결과

이번 요청이 기존 요구사항과 비교해 신규인지, 유사한지, 중복인지 판단하고 그 근거를 남긴다.

  • 판정: 신규
  • 근거
    • dcy-020 은 OQ-4/issue #1 을 "별도 후속 Discovery"로 명시 분리했고 본 주기와 문제 정의(보유 수량 가변)·성공 기준이 다르다 — dcy-020 갱신이 아니라 신규 주기다.
    • 본 변경은 dcy-020 이 고정한 상태머신 경계("종료=전량 청산", HOLDING→HOLDING 미포함)를 해제하므로 dcy-020 의 설계 전제를 확장하는 독립 주기로 추적해야 책임 경계가 명확하다.

3. 문제점의 요약

문제의 현재 상태, 기대 상태, 관련 이해관계자, 제약사항을 정리한다. Discovery의 핵심 맥락을 가장 먼저 이해할 수 있어야 한다.

  • 현재 상태
    • trex_core/domain/slot/state.py 의 상태머신은 이산적이다: inactive → pending_buy → holding → pending_sell → inactive(+error). HOLDING→HOLDING(수량 변경) 전이가 없고, 매도는 전량 청산(pending_sell→inactive)만 의도적으로 표현된다. 부분 수량 잔량 처리는 execution.py 의 외부 취소 경로(dcy-013, _on_partial_cancel: pending_sell→holding + qty 차감)에만 존재하며 이는 반응적 처리이지 의도적 부분 매도 intent 가 아니다.
    • application/intents.py 의 BuyIntent 는 inactive 슬롯을 활성화(qty 지정)할 뿐, 이미 holding 인 슬롯의 수량을 늘리는(증액) 경로가 없다. SellIntent 는 전량 청산만 한다(부분 수량 인자 없음).
    • 수량 정본은 브로커 잔고(REQ-062, BrokerPort.get_balance().hldg_qty)이고 슬롯 qty 는 미러다. avg_price 는 매수 체결 시 1회 설정되고 증액 시 가중평균 재계산 경로가 없다.
    • dcy-020 가 "수량 가변 전제"를 모델에 남겨 둔 토대(영구 슬롯·자산 1:1)는 이미 존재한다 — substrate 재작성은 불필요하다.
  • 기대 상태
    • 보유 중인 자산 슬롯이 holding 을 유지한 채 목표 수량으로 증액(추가 매수)·부분 감액(부분 매도) 될 수 있다. 전량 청산만 inactive 로 종료한다.
    • 전략 모듈이 자산의 목표 포지션을 선언(target) 하거나 증감을 지시하면, core 가 현재 보유(브로커 정본)와 비교해 필요한 매수/매도 수량을 도출·집행한다. avg_price 는 증액 시 가중평균으로 재계산되고 부분 매도 시 cost basis 가 유지된다.
  • 이해관계자
    • 전략 모듈(trex-orb) 개발자 — target/사이징 intent 를 발행하는 주체
    • trex-core 유지보수자 — 상태머신·집행·intent 계약 확장 구현
    • 운영자 — 슬롯의 수량 변화·부분 매도를 trex-core slots/이벤트로 관측
  • 제약사항
    • 집행 매도 수량은 브로커 잔고 정본(REQ-062)을 유지해야 한다 — 부분 매도도 과매도/이중 주문이 없어야 한다.
    • dcy-020 의 자산 1:1 영구 슬롯·M(동시 활성 자산 수) 캡·instance 스코프 불변식을 깨지 않는 additive 확장이어야 한다.
    • 단일 writer(SlotService advisory lock)·intent 멱등(intent_log) 불변식 유지.

주요 사용자 시나리오

사용자 또는 운영자가 실제로 어떤 상황에서 이 변경을 필요로 하는지 대표 시나리오를 적는다.

  • 전략이 자산 A 를 100주 보유 중인데 신호 강화로 목표를 150주로 올린다 → 같은 슬롯이 holding 을 유지하며 50주 추가 매수, avg_price 가중평균 재계산.
  • 전략이 자산 A 목표를 100→40주로 낮춘다 → 같은 슬롯이 60주 부분 매도 후 holding(잔량 40) 유지, cost basis 유지. 목표 0 이면 전량 청산 → inactive.
  • 운영자가 trex-core slots --symbol … 로 부분 매도 진행/잔량을 관측하고, 부분 체결 이벤트를 전략이 수신해 목표 대비 현재를 재조정.

4. 이번에 정의할 변경

이번 Discovery에서 다루는 핵심 변경 항목을 목록으로 적는다. 기능, 구조, 규칙 변경을 함께 포함해도 된다.

  • 보유 자산 슬롯의 수량 조정 상태 전이 도입: 증액(HOLDING→PENDING_BUY→HOLDING, qty 누적·avg_price 가중평균)과 부분 감액(HOLDING→PENDING_SELL→HOLDING 잔량>0 / →INACTIVE 전량)을 의도적 intent 경로로 표현한다.
  • 포지션 사이징 intent 계약(명령형, OQ-1 확정): 전략이 cash+quantity(스냅샷)로 계산한 qty+price 를 실은 매수(증액)/부분 매도 intent 를 보내면 core 가 단일 writer·멱등(intent_log) 하에 실행한다. core 는 target/의도 수량을 저장·추적하지 않는다(미체결 잔량 무추적). 집행 매도 수량은 min(intent qty, 브로커 잔고)(과매도 방지), intent 가 잔고 이상이면 전량 매도.
  • baseline 문서 갱신: docs/data-model.md(슬롯 수량 가변·avg_price 재계산 규칙), docs/runtime-flows.md(사이징 intent→reconcile→집행 흐름, 상태머신 전이 확장), docs/interface-contract.md(사이징 intent payload·이벤트), docs/project-structure.md(영향 모듈) 를 실제 구현과 일치시킨다.

영향 범위

변경이 미칠 코드/문서/운영 범위를 명시해 REQ 정제와 batch planning에서 추정 누락을 줄인다.

  • 코드 영향:
    • trex_core/domain/slot/state.py: HOLDING→PENDING_BUY(증액) 전이 추가, 부분 매도 후 HOLDING 복귀(기존 pending_sell→holding 재사용) 의미 정립.
    • trex_core/domain/slot/service.py: 증액 시 qty 누적 + avg_price 가중평균 재계산, 부분 매도 시 잔량 계산·cost basis 유지 필드 규칙.
    • trex_core/application/intents.py: 사이징/target intent(증액·부분 감액) admission 경로 + 멱등.
    • trex_core/application/execution.py: 증액 매수 dispatch, 부분 매도 수량(브로커 정본 기반) dispatch — dcy-013 _on_partial_cancel/REQ-062 와 정합.
    • trex_core/application/messaging_handlers.py: 사이징 intent payload 파싱 + 이벤트.
  • 문서 영향:
    • docs/data-model.md, docs/runtime-flows.md, docs/interface-contract.md, docs/project-structure.md 갱신.
  • 운영 영향:
    • 전략 모듈(trex-orb)이 새 사이징 intent 를 발행하도록 계약 전환 필요(점진/하위호환 검토).
    • 부분 매도·증액 주문이 늘어 KIS 주문 빈도·체결 모니터링 영향.

5. 요구사항 목록

실제로 구현과 검증으로 이어질 요구사항을 기능/비기능으로 나누어 정리하고, 범위 경계를 명확히 적는다.

기능 요구사항

  • FR-1: 보유(holding) 자산 슬롯의 수량 증액을 지원한다. 전략이 qty+price 를 실은 매수 intent 를 보내면 같은 슬롯이 HOLDING→PENDING_BUY→HOLDING 로 순환하며 실제 체결분만큼 보유 수량이 누적되고, avg_price 는 (기존수량×기존평단 + 체결수량×체결가)/총수량 가중평균으로 재계산된다. 부분 체결 시 실제 체결분만 반영·ledger 기록하고 미체결 잔량은 추적하지 않는다(재수렴은 전략). 활성 자산 수(M 캡 대상)는 증가하지 않는다.
  • FR-2: 보유 자산 슬롯의 **부분 감액(부분 매도)**을 지원한다. 전략이 qty+price 를 실은 (부분)매도 intent 를 보내면 같은 슬롯이 HOLDING→PENDING_SELL 로 전이한다. 집행 매도 수량 = min(intent qty, 브로커 hldg_qty)(REQ-062 과매도 방지); intent 가 잔고 이상이면 전량 매도. 체결 후 슬롯은 브로커 정본 수량을 반영해 잔량>0 이면 HOLDING(cost basis 유지), 0이면 INACTIVE 로 종료한다. 부분 체결 시 실제 체결분만 ledger 기록(REQ-018/019), 미체결 잔량은 core 가 추적·재시도하지 않고, 더 줄이려면 전략이 다음 스냅샷 기준으로 재발행한다(dcy-013 부분 체결 처리 재사용).
  • FR-3: 포지션 사이징 intent 계약 = 명령형(OQ-1 확정). 전략이 스냅샷의 cash·asset_quantity(REQ-028/029, option D)로 사이징을 계산해 qty+price 를 실은 매수(증액)/부분 매도 intent 를 발행하고, core 는 단일 writer·멱등(intent_log) 하에 실행만 한다. wire 계약 단위 = 정수 주식 수(qty) + 가격(price)(OQ-2 확정); 비중(weight)/금액(capital) 사이징의 주식 수 환산과 반올림·lot 처리는 전략 책임(core 는 정수 qty 를 그대로 집행, 현재가·cash 환산 로직 없음). core 는 target/의도 수량을 저장·diff·추적하지 않으며(reconcile-on-intent 없음), 실현손익은 ledger/portfolio-hub 가 소유한다(core 는 실제 체결만 원장 기록). 드리프트·유실 복구는 전략이 스냅샷(현재 수량 = 브로커 정본 표면화)으로 재수렴한다. 기존 buy/sell intent 와 병존하는 additive 확장이다.
  • FR-4: baseline 문서(docs/data-model.md, docs/runtime-flows.md, docs/interface-contract.md, docs/project-structure.md)를 수량 가변 슬롯·사이징 흐름·상태머신 전이 확장·intent/이벤트 계약에 맞게 갱신한다.

비기능 요구사항

성능, 운영성, 일관성, 자동화 안정성 등 기능 외 요구사항을 적는다.

  • NFR-1: 부분 매도·증액은 dcy-020/REQ-062 의 "수량=브로커 정본, 슬롯=미러" 불변식과 단일 writer·집행 멱등을 유지한다 — 과매도·이중 주문·avg_price drift 가 없어야 한다.
  • NFR-2: 상태머신·intent·집행 변경은 dcy-020 자산 중심 모델에 대한 additive 확장이어야 한다(기존 활성/청산/admission 경로 무회귀). 기존 전 단위 회귀 green 유지.
  • NFR-3: 사이징 intent 는 멱등(intent_id) + 이벤트로 부분 체결/증액 결과를 전략에 last-wins 로 전달해, 전략이 목표 대비 현재를 재수렴할 수 있어야 한다.

범위 경계

이번 반복에서 반드시 포함할 범위와 명시적으로 제외할 범위를 구분한다.

  • In Scope
    • 보유 자산 슬롯의 증액·부분 감액 상태 전이·집행·avg_price 재계산
    • 포지션 사이징/target intent 계약(형태는 OQ-1 확정) + 멱등 + 이벤트
    • 관련 baseline 4문서 갱신
  • Out of Scope
    • 능동 capacity 배분(M 슬롯을 어떤 자산에 줄지 core 가 최적 선택) — dcy-020 FR-2 에서 분리된 별개 주제, 본 주기는 "이미 보유한 자산의 수량 조정"에 한정(2026-06-10 확정)
    • 자동 리밸런싱 스케줄러(주기적 목표 재산정) — 전략 모듈 책임
    • 비중(weight)/금액(capital)→주식 수 환산·반올림·lot 처리 (OQ-2 확정: 전략 책임, core 범위 밖 — wire 는 정수 주식 수+가격)

6. 리스크/가정 목록

불확실성과 전제 조건을 분리해서 적는다. 리스크는 영향과 완화 방안을, 가정은 현재 판단의 전제를 기록한다.

리스크

  • R-1 (High): 집행 핫패스 변경(부분 매도·증액 주문)으로 과매도·이중 주문·avg_price 오류 위험. 라이브 주문 동작.
    • 완화 방안: 매도 수량 브로커 정본(REQ-062) 재사용, 멱등(intent_log)+dispatch 가드, dcy-013 부분 체결 처리와 정합, 단위+paper 리허설+run-the-app 검증.
  • R-2 (High): dcy-020 이 고정한 상태머신 경계("종료=전량 청산", HOLDING→HOLDING 미포함) 해제로 기존 불변식·테스트가 흔들릴 위험.
    • 완화 방안: 전이는 additive 추가(기존 전이 보존), 5→확장 상태머신 회귀 가드, ALLOWED_TRANSITIONS 명세 테스트 갱신.
  • R-3 (Medium): 전략 모듈(trex-orb) 동시 계약 변경 필요 — 미전환 전략과의 호환.
    • 완화 방안: 기존 전량 매수/매도 intent 와 병존(additive), 사이징 intent 는 신규 경로로 도입해 점진 전환.

가정

아직 확정되지 않았지만 현재 문서 작성의 기반이 되는 전제를 적는다.

  • A-1: dcy-020 자산 중심 영구 슬롯(자산 1:1·수량 가변 전제 유지)이 토대이므로 substrate 재작성 없이 additive 확장으로 충분하다.
  • A-2: 보유 수량 정본은 브로커 잔고(REQ-062)이고 슬롯 qty 는 미러다 — 사이징도 이 정본/미러 분리를 그대로 따른다.
  • A-3: M 캡은 동시 활성 자산 수 제어이므로, 이미 활성인 자산의 증액은 active 수를 늘리지 않아 M 캡과 무관하다.

오픈 질문

답을 아직 모르는 항목을 적는다. 추정으로 덮지 말고 REQ 초안 작성 이전에 확인할 질문으로 남긴다.

  • OQ-1: 사이징 intent 계약 형태 — 선언형 target vs 명령형 delta vs 혼합.
    • 상태: Answered (2026-06-10, 사용자 결정)
    • 결정: 명령형 — 전략이 스냅샷의 cash+quantity 로 사이징(qty+price)을 계산해 매수(증액)/부분 매도 intent 를 보내고, core 는 실행 substrate(target/의도 수량 미저장·미추적). 근거: ① 멱등성은 intent_log dedup 이 이미 수량 레벨로 보장(REQ-007/023), ② 주문에 가격(지정가)이 따라가야 함(dcy-012), ③ cash 정본은 portfolio-hub 라 사이징 계산은 전략 책임(관심사 분리), ④ 기존 명령형 buy/sell 계약의 최소 additive 확장. 부수 결정: 과매도→min(intent,잔고)·이상이면 전량(FR-2), 부분 체결→실제 체결만 ledger·미추적·전략 재수렴(FR-1/FR-2). 반영: FR-1/FR-2/FR-3, §4.
    • 종료 조건: 충족(FR-3 계약 형태 확정).
  • OQ-2: 사이징 단위 — 절대 수량 vs 비중 vs 금액 + 환산 책임.
    • 상태: Answered (2026-06-10, 사용자 결정)
    • 결정: wire 단위 = 정수 주식 수(qty) + 가격(price). 비중/금액→주식 수 환산·반올림·lot 처리는 전략 책임(core 는 정수 qty 를 그대로 집행). 근거: ① OQ-1 명령형·기존 buy/sell·KIS 주문이 모두 주식 수+가격이라 새 단위 불필요(최소 additive), ② 환산에 필요한 cash(정본=portfolio-hub)·주문 가격을 전략이 이미 쥐고 있어 환산-주문 가격 일관, ③ 시장 미시구조(lot/호가) 규칙을 core 에서 배제. 주의: 스냅샷 cash 는 미정산 시 추정값(cash_estimated, dcy-018)일 수 있어 금액/비중 사이징 오차창은 전략이 감안. 반영: FR-3, §5 Out of Scope, §10 DATA.
    • 종료 조건: 충족(정본 단위·환산 책임 확정).
  • OQ-3: avg_price 재계산·cost basis 정책.
    • 상태: Answered (2026-06-10, 사용자 결정)
    • 결정: 증액 시 avg_price = (기존수량×기존평단 + 체결수량×체결가)/총수량 가중평균(FR-1). 부분 체결 시 실제 체결분만 누적(미체결 무시)이라 자연 정합. 부분 매도 후 잔량 avg_price 는 변경 없음(cost basis 유지, dcy-013 일관). 집행 매도 수량 = min(intent,잔고)(과매도 방지), 실현손익은 ledger/portfolio-hub 소유(core 미계산, 실제 체결만 원장 기록). 반영: FR-1/FR-2/FR-3.
    • 종료 조건: 충족(avg_price·cost basis·실현손익 규칙 확정).
  • OQ-4: 사이징 reconcile 주기·트리거.
    • 상태: Answered (2026-06-10, 사용자 결정)
    • 결정: intent 수신 시 1회 집행. OQ-1 명령형 확정으로 core 는 target 을 저장하거나 주기적으로 reconcile 하지 않는다(reconcile-on-intent 없음). 드리프트·유실 재수렴은 전략이 스냅샷(현재 수량=브로커 정본)으로 수행하고, 자동 리밸런싱 스케줄러는 Out of Scope(전략 책임). 반영: FR-3, §5 Out of Scope.
    • 종료 조건: 충족(트리거 모델 In/Out of Scope 확정).

오픈 질문 처리 기준

  • Open: 아직 답이 없고 다음 단계 진행에 영향이 있는 상태다. 문서에 유지한다.
  • Answered: 답이 확정된 상태다. 관련 본문/요구사항에 반영한 뒤 오픈 질문 목록에서는 제거하거나 resolved 기록으로 이동한다.
  • Deferred: 지금 단계에서 결정하지 않고 다음 단계 또는 후속 이슈로 넘기는 상태다. 넘길 대상과 이유를 반드시 적는다.
  • Dropped: 더 이상 유효하지 않은 질문이다. 삭제 사유를 짧게 남기고 목록에서 제거한다.
  • 처리 원칙 1: 질문만 남기지 말고 반드시 상태, 처리 방안, 종료 조건을 함께 적는다.
  • 처리 원칙 2: 답이 나온 질문은 본문 반영 없이 단순 삭제하지 않는다. 반영 위치를 먼저 갱신한다.
  • 처리 원칙 3: High 영향 질문은 Deferred 처리 후 처리 방안에 REQ 인계 추적 방식을 명시한다.

7. 초기 성공 기준

이 변경이 성공했다고 판단할 기준을 측정 가능하게 정의한다. 가능하면 데이터 출처까지 연결한다.

  • S-1: 보유 자산의 목표 상향 시 같은 슬롯이 holding 을 유지하며 추가 매수로 수량이 증가하고 avg_price 가 가중평균으로 재계산된다.
  • S-2: 목표 하향 시 같은 슬롯이 부분 매도 후 holding(잔량>0, cost basis 유지) 또는 전량 시 inactive 로 종료되며, 집행 매도 수량이 브로커 잔고 정본과 일치한다(과매도 0).
  • S-3: 사이징 변경 전·후 dcy-020 기존 경로(활성/청산/admission/M 캡/instance 스코프) 회귀가 없고, baseline 4문서가 구현과 일치한다.

측정 방식 및 데이터 출처

각 성공 기준을 어떻게 측정할지와 어떤 데이터나 문서를 근거로 쓸지 적는다.

  • S-1 측정 방식: 단위 테스트(증액 전이·avg_price 가중평균) + run-the-app(증액 intent→holding qty 증가) / 데이터 출처: tests/, daily_slot, slot_transition_log
  • S-2 측정 방식: 단위+PG 테스트(부분 매도 잔량/전량 분기) + paper 집행 매도 수량==브로커 잔고 검증 / 데이터 출처: tests/, BrokerPort.get_balance, ledger_outbox
  • S-3 측정 방식: 전 단위 회귀 green + ruff + baseline 문서 diff 리뷰 / 데이터 출처: pytest, docs/*.md

8. REQ로 넘기기 전 확인 체크

REQ 초안 작성 단계로 넘기기 전에 무엇이 확정되어야 하는지 확인한다. 미완료 항목은 후속 결정이 필요함을 뜻한다.

  • 범위(In Scope/Out of Scope) 확정 — capacity 배분 Out of Scope·단위(OQ-2) 확정으로 In/Out 갈림 없음
  • 성공 지표의 측정 방식/데이터 출처 확정 — S-1~S-3 모두 기존 pytest·PG·run-the-app 경로로 측정 가능(§7)
  • High 영향 리스크 검증 방식 확정(R-1 집행=브로커 정본+멱등+리허설, R-2 상태머신=additive+회귀 가드, §6) — 해소 책임자 지정은 REQ/batch planning 단계로 위임(비차단)
  • 모든 오픈 질문(OQ) Open 상태 없음 확인 — OQ-1~4 전부 Answered (2026-06-10)
    • 기준: OQ 목록에 Open 상태 항목이 0개이거나, 잔여 항목 전부 Deferred 처리 완료
  • Freeze 확정 담당자(Confirmed By) 지정 — Justin Ko (§11)

9. 파일 처리 결과

이 Discovery 문서 생성/갱신 결과와 참조 문서를 기록한다. 이후 추적과 리뷰 시 근거로 사용한다.

  • 처리 결과: 생성
  • 생성 경로: docs/discovery/dcy-021_20260610_position-sizing-target-intent.md
  • 참조 문서:
    • docs/discovery/dcy-020_20260610_asset-centric-slot-model.md (토대·OQ-4 분리 출처)
    • docs/discovery/dcy-013_20260608_kis-external-cancel-pending-sell-stuck.md (부분 체결/잔량 처리 선례)
    • stage-pilot/templates/project-structure.md, stage-pilot/templates/runtime-flows.md (baseline 갱신 논리 템플릿 참조)

10. 사용자 결정 필요 항목 요약

사용자나 승인자가 결정해야 하는 항목만 모아 정리한다. 결정, 확인, 데이터 요청을 구분해서 적는다.

DECIDE

  • (해소) 사이징 단위 = 정수 주식 수+가격, 환산은 전략 책임 — OQ-2 확정, FR-3/§5 반영.
  • (해소) 능동 capacity 배분(M 슬롯 자산 선택)은 Out of Scope — dcy-020 FR-2 에서 분리된 별개 주제, 본 주기는 "이미 보유한 자산의 수량 조정"에 한정. §5 Out of Scope 반영.
  • (해소) 사이징 reconcile 트리거 = intent 당 1회(core 스케줄 없음) — OQ-4 확정, FR-3/§5 반영.

CONFIRM

  • (해소) avg_price 정책 = 증액 가중평균 + 부분 매도 cost basis 유지 + 실현손익 ledger/hub 소유 — OQ-3 확정, FR-1/FR-2/FR-3 반영.
  • (해소) trex-orb 사이징 intent 전환 = 기존 buy/sell 와 병존(additive·점진 전환) — OQ-1 확정, FR-3/R-3 반영.

DATA

  • (해소) 전략 신호 표현 방식(목표/증감/비중)은 OQ-1/2 확정으로 core 범위 밖 — wire 는 항상 정수 주식 수+가격이라 core 는 전략 내부 단위를 알 필요 없음. trex-orb 측 환산 구현은 trex-orb Discovery 에서 다룸.

참고: 미체결 pending 고착 처분·운영자 강제 취소(issue #21)는 본 주기와 다른 문제(PENDING 처분/안전 통제)로 별도 Discovery 후보다 — dcy-021 범위 밖.

11. Discovery Freeze

REQ 초안 작성 인계 시점의 확정 플래그와 섹션 참조만 기록한다. 내용 재작성 없이 원본 섹션을 링크로 대신한다.

섹션 참조

Freeze 플래그

  • Handoff Decision: 승인
  • Handoff Rationale: OQ-1(명령형 계약)·OQ-2(정수 주식 수+가격, 환산 전략)·OQ-3(avg_price 가중평균·cost basis·실현손익 hub)·OQ-4(intent 당 1회, 스케줄 없음) 전부 Answered 로 핵심 결정 확정. capacity 배분 경계(Out of Scope)·단위·avg_price·트리거 전부 확정. confirm-discovery 승인 완료(Justin Ko).
  • Ready for REQ Drafting: true
  • Confirmed By: Justin Ko
  • Confirmed At (KST): 2026-06-10 17:39 KST