기본값이 안전한 쪽
DRY_RUN 은 켜진 채, ALLOW_LIVE_TRADING 은 꺼진 채로 시작합니다. DRY_RUN 만 끄면 시작할 때 설정 검사에서 멈추고, 업비트 주문 함수는 호출 직전에 잠금을 다시 확인합니다.
StockAgent 는 업비트 시세를 읽어 RSI14 와 5·20 이동평균, 변동률로 스냅샷을 만들고, AI 에게 사기·팔기·기다리기 중 하나를 신뢰도와 근거와 함께 답하게 합니다. 그 답은 리스크 레이어를 지나야 주문이 되고, 레이어는 금액을 줄이거나 막을 수만 있습니다. 판단과 체결은 SQLite 에 남아 재시작해도 이어집니다. 기본값은 모의매매이고, 실거래는 설정 두 개를 모두 바꿔야 열립니다.
이 사이트의 데모는 GitHub Pages 용으로 내보낸 정적 빌드입니다. 계좌 조회·AI 호출·주문이 모두 꺼져 있고, 시세는 내보낸 시점의 업비트 종가 스냅샷, 계좌 숫자는 데모 값입니다.

매매 루프는 기본 10분마다 한 번 돕니다. 공개 데모는 그 루프가 멈춘 상태를 그대로 보여 줍니다.
캔들·현재가·잔고를 가져와 RSI14, 5·20 이동평균, 변동률을 계산합니다. 데모 화면은 내보낸 시점의 업비트 종가를 268개 마켓 분량으로 씁니다.
설정한 AI 가 BUY·SELL·HOLD 와 0~1 신뢰도, 근거를 돌려줍니다. 데모에서는 키 없이 도는 mock 제공자가 HOLD 를 내고, 실행된 주문은 0건입니다.
신뢰도 0.6 미만은 관망입니다. 주문 금액은 1회 한도 10,000원에 신뢰도를 곱한 값까지이고, 업비트 최소 5,000원에 못 미치면 올려 맞추지 않고 거절합니다. 그날 실현 손실이 30,000원에 닿으면 매매를 멈춥니다.
DRY_RUN 이 켜져 있으면 주문은 체결 없이 기록만 됩니다. 수동 주문 창도 같은 규칙을 따르고, 데모에서는 주문 요청 자체가 읽기 전용 오류로 돌아옵니다.




대시보드는 루프가 남긴 것을 보여 줄 뿐, 스스로 주문하지 않습니다. 아래 계좌 숫자는 전부 데모 값입니다.
계좌 지도현금과 코인을 보유 비중만큼의 칸으로 나누고, 평단 대비 손익을 색으로 칠합니다.
판단 기록AI 판단마다 가격·RSI·신뢰도·주문 결과가 한 줄로 남고, CSV 로 내려받을 수 있습니다.
코인 뉴스Google 뉴스 RSS 를 코인·업비트 두 갈래로 모아 60초마다 갱신합니다.
코인 포트폴리오보유 코인의 평가·평단·손익·비중을 표와 도넛으로 보여 줍니다. 아래 수동 주문 창은 모의 주문만 받습니다.
실거래는 DRY_RUN 과 ALLOW_LIVE_TRADING 두 설정을 모두 바꿔야 열리고, 업비트 주문 직전에 한 번 더 확인합니다.
DRY_RUN 은 켜진 채, ALLOW_LIVE_TRADING 은 꺼진 채로 시작합니다. DRY_RUN 만 끄면 시작할 때 설정 검사에서 멈추고, 업비트 주문 함수는 호출 직전에 잠금을 다시 확인합니다.
AI 의 답은 행동·신뢰도·근거 세 칸뿐입니다. 금액은 리스크 레이어가 정하고, 레이어는 줄이거나 막을 수만 있습니다.
정적 내보내기는 계좌 대신 데모 값을 씁니다. access_key·secret_key·주문 uuid 같은 필드가 하나라도 섞이거나 data_mode 가 demo 가 아니면 내보내기가 실패합니다.
멀티유저 모드에서 키를 등록하면 업비트에 출금 가능 여부부터 묻고, 출금이 되는 키는 저장하지 않습니다. 시크릿은 Fernet 으로 암호화해 둡니다.
Claude·OpenAI·Gemini 가 하나의 인터페이스 뒤에 있습니다. 한 제공자가 쿼터나 인증 오류를 내면 잠시 건너뛰고 다음으로 넘어가며, mock 은 키 없이 전체 흐름을 돌립니다.
백테스트 CLI 가 업비트 캔들을 규칙 모드나 AI 모드로 재생해 수익률·MDD·승률·거래 수를 냅니다. 규칙 모드는 AI 비용 없이 돕니다.
공개 페이지에 주문 기능을 두면, 누구나 누를 수 있는 버튼이 생깁니다. 그래서 정적 내보내기는 계좌 조회·AI 실행·주문 요청을 모두 읽기 전용 오류로 돌려보내고, 계좌 숫자는 데모 값으로 채웁니다. 시세만 내보낸 시점의 업비트 스냅샷입니다. 화면 위 DEMO · READ ONLY 배지가 그 사실을 먼저 알립니다.
AI 는 신뢰도와 근거를 함께 내야 하고, 0.6 미만이면 관망으로 바뀝니다. 금액은 1회 한도에 신뢰도를 곱한 값을 넘지 않고, 하루 실현 손실이 30,000원에 닿으면 그날 매매를 멈춥니다. 틀린 판단이 커질 수 있는 길을 숫자로 좁혀 둔 것입니다.
DRY_RUN=false 와 ALLOW_LIVE_TRADING=true 를 둘 다 적어야 합니다. DRY_RUN 만 끄면 시작할 때 설정 검사에서 멈추고, 업비트 주문 함수도 호출 직전에 두 번째 잠금을 확인합니다. 원금 손실 위험과 소액 검증 권고는 README 맨 위에 적혀 있습니다.
저장소의 커밋 1,739개 중 1,660개는 시세 스냅샷을 자동으로 올린 커밋입니다. 그걸 빼면 79개가 남고, 기간은 7월 3일부터 12일까지입니다. 코드 줄 수는 테스트와 일회성 수정 스크립트를 뺀 Python 42개 파일에서 셌습니다.
multiuser 패키지가 계정·세션·사용자별 매매 엔진·암호화 금고를 더합니다. 사용자는 자기 업비트 키를 등록하고, 출금 권한이 있는 키는 저장 단계에서 거절됩니다. 자동매매는 사용자마다 꺼짐, 모의매매는 켜짐으로 시작합니다. MULTIUSER.md 는 공개 운영 전에 자본시장법 자문이 필요하다고 먼저 적어 둡니다.