geostock-analyzer-docs

LIMITATIONS — 현재 PoC 한계 및 정직 보고

외부 평가자·기여자가 시스템을 읽기 전에 이 문서를 먼저 읽기 권장. 모든 보고된 수치·시뮬·rationale의 신뢰도 경계가 명시됨.

1. 검증 메타데이터 부재 (가장 중요)

docs/layer1.md 안 LAYER1 적중률 표:

검증 적중률
등급 적중 73%
방향 적중 87%
순위 적중 100%
종합 87%

누락:

현재 상태: 이전 세션 측정값 인용, 메타데이터 미명시. 위 수치는 절대 마케팅 자료로 사용 금지. 신규 측정 필요.

개선 후보: 21-case harness(법률봇 패턴) + 3-repetition averaging + baseline(random affinity 분포) 동시 측정.

2. Mock 데이터 잔존

PoC 단계에서 일부 변수는 실데이터 wire-up 안 됨:

위치 Mock 변수 영향
L2 slow_variables (16/16) mock 2 14/16 실데이터 (87.5%)
L4 외인 매매 pykrx 차단 → Naver 크롤링 우회 (5/3) watchlist 종목만, universe sector_top은 부재
L4 한국 정치·사경 뉴스 n8n news_kr_daily (5/2 수정 후 운영) 일부 누락 케이스 가능
L1 add-on lens baseline 22 값 정성 추정 (외부 source 4종 wire-up으로 대체 진행 중) 외부 source 활성 시 derived

시뮬레이션 v5 “L4 풀 가동” 표현의 한계: LAYER1 다차원 + crisis_mode + L4 SYSTEM_PROMPT 동적 가중까지 활성화된 상태이지만, 외인 매매 데이터가 watchlist 한정이라 universe 종목 분석에선 그 데이터 없이 LLM이 추정. “풀 가동”은 LAYER1·LAYER4 분석 메커니즘 풀 가동일 뿐, 입력 데이터 풀 가용은 아님.

3. branch 머지 평가 — 본질은 추적·교정 사이클 (임계는 trigger)

사용자 지적 정정: 임계값 박는 것 자체가 목적이 아니다. 본질은:

구현 (5/3 적용):

측정 사이클:

  1. forecast 생성 시 cohort tag 자동 부착 (prompt_version/schema_version/model/git_sha 등 — 후속)
  2. 매 영업일 actual 주입 후 평가 → _log.jsonl에 sector별 abs_diff 누적
  3. 교정 (예: SYSTEM_PROMPT 변경, RAG 임베딩 도입) 시 cohort 분기
  4. compare_cohorts() 로 교정 전후 평균 abs_diff 차이 측정
  5. 회귀 발생 시 (after > before) 즉시 알림 → 교정 롤백 결정

MERGE_THRESHOLDS는 trigger: 직관적 합격선 (방향 70%/강도 60%/avg_abs_diff <2%p 등). 단 본질은 추적·축적·정량 교정 효과.

5/3 추가 적용:

21-case harness 폐기 (5/3):

4. LLM 비결정성 처리 부재

LAYER3·LAYER4·LAYER5 모두 Claude Opus 4.5 zero-shot 호출:

영향:

개선 후보:

5. Layer 간 인터페이스 schema 버전 관리 부재

현재 dataclass:

@dataclass
class Layer2Output:
    asof: str
    layer1_context: dict
    slow_variables: list[VariableState]
    # ... schema_version 필드 없음

위험:

개선 후보 (5분 작업):

6. 재무·공시 데이터 시계 미스매치 (5/3 적용)

LAYER5 입력은 시계가 다른 데이터의 혼합:

위험: prompt에 시점 라벨 없으면 LLM이 분기 데이터를 실시간으로 오인. 1Q 결과를 4Q 시장 분석에 쓰는 위험.

5/3 적용:

7. portfolio_weight 결정론적 정규화 (5/3 적용)

LAYER5 출력의 portfolio_weight: 0~1을 LLM이 통째로 결정하던 위험:

5/3 적용:

검증: 4 stock (강매수+높음/매수+중간/중립/매도) → 0.667/0.233/0/0 합계 0.900 정상.

8. 법적 안전장치 — 개인 연구용 명시 (5/3 적용)

LAYER5가 매수·매도 신호 직접 생성 → 자본시장법상 유사투자자문업 해석 여지. 자기 사용 한정이라도 명시 안전.

5/3 적용:


운영 의사결정에 미치는 영향

보완 즉시 위험 중기 위험
1. 검증 메타데이터 외부 신뢰도 X 채용·OSS 평가 시 부정 평가
2. Mock 잔존 시뮬 결과 oversell 위험 실 시장 적용 시 정확도 갭
3. 평가 임계 5/8 머지 결정 자의적 시스템 수명 단축
4. LLM 비결정성 매일 결과 신뢰도 모호 백테스트 무의미
5. Schema 버전 다음 schema 변경 시 silent break 디버깅 비용 누적

우선순위 (보수적)

  1. #5 Schema version (5/3 적용) — Layer2~5 dataclass schema_version + run_layer3/4/5 진입 시 호환 검증
  2. #4 DETERMINISTIC_NOTE prompt (5/3 적용) — CLI temperature 미지원 → 자연어 강제. n_calls·determinism_note 메타 필드 박음
  3. #3 추적·교정 사이클 (5/3 적용) — abs_diff per ticker + compare_cohorts + cohort tag 자동 부착 (prompt_sha/git_sha/schema)
  4. #1 21-case harness — 폐기 (5/3) — 본질 = 자연 운영 누적 + cohort 비교. 인위 시나리오 불필요
  5. #2 Mock 갭 (지속) — 외부 source wire-up 진행 중, 잔여 후속
  6. #6 시계 라벨 (5/3 적용) — as_of_period “2025.12” 추출 + prompt 박음
  7. #7 portfolio_weight 결정론 (5/3 적용) — normalize_portfolio_weights confidence-weighted long-only + cash buffer 10%
  8. #8 법적 안전장치 (5/3 적용) — README Disclaimer + 알림 면책 문구 + watchlist.json gitignore

이 문서는 시스템의 한계를 가리지 않기 위해 존재. 누락·새로 발견된 한계는 PR로 추가.