FM-FTRL 학습·피처·파라미터 정합성 점검

작성 2026-09-19 KST · 근거: heeyong 로그/CSV + 소스 코드 · 조치 코드 반영 후 다음 배포 필요

신규라벨 0 주간 지속 배포 시 표본 72,980→63,830 id.m5 CSV=0 (train/serve 불일치) id.ret / id.vr 학습·서빙 공통 경로 OK
핵심 판정 “학습 정지”가 아니라 가중치 갱신 정체였습니다(워커·하트비트는 가동). 원인은 (1) 일봉 캐시가 최종봉 날짜를 검사하지 않아 최대 ~7일 동안 옛 봉만 재사용 → 증분 라벨 0, (2) 매 기동 워밍업이 모델을 replace해 누적 학습을 날림 → 표본 점프, (3) id.m5는 서빙에만 넣고 학습에는 없어 CSV에 영원히 0. 아래 세 가지를 코드로 수정했습니다. 배포 후 stale refresh·워밍업 생략 로그를 확인하세요.

1. 피처 구성 (현재 설계)

키학습서빙(스캔)상태
price.*/vol.* SAX (잔차·거래량)○○동일 encode 경로
mkt.reg / thm.bin○○컨텍스트 on
id.ret / id.vr○ (OPEN+CLOSE PIT)○ (장중 last)9/18 이후 CSV에 등장·가중치 학습됨
id.m5 (6×5분 수익률)없음제거함train/serve 불일치 → FM 피처에서 제외. 단기 급등은 dayChange buyScore 가산

라벨: 종가 기준 향후 5거래일 ±15% 도달(up15/down15). OPEN as-of 시 id.ret=flat이 절반 — CLOSE PIT가 비-flat 버킷을 학습.

2. 발견된 불일치와 원인

증상원인조치
09-12~17 newSamples=0 전일(워커는 가동) DailyOhlcvCacheService: 메모리/디스크 히트 시 LS 미호출. 디스크 TTL 기본 168h → 최종봉이 멈춰도 캐시 재사용 → 라벨 프론티어 불변 최종봉 < 직전 평일이면 stale → LS 갱신. 디스크 TTL 기본 48h
9/18 배포 후 표본 72,980→63,830 · feats 2224→2282 기동마다 warmup()이 빈 모델로 재학습 후 replace — 디스크 가중치·누적 표본 폐기 training-skip-warmup-if-model-loaded=true(기본): 모델 있으면 워밍업 생략 + 라벨 프론티어만 동기화
CSV id.m5 건수 0 학습 dailyFeaturesAsOf에 m5 없음 · 서빙만 recentPulse 추가 → 가중치 미생성 FM 피처에서 m5 제거(플래그 기본 false). 실행 측 early-surge는 dayChange 유지
스캔 이상코드 엔비알모션(0004V0)·디비금융제14호스팩(0004Y0) 6자리이지만 알파벳 포함 · 종목명 스팩 휴리스틱만으로는 코드 단계 미차단 유니버스 제외: 6자리 전 숫자만 허용

3. 파라미터 스냅샷 (생산 CSV 2026-09-19)

4. 잘한 점

5. 부족한 점 (조치 전)

6. 반영한 코드 변경

  1. DailyOhlcvCacheService — stale(직전 평일) 검사 후 LS refresh · TTL 48h
  2. FmftrlTrainingWorker — 모델 로드 시 워밍업 skip + syncLabelFrontiersFromUniverse
  3. FeatureBuilder — FM 피처에서 id.m5 제거
  4. FmftrlUniverseService — 비숫자 6자리 코드 제외
  5. application.yml — training-skip-warmup-if-model-loaded, intraday-m5-features:false, disk TTL 48

7. 배포 후 확인 체크리스트

  1. 기동 로그: 워밍업 생략 | 기존 모델 유지 (replace 없음)
  2. [DailyOhlcvCache] stale refresh 후 하트비트 newSamples>0 (다음 거래일 EOD 이후 특히)
  3. 스캔 topUp에 0004* 알파벳 코드 미등장
  4. param CSV에 불필요한 id.m5 신규 행 없음 · id.ret/id.vr 유지
남은 개선(이번 미포함) 공휴일 캘린더(주말만 스킵 중), 라벨 프론티어 디스크 영속, 분봉 PIT로 진짜 단기 모멘텀 학습. 주간 거래 편중·FM 매도 0은 실행 게이트 이슈로 본 점검과 별도.