improve: implied_rsi 공식 포화 문제 - 해외주식 RSI=100 이상 현상 #181

Closed
opened 2026-02-20 08:51:58 +09:00 by agentson · 0 comments
Collaborator

문제

SmartScanner의 implied_rsi 계산식이 너무 쉽게 포화됨.

관찰된 로그

Smart Scanner: Found 3 candidates for NYSE American: 
['KNRX(RSI=100)', 'BATL(RSI=100)', 'APUS(RSI=100)']

원인 코드 (src/analysis/smart_scanner.py:341)

implied_rsi = max(0.0, min(100.0, 50.0 + (change_rate * 4.0)))

문제점

  • change_rate >= 12.5% 이면 RSI = 100 (포화)
  • change_rate <= -12.5% 이면 RSI = 0 (포화)
  • 변동률이 큰 소형주/변동성 종목에서 의미 없는 극단값만 출력
  • 이 값이 AI prompt에 포함되어 의사결정 품질 저하 가능

영향

  • RSI=100 → 항상 "momentum" 신호 → BUY bias
  • 실제 RSI와 무관한 approximation이지만 마치 RSI인 것처럼 표현됨
  • SmartScanner의 필터링 효과 약화

개선 방안

  1. 필드명을 change_rate_pct로 변경 (RSI가 아님을 명확히)
  2. 또는 포화 없이 선형 변환 조정 (계수를 4.0→2.0으로 줄여 범위 확장)
  3. 장기적: 실제 RSI(14) 계산을 위한 가격 이력 수집 구현
## 문제 SmartScanner의 implied_rsi 계산식이 너무 쉽게 포화됨. ## 관찰된 로그 ``` Smart Scanner: Found 3 candidates for NYSE American: ['KNRX(RSI=100)', 'BATL(RSI=100)', 'APUS(RSI=100)'] ``` ## 원인 코드 (`src/analysis/smart_scanner.py:341`) ```python implied_rsi = max(0.0, min(100.0, 50.0 + (change_rate * 4.0))) ``` ## 문제점 - change_rate >= 12.5% 이면 RSI = 100 (포화) - change_rate <= -12.5% 이면 RSI = 0 (포화) - 변동률이 큰 소형주/변동성 종목에서 의미 없는 극단값만 출력 - 이 값이 AI prompt에 포함되어 의사결정 품질 저하 가능 ## 영향 - RSI=100 → 항상 "momentum" 신호 → BUY bias - 실제 RSI와 무관한 approximation이지만 마치 RSI인 것처럼 표현됨 - SmartScanner의 필터링 효과 약화 ## 개선 방안 1. 필드명을 `change_rate_pct`로 변경 (RSI가 아님을 명확히) 2. 또는 포화 없이 선형 변환 조정 (계수를 4.0→2.0으로 줄여 범위 확장) 3. 장기적: 실제 RSI(14) 계산을 위한 가격 이력 수집 구현
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jihoson/The-Ouroboros#181