블랙리스트가 아닌 화이트리스트: 런칭 봇이 통과하는 것만 구매해야 하는 이유
요약
본 글은 오픈 소스 스나이퍼/복사 봇의 필터링 방식(블랙리스트)의 한계를 지적하며, 모든 검사를 통과했을 때만 구매하는 화이트리스트 접근법을 제안합니다. Dexra API를 통해 분석된 데이터에 따르면, 화이트리스트는 기본 비율보다 훨씬 높은 생존율을 보여주어 투자 결정에 중요한 기준이 될 수 있음을 실증적으로 제시합니다.
핵심 포인트
- 블랙리스트 방식은 알려진 위험만 제거할 뿐, 전체적인 성공 확률(기본 비율) 개선에는 한계가 있습니다.
- 화이트리스트는 모든 검사에서 긍정적일 때만 구매하여, 생존율을 기본 비율보다 크게 높이는 효과를 보여줍니다.
- Dexra API의 분석 결과, 지난 30일간 런칭된 코인 중 92.5%가 붕괴했으며, 화이트리스트는 이를 걸러내는 데 유효합니다.
많은 오픈 소스 스나이퍼 및 복사(copy) 봇들은 동일한 방식으로 필터링합니다. 새로운 런칭을 가져와 몇 가지 검사를 실행하고, 뭔가 이상해 보이면 건너뜁니다. 민트 권한이 아직 활성화되어 있으면 건너뛰고, 창작자가 이전에 사기 행위를 했으면 건너뜁니다. 그렇지 않으면 구매합니다.
이것은 블랙리스트입니다. 추가하는 모든 규칙이 알려진 나쁜 사례를 제거하기 때문에 안전하게 느껴집니다. 문제는 기본 비율(base rate)입니다. 대부분의 런칭이 실패할 때, 명백히 나쁜 것들을 제거하는 것은 유지되는 것들의 확률을 거의 움직이지 못합니다.
대안은 화이트리스트입니다: 모든 검사에서 긍정적으로 통과할 때만 구매하고, 그 외의 모든 것(경고, 누락된 답변, 시간 초과)을 '아니오'로 간주하는 것입니다.
이 게시물에서는 실제 숫자로 차이를 보여주고, 사용자가 자신의 필터를 측정할 수 있는 게이트와 스크립트를 제공합니다.
수치 분석
저는 솔라나 런칭을 위한 위험 API인 Dexra를 구축했으며, 이 API는 /score_performance에서 정확도 보고서를 게시합니다. 이 보고서는 유동성이 최소 5 SOL 또는 $500 이상으로 최고점에 도달했고(따라서 붕괴가 측정 가능함), 그리고 적어도 24시간이 지난 과거의 런칭에 대해 점수를 매깁니다. 측정하는 결과는 다음과 같습니다:
붕괴 (Collapse): 런칭 후 24시간 이내에 유동성이 최고점 대비 최소 80% 감소한 경우.
생존 (Survived): 런칭 후에도 24시간 동안 유동성이 유지된 경우. 이는 가격에 대해서는 아무것도 말해주지 않습니다. 토큰은 생존할 수 있지만, 그것을 구매한 사람에게는 여전히 제로가 될 수 있습니다.
이 보고서는 공개적이며 키가 필요하지 않습니다:
curl -s https://api.dexra.dev/score_performance | jq '.result | {analyzed_launches, survival_base_rate, filters}'
지난 30일 동안, 5,818개의 런칭에 대해 첫 구매자가 분석되었습니다. 이 중 5,380개가 붕괴했습니다 (92.5%). 단지 438개만이 하루 동안 유동성을 유지했습니다.
각 런칭에는 또한 런칭 시점에 알려진 정보를 바탕으로 결정(verdict)이 재구성됩니다: ok, caution 또는 avoid. 이 보고서는 동일한 5,818개의 런칭에 대해 어떤 두 가지 필터가 작동했을지 질문합니다 (요약된 응답):
"filters": [
{ "skips": ["avoid"],
"taken": 3479, "collapses_avoided_share": 0.422,
...
테이블로도 동일합니다:
| Policy | Launches bought | Collapsed within 24h | Kept liquidity 24h | Collapses avoided | Survivors missed |
|---|---|---|---|---|---|
| Buy everything | 5,818 | 92.5% | 7.5% | — | — |
| ... | |||||
| 블랙리스트 행을 다시 읽어보세요. 이 필터는 붕괴(collapse)의 42%를 제거하여 변경 로그(changelog) 상으로는 좋아 보입니다. 하지만 여전히 구매하는 것들 중 100개 중 89개가 하루 안에 대부분의 유동성(liquidity)을 잃는 반면, 필터가 전혀 없을 때는 100개 중 92.5개가 그러합니다. 이 필터는 작동하고 있지만, 기본 비율(base rate)을 능가할 수는 없습니다. |
화이트리스트는 훨씬 적은 수의 런칭(launch)만 구매합니다. 총 5,818개 중 664개 (11.4%)입니다. 이들 중 37.0%가 24시간 동안 유동성을 유지했으며 (95% 신뢰 구간: 33.5% ~ 40.8%), 이는 기본 비율인 7.5%의 4.9배에 달합니다. 결론적으로, caution으로 표시된 런칭은 4.5%, avoid는 2.8%에서 생존했으며, 둘 다 기본 비율보다 낮습니다.
두 필터가 매우 다르게 작동하는 이유
블랙리스트는 알려진 나쁜 패턴과 일치하는 런칭을 제거합니다. 거의 모든 것이 실패하는 시장에서, 대부분의 실패 사례는 단일한 패턴과 일치하지 않습니다: 신규 크리에이터 지갑(fresh creator wallet), 첫 구매자가 몇 단계 떨어진 곳에서 자금을 지원받은 경우, 첫 펌프(pump) 때 판매하는 개발자(dev) 등. 따라서 대부분 통과합니다.
화이트리스트는 입증 책임(burden of proof)을 역전시킵니다. 런칭은 측정할 수 있는 모든 축(axis)에서 깨끗하다는 것을 보여주어야 합니다: 권한 포기(authorities renounced), 크리에이터의 붕괴 이력 없음, 첫 구매자가 하나의 지갑에서 자금을 지원받지 않음, 봇 클러스터 부재 등. 아직 읽을 수 없는 모든 것이 불리하게 작용합니다.
비용은 현실적이며 계획해야 합니다: 이 데이터에서 화이트리스트는 생존한 438개 중 192개를 건너뛰었습니다 (43.8%). 당신은 괜찮았을 런칭들을 놓치게 될 것입니다. 3,479번 대신 664번 구매하는 봇도 적은 거래 횟수에서 의미 있는 포지션 사이징(position sizing)과 출구 전략(exits)이 필요합니다.
그리고 37%는 승률(win rate)이 아닙니다. 화이트리스트가 유지한 런칭들 중에서도 63%는 여전히 하루 안에 붕괴했습니다. 이 검사는 당신이 시작하는 확률을 바꿀 뿐이며, 손절매(stop losses), 사이징 또는 출구 전략을 대체하지 않습니다.
실패로 닫히는 게이트
사전 구매 확인에서 가장 흔한 버그는 잘못된 규칙이 아니라, '응답 없음'을 통과로 간주하는 것입니다. RPC가 시간 초과되거나(times out), 보유자 조회 오류가 발생하거나(holder query errors), 분석이 아직 완료되지 않아 코드가 buy()로 넘어가는 경우입니다.
여기에 '응답 없음'을 '아니오'로 의미하게 만드는 게이트가 있습니다. 이는 어떤 서비스에도 의존하지 않으며, 사용자가 직접 확인 절차를 연결할 수 있습니다.
type Outcome = 'pass' | 'fail' | 'unknown'
type Check = { name: string; run: (mint: string) => Promise<Outcome> }
...
느린 확인 절차 하나만으로도 이 게이트는 거부하고 그 이유를 알려줍니다:
{"buy":false,"blocking":[{"name":"first_buyers","outcome":"unknown"}]}
모든 거부 사례에 대해 blocking을 기록하세요. 하루가 지나면 어떤 확인 절차가 느린지, 무엇이 모든 것에 적용되는지, 그리고 무엇이 전혀 적용되지 않는지 알게 될 것입니다.
자신만의 필터 측정하기
자신의 필터가 작동하는지 알기 위해 누군가의 리포트에 의존할 필요는 없습니다. 봇이 본 모든 런칭(구매한 것뿐만 아니라)을 결정 시점의 판정과 함께 기록하고, 그중 24시간 내에 유동성(liquidity)의 80%를 잃은 것을 표시하세요. 그런 다음 동일한 네 가지 숫자를 계산합니다:
from collections import Counter
def filter_report(rows, skip):
...
주목해야 할 숫자는 collapse_rate_taken입니다. 실제로 구매하는 런칭에 무슨 일이 일어나는지 보여줍니다. '방지된 붕괴(Collapses avoided)'는 README에서 보기 좋은 숫자이지만, collapse_rate_taken은 PnL(손익)에 나타나는 숫자입니다.
이 로그를 만들 때 주의할 두 가지 함정이 있습니다:
- 결정 시점의 판정을 사용하세요. 나중에 재계산하면 이미 발생한 붕괴가 플래그로 새어 나와 필터가 실제보다 더 좋아 보이게 됩니다.
- 건너뛴 런칭을 카운트하세요. 구매 기록만으로는 필터가 얼마나 많은 생존자를 버렸는지 알 수 없습니다.
지름길
직접 확인 절차를 만들고 싶지 않다면: Dexra의 new_launches는 판정과 그 이유를 담은 신규 런칭을 반환하므로, 화이트리스트 자체가 하나의 필터가 됩니다. 다시 공개합니다: 제가 만듭니다.
type Launch = { mint: string; verdict?: string; reasons?: string[] }
async function okLaunches(key: string): Promise<Launch[]> {
...
일반적인 답변의 예시 (오늘 한 번 호출, 지난 30분 동안 pump.fun에서 20개 런칭을 간추림):
{ "mint": "Eb9Q2Jp1gt5CQLUEyzyR9ro7faFNZH3yoz3FmA29pump", "verdict": "avoid",
"reasons": ["the creator's earlier tokens collapsed", "liquidity is low"] }
{ "mint": "vmxT7NqUzyMnrNiBSn95KDWVDraUzhe6Z1yfmbXpump", "verdict": "caution",
...
20개 중 어느 것도 ok가 아니었고, 이것이 요점입니다. 대부분의 호출에서 적절한 구매 수는 0입니다. unknown은 첫 번째 구매자나 mint 권한자가 아직 읽히지 않았다는 것을 의미합니다. 화이트리스트는 이를 '아직 아님'으로 간주하고 부분적인 답변에 따라 구매하는 대신 다시 요청합니다.
신뢰하기 전에 알아야 할 제한 사항:
- 정확도 보고서는 런칭 시점에 알려진 플래그를 사용하여 라이브 API가 사용하는 것과 동일한 규칙으로 각 판결을 재구축합니다. 이는 실시간 답변의 기록이 아니며, 실시간 답변에는 더 많은 이유(예: 낮은 유동성)가 포함될 수 있습니다.
- 데이터셋은 아직 초기 단계입니다. 최대 30일이며, 분석된 세트는 5,818개의 런칭입니다. 위의 신뢰 구간은 결과의 정직한 폭입니다.
- 커버리지는 pump.fun, PumpSwap 및 Raydium 풀에 관한 것입니다. 일부 런칭패드는 스트림되지 않으며, API는 이를
coverage.untracked_platforms아래에 나열합니다. - 생존은 가격이 아니라 유동성에 관한 것입니다. 여기서 어떤 토큰이 상승할지 예측하는 것은 아무것도 없습니다.
핵심 요약 (Takeaway)
- 런칭된 토큰의 92.5%가 하루 안에 유동성을 잃는 시장에서, 명백한 러그 풀(rugs)을 제거하는 블랙리스트만으로는 여전히 대부분의 붕괴를 구매하게 만듭니다.
- 모든 검사를 통과하는 것만 구매하고, 시간 초과 및
unknown은 실패로 간주해야 합니다. - 봇이 본 모든 것에 대해 해당 시점의 판결을 가지고
collapse_rate_taken을 측정해야 합니다.
체크를 직접 작성하지 않고도 화이트리스트를 사용해 보고 싶다면, 계정당 매일 100개의 무료 크레딧을 제공받거나, 계정 없이 x402 이상에서 USDC 단위로 호출당 비용을 지불할 수 있습니다: dexra.dev/docs. 위에 표시된 실시간 숫자는 dexra.dev/accuracy에 있으며 매일 변경됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기