Lee Trader의 risk_penalty는 모델이 예상한 하락 위험을 종합 점수에서 차감하기 위한 값입니다. 기대수익이 높은 후보라도 비슷한 과거 특징에서 큰 낙폭을 겪었다면 같은 수준으로 평가하지 않기 위해 사용합니다.
기존 설명처럼 단기 급등, 낮은 유동성, 예상 최대낙폭 세 가지를 risk_penalty 하나에 직접 합산하는 구조는 아닙니다. 현재 운영 공식의 직접 입력은 60일과 90일 예상 최대낙폭입니다. 과열과 유동성은 기술 점수, 진입 품질, 주문 가능성 같은 다른 단계에서 별도로 확인합니다.
이 글은 2026년 6월 22일 python/scoring/final_score.py 운영 코드를 기준으로 작성했습니다. 모델이나 계산식을 변경한 것이 아니라 실제 계산을 문서에 정확히 반영한 것입니다.
예상 최대낙폭이란 무엇인가요?
최대낙폭(MDD)은 일정 기간 중 고점에서 이후 저점까지 얼마나 하락했는지를 나타냅니다. 예를 들어 10만원까지 올랐던 가격이 이후 8만원까지 떨어졌다면 그 경로의 낙폭은 -20%입니다.
Lee Trader의 pred_mdd_60d와 pred_mdd_90d는 앞으로 실제 손실이 정확히 그 값에서 멈춘다는 보장이 아닙니다. 과거 특징과 가격 경로를 바탕으로 모델이 추정한 위험 자료입니다. 예상치이므로 갑작스러운 공시나 시장 충격에서는 실제 낙폭이 더 클 수 있습니다.
중요한 점은 최종 수익만이 아니라 중간 경로를 본다는 것입니다. 90일 뒤 주가가 올랐더라도 중간에 -25% 하락했다면 실제 계좌에서는 손절되거나 심리적으로 보유하기 어려울 수 있습니다.
첫 단계: 60일과 90일 위험을 혼합합니다
현재 운영 계산은 두 예상 낙폭의 절대값을 사용합니다.
pred_mdd_mix =
0.6 × |pred_mdd_60d|
+ 0.4 × |pred_mdd_90d|60일 위험에 60%, 90일 위험에 40%를 둡니다. 예를 들어 60일 예상 낙폭이 -12%, 90일 예상 낙폭이 -18%라면 혼합 위험은 14.4%입니다.
0.6 × 12% + 0.4 × 18% = 14.4%절대값을 쓰는 이유는 낙폭 열이 음수로 저장되더라도 위험 크기를 양수로 계산하기 위해서입니다.
두 번째 단계: 구간별 페널티로 바꿉니다
혼합 위험이 10% 이하이면 기본 페널티는 0입니다. 이후 위험 구간이 커질수록 기울기가 가팔라집니다.
| 혼합 예상 낙폭 | 페널티 계산 |
|---|---|
| 10% 이하 | 0 |
| 10~15% | 10% 초과분 × 40 |
| 15~20% | 2 + 15% 초과분 × 80 |
| 20% 초과 | 6 + 20% 초과분 × 120 |
예를 들어 혼합 위험이 14.4%라면 페널티는 약 1.76입니다. 18%라면 4.4, 25%라면 12가 됩니다. 운영 기본 상한은 18입니다.
이 구간 함수는 위험이 작은 영역에서는 점수 차감을 완만하게 하고, 20%를 넘는 영역에서는 더 빠르게 경고하려는 구조입니다. 다만 이 수치가 모든 종목과 시장에서 최적이라고 증명된 자연 법칙은 아닙니다.
최종 점수에서는 얼마나 차감되나요?
risk_penalty 자체가 그대로 빠지는 것이 아니라 시장 국면별 위험 가중치를 곱해 차감합니다.
| 시장 국면 | 위험 가중치 |
|---|---|
| 상승 | 0.40 |
| 중립 | 0.65 |
| 방어 | 0.80 |
같은 페널티 12라도 상승 국면에서는 4.8점, 중립에서는 7.8점, 방어에서는 9.6점이 원점수에서 차감됩니다. 시장이 방어적일수록 예상 낙폭을 더 엄격히 보는 구조입니다.
전체 공식은 AI 점수 계산 방법에서 확인할 수 있습니다.
급등과 유동성은 어디에서 보나요?
최근 급등은 진입 품질 점검과 가격 과열 판단에서 확인합니다. 높은 최근 수익률, 이동평균과의 거리, 변동성 확대가 있으면 랭킹이 높아도 WATCH나 REVIEW 상태로 남을 수 있습니다.
유동성은 기술 점수의 유동성 guard와 주문 가능 수량, 거래대금 검토에서 다룹니다. 거래가 지나치게 적으면 기술 점수가 완화되거나 실제 주문 단계에서 제외될 수 있습니다.
따라서 risk_penalty가 낮다고 모든 위험이 낮다는 뜻은 아닙니다. 예상 낙폭 축이 양호하다는 의미일 뿐이며 과열, 유동성, 데이터 신선도와 계좌 집중 위험을 별도로 확인해야 합니다.
페널티가 높은 종목은 무조건 제외하나요?
아닙니다. 높은 예상 수익과 강한 수급이 큰 예상 낙폭과 함께 나타날 수 있습니다. 이런 종목은 잠재 보상과 위험이 모두 큰 후보일 수 있습니다.
운영에서는 페널티 하나로 자동 제외하기보다 최종 점수, 신뢰도, 시장 상태와 진입 품질을 함께 봅니다. 실제 투자자는 자신의 손실 허용 범위와 보유 기간이 다르므로 공개 점수만으로 비중을 정할 수 없습니다.
다만 큰 낙폭을 감당할 계획이 없다면 높은 페널티를 무시해서는 안 됩니다. 진입을 보류하거나 가격 안정 여부를 관찰하는 것이 더 적절할 수 있습니다.
예상 위험과 실제 위험은 다를 수 있습니다
모델은 과거 데이터에서 배운 관계를 사용합니다. 학습에 없던 사건, 거래 정지, 유상증자, 갑작스러운 산업 충격은 충분히 반영하지 못할 수 있습니다. 예측값이 낮더라도 실제 큰 하락이 발생할 수 있습니다.
반대로 변동성이 높았던 종목은 예상 낙폭이 크게 계산되지만 이후 안정적으로 상승할 수도 있습니다. 페널티는 미래를 확정하는 판정이 아니라 후보를 상대 비교할 때 위험 비용을 반영하는 장치입니다.
위험 모델의 품질도 시간 순서를 지킨 검증과 실제 운영 결과로 평가해야 합니다. 최근 몇 건이 맞거나 틀렸다는 이유만으로 구간 함수와 가중치를 바로 바꾸면 과적합될 수 있습니다.
화면에서 확인할 순서
먼저 risk_penalty와 예상 60일·90일 낙폭을 확인합니다. 다음으로 어떤 시장 국면이 적용됐는지 보고 실제 차감 기여도를 봅니다. 이후 최근 급등, 기술 점수, 수급, 유동성과 데이터 신뢰도를 확인합니다.
점수가 높은데 랭킹이 예상보다 낮다면 위험 차감이 원인일 수 있습니다. 반대로 위험 페널티가 낮아도 예상 수익과 확률 점수가 약하면 높은 순위를 받을 수 없습니다.
Lee Trader의 현재 손익 분석은 위험 공식을 즉시 개선하는 단계가 아닙니다. 점수와 정책 결정, 주문, 실제 체결, 이후 가격 경로를 연결해 어떤 위험이 실제 손실로 이어졌는지 먼저 확인하고 있습니다.
이 글은 정보 제공을 위한 방법론 설명이며 특정 종목의 매수·매도를 권유하지 않습니다. 예상 최대낙폭과 리스크 페널티는 실제 손실 한도를 보장하지 않습니다.