주식 레이더와 같은 얼개로 코인 쪽을 만들었습니다. 업비트 원화마켓 전 종목을 훑어 등급을 매기고, 그 등급대로 사고팔아 보는 모의투자 계좌를 붙였습니다.
먼저 적어 둡니다. 투자 추천이 아닙니다. 공개된 뉴스와 시세를 정해진 규칙으로 계산한 요약이고, 등급은 "오른다"는 예측이 아니라 같은 날 코인들 사이의 상대적 순위에 가깝습니다. 개인용으로 쓰려고 만들었고, 그래서 검색 색인에서도 빼 뒀습니다.
재무제표가 없는 자리에 무엇을 넣나
주식 쪽은 뉴스와 재무제표를 봅니다. 코인에는 재무제표가 없습니다. 그 자리에 시장구조를 넣었습니다. 김치 프리미엄, 거래대금, 해외 상장 여부.
비중은 뉴스 40%, 기술 35%, 시장구조 25%입니다. 기술 지표의 기간은 주식보다 짧게 잡았습니다. 주식에서 20일·60일로 보던 것을 7일·30일·90일로 봅니다. 코인은 그 절반 주기로 같은 폭이 움직입니다.
코인 이름은 일반명사와 심하게 겹칩니다
가장 오래 붙잡은 문제입니다. 뉴스를 검색하는데 엉뚱한 기사가 계속 딸려 왔습니다.
| 문제 | 대응 |
|---|---|
| 어떤 코인의 한글 이름이 '스토리지'라 저장장치 기사가 전부 걸린다 | 검색과 판정에 코인 맥락을 강제 |
심볼 ERA가 영어 단어 안쪽에 걸린다 | 영문은 단어 경계로만 매칭 |
| 기사 제목의 일반 단어가 코인명으로 잡힌다 | 심볼은 대소문자를 구분. 기사는 티커를 대문자로 쓴다 |
AI·DATA·ONE은 대문자로도 흔한 약어다 | 이 심볼들은 아예 이름으로만 검색 |
한국어와 영어를 각각 검색하는 것도 이번에 정한 규칙입니다. 국내 기사만 보면 해외에서 먼저 터진 재료를 하루 늦게 압니다. 실제로 어떤 코인은 근거 92건 중 73건이 해외 기사였습니다.
추측성 표현은 점수를 0.55배로, 블로그나 커뮤니티 같은 미검증 채널은 0.5배로 깎고 화면에서 따로 보여줍니다. 버리지는 않습니다. 찌라시도 실제로 가격을 움직이니까요.
김치 프리미엄은 그대로 쓰면 거짓말을 합니다
국내 가격이 해외보다 얼마나 비싼지를 보는 값입니다. 이걸 그냥 쓰면 두 번 틀립니다.
첫째, 절대값을 쓰면 안 됩니다. 원화 시장 전체가 5% 프리미엄일 때 어떤 코인이 5%인 건 그 코인 얘기가 아니라 환전 수요 얘기입니다. 그걸 감점하면 상승장마다 전 종목이 깎입니다. 그래서 시장 중앙값 대비 초과분만 봅니다. 시장이 0.5%인데 혼자 29%라면 그건 국내에서만 벌어진 일이고, 해외 가격이 그대로여도 격차가 좁혀지는 것만으로 원화 가격이 빠집니다. 높은 김프는 호재가 아니라 추격매수 위험으로 봅니다.
둘째, 심볼이 충돌합니다. 업비트와 해외 거래소가 같은 티커로 다른 코인을 상장해 둔 경우가 있습니다. 그대로 계산하면 이런 값이 나옵니다.
| 심볼 | 잘못 계산된 김프 |
|---|---|
DATA | +20,898% |
PROS | +1,048% |
LIT | +398% |
BEAM | −97.7% |
알려진 충돌은 명시적으로 막고, 그 외에는 ±40%를 넘으면 아직 모르는 충돌로 보고 값을 버립니다. 김프는 차익거래로 메워지므로, 개별 코인이 40% 넘게 벌어진 채 유지되는 건 시장 현상이 아니라 데이터 문제입니다. 확신이 없으면 쓰지 않는 쪽으로 닫았습니다.
못 구했을 때 0을 넣지 않는 것도 같은 이야기입니다. 0을 쓰면 '해외에 상장이 안 됐다'와 '국내외 가격이 같다'가 구분되지 않습니다. 앞은 정보 없음이고 뒤는 뚜렷한 신호입니다. 그래서 비워 두고 사유를 화면에 적습니다. 213종 중 149종에서 계산됐습니다.
이 글을 쓴 뒤 해외 시세 소스를 바꿨습니다. 바이낸스가 자동 실행 서버의 IP를 막고 있어서 빼고 OKX·Bybit·Gate.io 를 합쳐 쓰며, 아래의 명시 차단 목록도 지웠습니다 — 그 이야기는 따로 적었습니다. 지금은 195종에서 계산됩니다.
기사가 없으면 상위권에 못 올라갑니다
만들고 나서 결과를 보다가 이상한 걸 발견했습니다. 아무도 언급하지 않는 코인 네 종이 상위 2~6위를 먹고 있었습니다.
이유는 단순했습니다. 뉴스 축이 비면 그 비중이 나머지로 넘어가는데, 시장구조 축은 점수가 후하게 나오는 편입니다. 그래서 조용한 코인일수록 유리해지는 구조가 돼 있었습니다. 기사가 하나도 없으면 등급을 B 이하로 제한하도록 막았습니다.
점수만 있고 근거를 못 대면 난수와 같습니다
이 도구에서 제일 신경 쓴 부분입니다. 코인마다 왜 그 등급인지를 함께 저장합니다. 근거 기사의 제목·언론사·발행시각·링크, 어떤 표현이 점수를 움직였는지, 김프를 못 구했다면 그 사유까지 전부 남습니다.
점수만 보여주면 그 숫자가 맞는지 틀린지를 아무도, 만든 사람조차 확인할 수 없습니다.
모의투자는 서버가 판정합니다
D1에 계좌를 두었습니다. PC에서 열든 폰에서 열든 같은 계좌입니다. 초기 자금 1,000만원, 수수료 0.05%.
체결가는 화면이 아니라 서버가 업비트에서 직접 조회합니다. 화면이 "1원에 샀다"고 보내도 그 값은 쓰이지 않습니다. 잔고와 보유수량 검증도 전부 서버에서 합니다. 공개 사이트의 API라 주소만 알면 누구나 요청을 던질 수 있으니, 쓰기는 관리자 세션이 있어야만 통과합니다. 읽기는 열어 뒀습니다 — 개인정보가 없습니다.
매매할 때 그 시점의 등급을 함께 기록합니다. 나중에 "A등급만 샀으면 성적이 어땠나"를 물으려면 살 때의 등급이 박제돼 있어야 합니다. 등급은 매일 바뀌니까, 나중에 조회해 봐야 그때 값이 아닙니다.
한계는 숨기지 않고 적어 뒀습니다
- 감성 사전은 사전에 있는 표현만 잡습니다. 새 표현, 비꼬는 문장, 맥락이 뒤집히는 기사는 놓칩니다. 뉴스 점수가 낮은 건 "나쁘다"가 아니라 "재료가 안 잡혔다"입니다
- 사실과 시장 반응을 구분하지 못합니다. "상장 소식에도 하락"을 호재로 읽습니다
- 성과 추적이 아직 없습니다. 이 등급이 실제로 맞았는지는 검증된 바 없습니다
마지막 항목이 다음 과제입니다. 모의투자를 붙인 것도 결국 그 답을 만들기 위해서입니다.