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>
3.5 KiB
3.5 KiB
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. 연구 코드 목표 구조
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를 공유해 의미 회귀를 검증한다.