feat: AI 투자 분석에 매수 추천 금액 표시

BUY 신호일 때 실제 자동매매와 동일한 기준으로 매수 금액·수량을 계산해 패널 상단에 표시.
  · 종목당 상한 = 총자산 × MAX_POSITION_SIZE(적응형 모드면 그 값)
  · 신뢰도 보정 = 예산 × (confidence/0.7), 0.5~1.2배
  · 현금 여력(최소 현금보유 제외)·스윙 합산 상한(SWING_MAX_CAPITAL_RATIO) 잔여로 클램프
BUY 가 아니거나 예산이 1주 미만이면 금액 대신 사유를 표시. 테스트 6건.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-23 13:33:06 +09:00
parent 5706a8971c
commit acbd9f35ea
3 changed files with 181 additions and 0 deletions

View File

@@ -143,6 +143,35 @@ export const AiAnalysisPanel = React.memo(({ aiAnalysisData }: AiAnalysisPanelPr
</span>
)}
</div>
{/* 매수 추천 금액 — 실제 자동매매 사이징과 동일 기준 (총자산×종목당 비중, 신뢰도 반영) */}
{aiAnalysisData?.data && (
<div className="px-3 py-1.5 border-b border-[#152035] bg-[#0a1120] flex-shrink-0">
<div className="flex items-baseline gap-2">
<span className="text-[9px] uppercase tracking-wider text-[#4a6580]">매수 추천</span>
{aiAnalysisData.data.suggested_quantity > 0 ? (
<>
<span className="text-[13px] font-mono text-[#22c55e]">
{Number(aiAnalysisData.data.suggested_amount).toLocaleString('ko-KR')}원
</span>
<span className="text-[10px] font-mono text-[#8faabf]">
{aiAnalysisData.data.suggested_quantity}주
</span>
<span className="ml-auto text-[9px] font-mono text-[#4a6580]">
총자산 {aiAnalysisData.data.position_ratio}%
</span>
</>
) : (
<span className="text-[10px] text-[#4a6580]">
{aiAnalysisData.data.sizing_note || '매수 제안 없음'}
</span>
)}
</div>
{aiAnalysisData.data.suggested_quantity > 0 && aiAnalysisData.data.sizing_note && (
<div className="text-[9px] text-[#3a5570] mt-0.5">{aiAnalysisData.data.sizing_note}</div>
)}
</div>
)}
{/* Content */}
<div className="flex-1 overflow-y-auto custom-scrollbar p-3">
{aiAnalysisText ? (