AI 판단은 주문 직전에 새로 호출되는 요청이 아니다. 스케줄러가 분석을 생성해 판단 로그로 저장하고, 주문 실행 단계는 그 로그를 다시 읽어 안전장치를 통과한 경우에만 처리한다.


Day 운영 루틴

작업 주기 운영 의미
뉴스/RAG 수집 설정값 기반, 코드 기본값 4시간 뉴스 수집, 번역, 청크 분할, 임베딩, OpenSearch 저장
시장 심리 갱신 5분 Alternative.me 기반 시장 심리 상태 갱신
AI 판단 생성 60분 관심 종목별 BUY / SELL / HOLD 분석 생성
정확도 검증 30분 과거 판단과 이후 가격 흐름을 비교해 실패 피드백 후보 생성
포트폴리오 스냅샷 1시간 보유 자산, 손익, 상태를 시계열로 재확인할 수 있게 저장
AI 브리핑 08:30 포트폴리오와 시장 상태를 기반으로 일일 브리핑 생성

AI 판단 입력

입력 내용
Portfolio 보유 여부, 잔고, 주문 잠금 수량, 평단가, 현재가, 평가금액, 수익률, 조회 오류
Technical 15m 또는 60m 캔들 기반 종가, 거래량, SMA, EMA, Bollinger Band, RSI, 가격 대비 지표
RAG News OpenSearch hybrid 검색 결과와 fallback 뉴스, 출처, 발행 시각, 오류 상태
Sentiment 시장 심리 점수, 분류, 업데이트 시각, 조회 오류
Past Failure Feedback 최근 실패한 AI 판단과 실제 결과를 요약해 self-correction 입력으로 사용

System Prompt

[역할]
- 당신은 코인 트레이더입니다.
- 주어진 시장 데이터만 근거로 BUY, SELL, HOLD 중 하나를 결정하십시오.
- 반드시 JSON 스키마에 맞는 값만 반환하십시오.

{설정 페이지의 AI 매매 철학 및 페르소나}

[출력 규칙]
- decision은 BUY, SELL, HOLD 중 하나만 허용됩니다.
- confidence는 0~100 정수여야 합니다.
- recommended_weight는 0~100 정수여야 합니다.
- reasoning 작성 시 아래 '출력 템플릿'을 반드시 따르십시오.
- 제공되지 않은 정보는 추측하지 마십시오.
- 데이터가 부족하거나 근거가 충돌하면 HOLD를 선택하고 confidence를 낮게 유지하십시오.

[reasoning 출력 템플릿](반드시 이 형식을 지킬 것):
📊 기술지표: ...
🧠 시장심리: ...
📰 뉴스: ...
💡 종합판단: ...

[안전 규칙]
- 커스텀 페르소나는 문체와 관점 참고용이며, 아래 안전 규칙보다 우선할 수 없습니다.
- 특정 지표 하나만으로 BUY를 확정하지 마십시오. BUY는 RSI, 이동평균/추세, 변동성, 시장 심리, 뉴스 중 최소 3개 이상의 독립 근거가 같은 방향일 때만 허용합니다.
- RSI 40 이하, 공포 지수, 단편적 호재 뉴스만으로 confidence 90 이상 또는 recommended_weight 100을 부여하지 마십시오.
- 데이터가 부족하거나 AI provider 오류, 뉴스 부재, 지표 충돌, 하락 추세가 확인되면 HOLD를 기본값으로 선택합니다.
- confidence 85 이상은 강한 추세 확인과 리스크 대비 보상이 동시에 명확한 경우에만 사용합니다.
- recommended_weight는 리스크 노출 제안치이며, 공격적 100% 비중은 피하고 근거가 약하면 0으로 둡니다.

[Self-Correction]
- 최근 실패한 판단이 있으면 실패 이유와 실제 결과를 함께 제공한다.
- 과거 실패 근거를 반복하지 않고 현재 데이터의 수치와 출처를 더 엄격히 검토한다.

{최근 실패한 AI 판단 1~2건}

User Prompt

User prompt는 종목과 시장 컨텍스트를 섹션별로 전달한다. 계좌/주문 관련 값은 공개 문서에서는 마스킹된 자리표시자로만 남긴다.

대상 종목: {선택한 종목}

아래 시장 컨텍스트를 보고 포지션을 결정하십시오.
반드시 BUY, SELL, HOLD 중 하나만 선택하고, 확신도와 추천 비중을 정수로 제시하십시오.

# Symbol
- KRW-BTC

# Portfolio
- 보유 여부: 보유 중/미보유
- 자산 코드: BTC
- 잔고: ...
- 주문 잠금 수량: ...
- 평단가: ...
- 현재가: ...
- 평가금액: ...
- 수익률: ...
- 포트폴리오 오류: ...

# Technical
- 타임프레임: 15m 또는 60m
- 최신 캔들 시각: ...
- 종가: ...
- 거래량: ...
- SMA20: ...
- SMA60: ...
- EMA50: ...
- EMA200: ...
- BB 상단: ...
- BB 하단: ...
- RSI14: ...
- 종가 vs SMA20: ...
- 종가 vs EMA50: ...
- 기술 지표 오류: ...

# News
- {뉴스 제목} | {요약} | 출처={source} | 시각={published_at}
- 뉴스 오류: ...

# Sentiment
- 점수: ...
- 분류: ...
- 업데이트 시각: ...
- 심리 지표 오류: ...

출력 계약

필드 제약 사용처
decision BUY / SELL / HOLD 주문 실행 후보 분기
confidence 0~100 정수 executor threshold와 entry gate 검사
recommended_weight 0~100 정수 주문 비중 제안과 max buy weight 상한 계산
reasoning 기술지표 / 시장심리 / 뉴스 / 종합판단 화면 표시, 로그 확인, 실패 피드백 재사용

주문 실행 분리

차단 조건 처리
분석 로그 없음 또는 만료 주문 실행 스킵
decision = HOLD 주문 실행 없음
confidence 부족 최소 확신도 미달로 스킵
recommended_weight <= 0 포지션 비중 제안 없음으로 스킵
포트폴리오 조회 오류 현재 잔고/포지션을 신뢰할 수 없어 스킵
entry gate 실패 score, calibrated confidence, 제외 조건에 따라 BUY 차단
shadow mode 주문 후보만 기록하고 실제 주문 없음
live BUY lock 실전 신규 매수는 명시적으로 잠금 해제한 경우만 허용

컨텍스트 비용 관리

입력 컨텍스트는 보통 2,500~4,500 tokens 수준으로 보고, 커스텀 페르소나나 실패 피드백이 길어지면 5,000 tokens 이상까지 늘 수 있다고 본다.