5dfb8f3e12
Reorganize documentation following AGENTS.md v16.0 governance (traceability, reproducibility): Structure changes: - CURRENT/ (new) ├─ 00~08.md (v16.0 standards, renamed for clarity) └─ CATALOGS/ (9 CSV files: WBS, decision log, debt register, matrices, catalogs) - LEGACY/ (new, read-only archives) ├─ v11/ (original baseline + hardening analysis) ├─ v12~v15/ (.gitkeep + README for future archiving) - DECISIONS/ (new, ready for ADR usage) - TEMPLATES/ (existing, unchanged) Deletions (consolidated into CURRENT/): - v16_0/ folder (files migrated) - hardening/ folder (contents → LEGACY/v11/) - Root-level v11 files (00~07.md, CSV) Renames (for clarity): - 00_EXECUTIVE_REFERENCE_IMPLEMENTATION.md → 00_EXECUTIVE.md - 01_BRUTAL_ROLE_AUDIT.md → 01_ROLE_AUDIT.md - 02_FRONTEND_ADAPTER_CRUD_STANDARD.md → 02_FE_ADAPTER.md - 03_BACKEND_DATA_SCHEDULER_STANDARD.md → 03_BE_DATA.md - 04_ALGORITHM_MODEL_GOVERNANCE.md → 04_ALGORITHM.md - 05_PROCESS_VIBE_DEBT_CONTROL.md → 05_PROCESS_VIBE_DEBT.md - 06_VALIDATION_TRUTH.md → 06_VALIDATION.md - 07_PACKAGE_ATTACHMENT_POLICY.md → 07_PACKAGE_POLICY.md Updates: - docs/INDEX.md (complete rewrite with navigation) - LEGACY/ folders with README + .gitkeep Benefits: ✅ Clear version management (v16.0 is active, v11~v15 read-only) ✅ No version mixing in root ✅ CURRENT/ as single point of reference for active docs ✅ CATALOGS/ consolidates all data matrices ✅ LEGACY/ preserves history without clutter ✅ Traceability: decision log, tech debt, WBS all linked ✅ DECISIONS/ ready for ADR pattern (future use) Sync with root: - CLAUDE.md references: docs/CURRENT/, docs/INDEX.md ✅ - AGENTS.md references: docs/CURRENT/, traceability ✅ - README.md: Document guide links updated ✅ Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
97 lines
3.1 KiB
Markdown
97 lines
3.1 KiB
Markdown
# 02. 알고리즘 리팩터링·고도화 기준
|
||
|
||
## 1. 생산 모델 경계
|
||
|
||
생산 엔진은 수익률 최대화 함수가 아니라 다음의 순서가 보존된 **결정 상태기계**다.
|
||
|
||
```text
|
||
HARD_IMPAIRMENT
|
||
→ PORTFOLIO_SURVIVAL
|
||
→ DYNAMIC_PROFIT_FLOOR
|
||
→ CONCENTRATION_LIQUIDITY
|
||
→ OPPORTUNITY_COST
|
||
→ REENTRY_OPTION
|
||
```
|
||
|
||
상위 정책이 행동을 결정하면 하위 점수는 이를 상쇄하지 못한다. 모든 정책은 `PolicyId`, 입력 `EvidenceId`, `ModelVersion`, `ConfigVersion`, 허용오차와 반대증거를 남긴다.
|
||
|
||
## 2. Scalar Position 제거
|
||
|
||
기존 `position: float` 하나로는 Core와 Tactical, 기존 lot과 재진입 lot을 분리할 수 없다. 다음 모델로 전환한다.
|
||
|
||
```text
|
||
Portfolio
|
||
└─ PositionLot (원가·수량·개설/종료·세금 lot)
|
||
└─ CycleState (Entry, Peak, Floor, BreachCount, LastSell, LastBuy)
|
||
└─ ProtectionState / ReentryWatch
|
||
```
|
||
|
||
- 부분매도는 특정 Lot/Cycle에 귀속된다.
|
||
- 재진입은 새 `CycleId`와 새 Lot을 만든다.
|
||
- Strategic Core는 정책상 보호 대상 비중과 Tactical 비중을 분리한다.
|
||
- Hard Impairment는 자동 재진입을 금지한다.
|
||
|
||
## 3. Functional Core / Imperative Shell
|
||
|
||
**Pure Core**
|
||
|
||
- `SellPolicyChain.Evaluate(input)`
|
||
- `ReentryPolicy.Evaluate(input)`
|
||
- `PortfolioConstraintPolicy.Evaluate(input)`
|
||
- `ExpectedUtilityCalculator.Calculate(input)`
|
||
|
||
**Imperative Shell**
|
||
|
||
- PIT data query
|
||
- transaction, Dapper SQL
|
||
- EvidenceSnapshot 저장
|
||
- Outbox 발행
|
||
- Hangfire schedule/retry
|
||
- SignalR/Telegram 통지
|
||
|
||
## 4. 기대효용 계산 분해
|
||
|
||
한 개의 opaque score 대신 구성요소를 별도로 저장한다.
|
||
|
||
- Hold expected return distribution P10/P50/P90
|
||
- ES95와 영구가치훼손 확률×LGD
|
||
- marginal portfolio risk
|
||
- liquidity/slippage/tax/FX
|
||
- replacement lower confidence edge
|
||
- reentry option loss
|
||
|
||
Opportunity sell은 순우위의 신뢰하단이 0을 넘고 IPS·유동성·세금 제약을 통과할 때만 허용한다.
|
||
|
||
## 5. 실행 시뮬레이션
|
||
|
||
- 결정: 시장 종가 후
|
||
- 주문의도: 다음 거래가능 세션
|
||
- Fill: open/VWAP/limit 모델 중 승인된 시나리오
|
||
- 부분체결, gap, ADV participation, spread, FX, 세금, 수수료를 별도 이벤트로 기록
|
||
- SignalDecision과 Fill은 분리해 추천 성과·실행 성과·고객 행동을 attribution한다.
|
||
|
||
## 6. 일평가
|
||
|
||
일평가는 단타 적중률이 아니다.
|
||
|
||
| 영역 | 핵심 |
|
||
|---|---|
|
||
| 운영 무결성 | duplicate, lookahead, DQ hold, 미승인 공개, reconciliation |
|
||
| 예측 | coverage, calibration, Brier/log loss |
|
||
| 매도 | ES/MDD 감소, permanent loss 회피, gain capture, false-exit cost |
|
||
| 재진입 | capture, delay cost, duplicate stage, expiry |
|
||
| 비용후 효용 | 20/63/126/252 거래일 |
|
||
| 모델리스크 | PBO, DSR, parameter stability, regime drift |
|
||
|
||
## 7. 변경 규칙
|
||
|
||
임계값·수식·우선순위를 바꾸는 PR은 반드시 다음을 포함한다.
|
||
|
||
1. Policy ID와 변경 사유
|
||
2. Characterization/Golden diff
|
||
3. Frozen OOS와 cost×2 결과
|
||
4. market/asset/regime별 영향
|
||
5. false-exit·reentry·ES 영향
|
||
6. ModelCard와 rollback 기준
|
||
7. Quant/Risk 승인
|