# 01. 첨부 연구 소스 정량·구조 감사

## A. 즉시 조치 P0

| ID | 소스 관찰 | 영향 | 조치 |
|---|---|---|---|
| SRC-P0-01 | 원시 가격데이터와 실행환경 lock이 번들에 없음 | 제3자가 결과를 완전 재현할 수 없음 | Data Manifest, checksum, Python lock, container image digest를 Evidence Pack에 포함 |
| SRC-P0-02 | `v12_positions()`가 전체 보유를 하나의 `entry/peak/floor`로 관리하고 재진입 시 모두 reset | 기존 Core lot과 신규 tactical lot의 사이클이 다시 혼합됨 | `PositionLot`·`CycleState`별 보호선과 재진입 생성 |
| SRC-P0-03 | KR corporate action을 근사 정수비율로 과거 전체에 소급 조정 | 공식 기업행사와 다를 경우 수익·ATR·보호선 왜곡 | 공식 CA master 우선, 추정값은 QUARANTINED evidence로만 사용 |
| SRC-P0-04 | 총수익·PIT 재무·상폐·세금·FX가 없음 | 생산 매도·기대효용 판단 불가 | 가격정책 연구로 한정, 생산 승격 차단 |
| SRC-P0-05 | `portfolio_backtest()`의 overlay 비용이 전역 US 7bps로 고정 | KR 자본바닥 결과의 비용 라벨과 실제 계산 불일치 | 비용을 함수 인자로 강제하고 FeeSchedule PIT로 전환 |

## B. P1 리팩터링

| ID | 관찰 | 개선 |
|---|---|---|
| SRC-P1-01 | `v11_positions`, `v12_positions`, `positions_fast`에 정책 로직 중복 | 단일 Policy Core와 vectorized adapter 분리 |
| SRC-P1-02 | `giveback_cap_v12()`가 정의돼 있으나 실제 v12 계산은 `giveback_cap_v11()` 사용 | dead code 제거 또는 정책 ID와 Golden으로 의도 명시 |
| SRC-P1-03 | `core_floor()`와 별도 `min_pos` literal map이 중복 | YAML→typed config→single resolver |
| SRC-P1-04 | `ROOT=/mnt/data`, FILES global, import 시 output directory 생성 | CLI/config 주입, library와 runner 분리 |
| SRC-P1-05 | Data quality 함수가 global file을 재읽음 | raw input과 canonical input을 명시적으로 전달 |
| SRC-P1-06 | 거래일 결측을 calendar gap으로만 판단 | MarketCalendar 기반 expected session 검증 |
| SRC-P1-07 | backtest cost는 신호일, exposure는 다음날 lag로 반영 | OrderIntent/Fill 시점으로 비용·수량·현금 정렬 |
| SRC-P1-08 | 동적 동일가중에서 종목 시작/종료에 따른 비중 변화 비용이 명시되지 않음 | UniverseEvent와 rebalance trade를 별도 모델링 |
| SRC-P1-09 | `false_exit_rate_63d`가 단순 63일 +10% 여부 | 매도비중·benchmark·비용·재진입을 반영한 FalseExitCost 정의 |
| SRC-P1-10 | 9개 local parameter grid만으로 robustness 판단 | CSCV/PBO, Deflated Sharpe, block bootstrap, walk-forward 확대 |

## C. 유지할 요소

- 수익구간 이후 활성화되는 단조 보호선
- 갭 이탈과 2종가 이탈의 부분매도 구분
- 다음 거래가능 세션 execution lag
- 최소 10세션 재진입 대기와 50일선 상승·20일 고점 조건
- 자본바닥 개념과 비용 스트레스

## D. 연구 코드 목표 구조

```text
research/
  pyproject.toml + lock
  src/kartsell_research/
    data/            # loader, PIT calendar, CA adjustment
    domain/          # pure policy contract shared with golden vectors
    simulation/      # order/fill/cost/cash/universe
    evaluation/      # metrics, false-exit, PBO/DSR
    cli/             # no import-time side effects
  manifests/
  fixtures/
  tests/
  artifacts/<run-id>/manifest.json
```

연구 Python과 .NET 생산 정책은 서로 호출하지 않는다. 대신 동일한 Golden input/output vector와 Policy ID를 공유해 의미 회귀를 검증한다.
