Initial commit: Add project files
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
# 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 승인
|
||||
Reference in New Issue
Block a user