| 종목 | 투입비중 | 수량 | 평단 | 현재가 | 손익률 |
|---|---|---|---|---|---|
| 불러오는 중… | |||||
| 티커 | 비중 | 수량 | 평단($) | 현재가($) | 손익률 |
|---|---|---|---|---|---|
| 불러오는 중… | |||||
국장분석기와 같은 점수로 우량주만 골라, 점수가 곧 목표 비중이 되게 매수하고 점수 하락에 분할 매도. 손절·익절은 없고 전부 시장가·규칙 기반입니다.
IS_VIRTUAL=false · DRY_RUN=false · KIS_ALLOW_REAL_ORDER=true)이 모두 풀린 상태. 하나라도 막으면 주문 함수가 거부합니다.매도를 매수보다 먼저 돌려 그 대금으로 매수합니다. 국장 공휴일엔 매매 phase 자동 스킵.
우량주의 기술·밸류·시장 지표를 합산해 점수를 내고, 시장 상황으로 보정한 adj가 매수/매도 등급을 결정합니다. (하락할수록 +점 = 눌림 매수 성향)
| 지표 | 의미 | 범위 |
|---|---|---|
| 52주 고점 대비 하락률 | 많이 빠졌을수록 + | 0 ~ +3 |
| 200일선 괴리율 | MA200 아래일수록 + | −2 ~ +2 |
| FWD PER (3년평균 대비) | 과거보다 쌀수록 + | −2 ~ +2 |
| EPS 성장률 (추정) | 이익 늘수록 + | −2 ~ +2 |
| 시장 (KOSPI/KOSDAQ 고점↓) | 지수 눌림 = 시장보너스 | −1 ~ +3 |
| adj 점수 | 판정 |
|---|---|
| ≥ 12 | 매수 목표 비중 100% |
| 10 ~ 11 | 매수 목표 비중 80% |
| 8 ~ 9 | 매수 목표 비중 50% |
| < 8 | 진입 안 함 |
| ≤ 0 / −2 / −4 | 매도 20% / 30% / 전량 |
신규 진입은 시장보너스 ≥ 1 = 그 종목의 지수가 전고점 대비 −10% 초과 하락했을 때만 열립니다(보유 추가매수는 무관하게 진행). 현금플로어의 국면 분류(주의 −8 / 조정 −15 / 공포 −25)와는 별개 체계입니다.
점수가 아무리 높아도 아래를 모두 통과한 종목만 매수합니다. 많이 빠진 소형 잡주가 낙폭만으로 고점수→매수되는 위험을 원천 차단. (ETF 면제, 데이터 미상은 보수적 제외)
| 조건 | 기본값 |
|---|---|
| ① 시가총액 하한 | 5,000억 |
| ② ROE 하한 | 8% |
| ③ 최근 확정연도 흑자 & 3년 중 적자 ≤ 1년 | 필수 |
| ④ 자본잠식 아님 | 필수 |
| ⑤ 60일 평균 거래대금 | ≥ 20억 |
| ⑥ 거래정지/정리매매 제외 | 필수 |
| ⑦ 가용 일봉(상장기간) | ≥ 250봉 |
후보 풀 = universe.json(코스피·코스닥 자동 스캔) ∪ 수동추가 − 수동제외. 대분류 섹터당 최대 ⌈슬롯÷5⌉종목(3~7슬롯이면 1, 10슬롯이면 2).
③은 “3년 연속 흑자”가 아닙니다 — 경기민감 우량주의 단년 적자를 만성 적자와 구분하려고 적자→흑자 회복을 허용합니다([−,+,+] 통과 / [−,−,+] 제외).
판단은 원가, 표시는 평가. 예산·목표·매수여력은 전부 매입원가 기준이고, 손익·실비중은 평가금액 기준입니다 — 분모가 달라 직접 비교하면 안 됩니다.
base 는 “현재 순자산”이 아니라 “봇이 운용하도록 배정받은 원가 기반 자본”입니다. 측정식은 가용현금 + 매입원가합 이지만 그건 배정액을 재는 방법일 뿐이고, 배정액 자체는 내가 넣은 돈 ± 봇이 실현한 손익으로만 움직입니다. 그래서 주가가 빠져 순자산이 줄어도 base 는 유지되는 게 모순이 아니라 설계입니다 — 평가손실은 아직 확정된 게 아니니까요. 반대로 미실현이익도 배정액이 아니라서 실현해야 재투자됩니다.
매수는 현금을 원가로 1:1 옮길 뿐이라 base 를 바꾸지 않습니다. base 가 변하는 건 입금 · 출금 · 실현손익 · 이체 넷뿐입니다(이 중 ‘이체’만 정의에 어긋나며, 아래 참조). 그래서 종목당 풀이 주가에 흔들리지 않고, 오른 종목 추가매수나 빠진 종목 물타기가 구조적으로 없습니다.
매수 여력이 열리는 계기는 넷뿐 — ① 점수 등급 상승(50/80/100%) ② 입금 ③ 실현이익 ④ 매도. 가격은 매수 사이징에 직접 개입하지 않습니다(점수를 통해 3단계로만).
세 영역 분리 — 배정 자본(base): 예산·목표·여력 → 원가 / 평가금액: 자산가치·손익·실비중 → 평가 / 예수금: 실제 주문 가능금액 → 하드캡.
예산 계층: base → 투자가능액(= base × (1 − 플로어%)) → 종목당 풀(= 투자가능액 ÷ 슬롯수) → 종목별 목표(= 풀 × 점수비중 50/80/100%) → 남은 여력(= 목표 − 그 종목 원가) → 실제 주문(= min(여력, 예수금)). 플로어 층과 점수 층이 사이에 있으므로 ‘풀 = base ÷ 슬롯수’ 나 ‘여력 = 풀 − 원가’ 가 아닙니다.
종목 수와 종목당 금액은 투입원금에서 자동 산출. 현금 유보율은 시장 국면에 따라 움직입니다 — 평시 20% / 주의 15% / 조정 8% / 공포 3%. 입금하면 다음 매수부터 자동 반영됩니다.
| 투입원금 | 종목 수 | 종목당 풀(100%) |
|---|---|---|
| 700만 | 3 | 210만 |
| 1,400만 | 7 | 180만 |
| 2,000만 | 10 | 180만 |
| 5,000만 | 10 | 450만 |
저티어(<2,000만): 종목수 = ⌊base ÷ 200만⌋ (3~7). 고티어: 10종목 고정. 투자가능액 = base × (1 − 플로어%). 종목당 풀 = 투자가능액 ÷ 종목수. 목표비중은 항상 (1 − 플로어%) ÷ 슬롯수 — 공포장 3%·3슬롯이면 32.3%.
⚠️ 현금플로어는 순자산이 아니라 base 대비입니다. 상승장엔 순자산 대비 비율이 설정값보다 낮게, 하락장엔 높게 나옵니다(풀도 같이 고정되므로 ‘풀 대비 실탄’은 유지).
⚠️ 이 목표들은 “이 이상 사지 않는다”는 상한일 뿐, 초과분을 팔아 되돌리는 로직은 없습니다. 입출금·이체를 하면 비중이 즉시 틀어지고 자동 복구되지 않습니다 — 원가 기준으로도 마찬가지입니다(이체입고 종목은 평단을 달고 들어와 base 를 똑같이 부풀립니다).
✅ 이체는 수동 원장으로 보정합니다 — bot/capital-ledger.json. 스냅샷은 항등식(예수금+원가합 = 순입금+실현손익) 덕분에 입금·출금·실현손익을 자동으로 정확히 반영하므로 입금하실 때 아무것도 안 하셔도 됩니다. 틀리는 건 종목 이체뿐이라 그것만 적습니다(transfer_in → base 에서 뺌 / transfer_out → 더함). KIS OpenAPI 에는 입출금 원장 API 가 없어(엔드포인트 343개 전수 확인) BTC 의 auto_capital 패턴을 옮길 수 없습니다.
base 변동 알림 — 리포트에서 전일 base 와 10,000원 이상 차이나면 텔레그램 경고. 평가손익은 base 를 안 움직이므로 알림에 뜨는 건 전부 자본이 실제로 오간 사건입니다.
점수가 곧 목표 포지션 크기. 분할·평단분산 없이 목표 비중까지 차액만 한 번에 매수. 예산은 점수 높은 종목부터 소진합니다.
| 유형 | 조건 → 행동 |
|---|---|
| A 분할매도 | adj ≤ 0 / −2 / −4 → 보유 20%/30%/전량 (단계별 1회) |
| B 자격상실 | 자본잠식·3분기 연속 적자(하드경고)·관리종목 → 즉시 전량 |
| C 죽은종목 | 최근 60일 중 종목점수<3 이 45일↑ → 전량 (기회비용 회수) |
| D 교체 | 슬롯 꽉 참 + 최저 종목점수≤3·보유≥5일 vs 신규 adj≥10·gap≥3 → 수확 매도→신규 매수 (1일 1건) |
손절·익절 없음. 전부 시장가. 수정주가 안전망: 52주고점 −70%↓는 분할/유증 의심으로 매수 차단.
(C)(D)의 기준은 adj 가 아니라 종목점수(시장보너스 제외)입니다 — 보너스는 −1~+3 폭으로 모든 종목에 똑같이 얹혀서, adj 기준이면 같은 종목이 시장 상황만으로 정리 대상이 됐다 안 됐다 합니다. (A) 분할매도만 adj 기준입니다.
QQQ 고점 대비 하락률 d로 국면을 나눠, 조정·공포장에 레버리지(QLD·TQQQ)를 분할 매수. 현금 15% + SGOV 30% = 실탄 45%.
‘고점’은 사상 최고가가 아니라 최근 5년 일중 최고가와 봇 관측 최고가 중 큰 값입니다.
익절: QQQ ≥ TQQQ 매수평균 QQQ ×(1+10%) → TQQQ 전량매도 → 현금 15%·SGOV 30% 복원, 남으면 SCHG. 하방 보호 없음(우상향 전제).
⚠️ QLD 는 매도 경로가 없습니다 — 하락장마다 사기만 해 비중이 단조 증가합니다. 위 실탄·레버리지 게이지로 매일 확인하세요(레버리지 40% 이상이면 경고).
| 항목 | 내용 |
|---|---|
| 3중 잠금 | IS_VIRTUAL · DRY_RUN · KIS_ALLOW_REAL_ORDER |
| 중복주문 멱등 | KIS 당일 주문내역으로 원장 재구성 — 재시작에도 재주문 없음 |
| 매수 범위 | 후보 풀 내에서만 · 섹터당 ⌈슬롯÷5⌉종목 · 국면별 현금 유보(20/15/8/3%) |
| 주문 방식 | 매수 지정가 +1% 슬리피지 · 매도 항상 시장가 |
| 체결 검증 | 매매 직후 미체결 점검 → 📋 텔레그램 (재주문은 기본 OFF) |
| 손절/익절 | 없음 |
근거: bot/README.md · app/score-core.js · trade.js · trade-us.js · strategy-us.js
봇 .env의 DASHBOARD_KEY와 같은 값을 입력하세요. 이 기기에만 저장됩니다. (이 키로는 조회만 가능 — 매매 불가)