<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>HUN's log</title>
    <link>https://hunslog.tistory.com/</link>
    <description>많은 일상 리뷰</description>
    <language>ko</language>
    <pubDate>Sat, 16 May 2026 10:26:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>수풍</managingEditor>
    <image>
      <title>HUN's log</title>
      <url>https://t1.daumcdn.net/cfile/tistory/2678373E583FB4D738</url>
      <link>https://hunslog.tistory.com</link>
    </image>
    <item>
      <title>밈코인 자동매매봇에 1SOL 넣었다가 다 날렸다</title>
      <link>https://hunslog.tistory.com/363</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;결론부터 말하면 다 날렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.9 SOL. 지금 시세로 약 9만원 정도. 하루도 안 됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot 2026-05-01 at 10.15.44 PM.png&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rD9qi/dJMcafsUqh9/XBvVs2kUha49C9i78yETo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rD9qi/dJMcafsUqh9/XBvVs2kUha49C9i78yETo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rD9qi/dJMcafsUqh9/XBvVs2kUha49C9i78yETo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrD9qi%2FdJMcafsUqh9%2FXBvVs2kUha49C9i78yETo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;766&quot; height=&quot;680&quot; data-filename=&quot;Screenshot 2026-05-01 at 10.15.44 PM.png&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-heading=&quot;어떤 봇인가&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;어떤 봇인가&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;어떤 봇인가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;f165493b-ce79-4834-ba3d-8cace6315ab9.png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n7kPN/dJMcajviDZN/BXbDegiwkwrIgcIC1w6tbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n7kPN/dJMcajviDZN/BXbDegiwkwrIgcIC1w6tbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n7kPN/dJMcajviDZN/BXbDegiwkwrIgcIC1w6tbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn7kPN%2FdJMcajviDZN%2FBXbDegiwkwrIgcIC1w6tbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot; data-filename=&quot;f165493b-ce79-4834-ba3d-8cace6315ab9.png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔라나에서 새로 출시되는 밈코인을 자동으로 감지해서 매수하고 파는 봇이다. 작동 방식은 이렇다. 솔라나 네트워크에서 새 토큰이 생성되는 순간을 실시간으로 감지한다. 런치 직후 1분 대기했다가 조건을 통과하면 자동으로 매수한다. 그리고 수익이 나면 팔고, 손실이 나면 손절하고, 시간이 지나면 강제로 청산한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필터 기준도 있다. 초기 유동성이 너무 작으면 스킵. 번들봇이 3개 이상 감지되면 스킵. 개발자 지갑이 토큰을 너무 많이 들고 있으면 스킵. 이 조건을 다 통과한 토큰만 매수한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매수 금액은 건당 0.02 SOL. 익절 기준은 +80%, 손절은 -30%, 최대 보유 7분.&lt;/p&gt;
&lt;h2 data-heading=&quot;왜 넣었나&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;왜 넣었나&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;왜 넣었나&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실전 투입 전에 dry-run을 먼저 돌렸다. 실제 돈은 안 쓰고 가상으로 매매 결과를 기록하는 방식이다. 50건 넘게 쌓인 데이터를 보니까 승률 58%, 평균 수익 +74%였다. 기대값이 양수였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 &quot;이 정도면 해볼 만하다&quot;고 판단해서 0.5 SOL을 넣었다.&lt;/p&gt;
&lt;h2 data-heading=&quot;뭐가 문제였나&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;뭐가 문제였나&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;뭐가 문제였나&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토큰이 '러그풀'을 당했다. 러그풀이란 토큰 개발자나 초기 투자자가 유동성을 갑자기 빼버리는 걸 말한다. 유동성이 사라지면 아무도 그 토큰을 사주지 않는다. 팔고 싶어도 팔 수 없는 상태가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;봇은 손절 기준인 -30%에 도달하면 팔도록 설계되어 있다. 그런데 러그풀이 나면 팔 수가 없다. Jupiter(솔라나 대표 DEX 어그리게이터)에서 quote 자체가 안 잡힌다. 팔려고 시도하는데 이 토큰 살 사람이 없어요가 되는 거다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-30% 손절이 -100% 전손으로 바뀌는 순간이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dry-run 데이터를 다시 보면 손절 케이스 55건의 pnl이 전부 -100%였다. dry-run에서 이미 이 문제가 보였는데 내가 간과했다.&lt;/p&gt;
&lt;h2 data-heading=&quot;얼마나 잃었나&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;얼마나 잃었나&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;얼마나 잃었나&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot 2026-05-01 at 10.15.49 PM.png&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;876&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cv1fMf/dJMcahdczHH/T0zTGH0kxW9khNCCNkVKdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cv1fMf/dJMcahdczHH/T0zTGH0kxW9khNCCNkVKdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cv1fMf/dJMcahdczHH/T0zTGH0kxW9khNCCNkVKdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcv1fMf%2FdJMcahdczHH%2FT0zTGH0kxW9khNCCNkVKdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;782&quot; height=&quot;876&quot; data-filename=&quot;Screenshot 2026-05-01 at 10.15.49 PM.png&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;876&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.9 SOL 전액.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;건당 0.02 SOL씩 매수하니까 약 25번 매수가 가능하다. 그 중 절반 가까이가 러그풀로 전손, 나머지도 제대로 익절하기 전에 날아갔을 것이다. 솔직히 세세하게 추적하지 못했다. 봇이 자동으로 돌아가는 사이에 다 날아간 거라 체감도 별로 없었다.&lt;/p&gt;
&lt;h2 data-heading=&quot;보완해서 다시 돌리나&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;보완해서 다시 돌리나&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;보완해서 다시 돌리나&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;그렇다.&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 가지를 고쳤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째, &lt;b&gt;강제 매도 로직 추가&lt;/b&gt;. Jupiter quote가 3번 연속 실패하면 슬리피지를 50%로 올려서 강제 매도를 시도한다. 정상적인 상황에서 50% 슬리피지는 말이 안 되지만, 러그풀 직후라면 50% 손실이라도 회수하는 게 전손보다 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째, &lt;b&gt;익절 기준 조정&lt;/b&gt;. +200%에서 +80%로 낮췄다. dry-run 124건을 분석해보니 +200%를 달성한 케이스가 0건이었다. 기준이 너무 높아서 수익 구간에 진입해도 계속 들고 있다가 결국 손실로 끝나는 경우가 많았다. +80%면 더 자주 익절하고 나올 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당분간 dry-run 다시 돌리면서 새 파라미터로 충분한 데이터를 쌓은 다음에 다시 소액으로 시작할 계획이다.&lt;/p&gt;
&lt;h2 data-heading=&quot;밈코인 봇을 돌려보고 싶다면&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;밈코인 봇을 돌려보고 싶다면&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;밈코인 봇을 돌려보고 싶다면&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몇 가지 전제가 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 전용 지갑을 쓸 것.&lt;/b&gt; 기존에 쓰던 지갑에 넣지 말고, 봇 전용으로 새 지갑을 만들어서 소액만 넣는다. 잃어도 괜찮은 금액만.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) dry-run 먼저.&lt;/b&gt; 실전 투입 전에 가상 매매로 충분한 데이터를 쌓아야 한다. 50건 이상, 기대값이 명확하게 양수일 때 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3) 러그풀은 막을 수 없다.&lt;/b&gt; 아무리 필터를 잘 만들어도 러그풀을 100% 피할 방법은 없다. 건당 매수 금액을 작게 유지해서 한 번 전손이 나도 전체 자본에 미치는 영향을 줄이는 수밖에 없다.&lt;/p&gt;
&lt;h2 data-heading=&quot;정리&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;정리&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;정리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항목 내용&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;투입 금액&lt;/td&gt;
&lt;td&gt;0.5 SOL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;결과&lt;/td&gt;
&lt;td&gt;전액 손실&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원인&lt;/td&gt;
&lt;td&gt;러그풀 &amp;rarr; 유동성 소멸 &amp;rarr; 강제 매도 불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;보완&lt;/td&gt;
&lt;td&gt;강제 매도 로직 + 익절 기준 하향&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;다음 계획&lt;/td&gt;
&lt;td&gt;dry-run 재가동 &amp;rarr; 데이터 확인 후 소액 재투입&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 쓰는 이유는 봇 돌리면 돈 번다는 환상을 깨고 싶어서다. 봇은 도구다. 설계가 잘못되면 자동으로 잃는다. 그리고 밈코인은 변수가 너무 많다. 그래도 계속 돌린다. 이번에 배운 것들을 반영했고, 구조 자체는 맞다고 생각하기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 예전엔 이런 스나이핑 봇을 사서 돌리려면 진짜 몇천만원씩 줬어야 했던 것 같은데.. 세상이 너무 좋아졌다. 그러니 더더욱 즐기고 싶다.&amp;nbsp;&lt;/p&gt;</description>
      <author>수풍</author>
      <guid isPermaLink="true">https://hunslog.tistory.com/363</guid>
      <comments>https://hunslog.tistory.com/363#entry363comment</comments>
      <pubDate>Fri, 1 May 2026 22:16:40 +0900</pubDate>
    </item>
    <item>
      <title>오랜만에 살펴본 빗코 생태계 (feat. 룬스톤)</title>
      <link>https://hunslog.tistory.com/362</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Runestone은 공짜로 받은 사람만 웃었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;573&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZT0bN/dJMcadPlhmh/b79aVFxsBfpl8cfycnzDTK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZT0bN/dJMcadPlhmh/b79aVFxsBfpl8cfycnzDTK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZT0bN/dJMcadPlhmh/b79aVFxsBfpl8cfycnzDTK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZT0bN%2FdJMcadPlhmh%2Fb79aVFxsBfpl8cfycnzDTK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;613&quot; height=&quot;573&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;573&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 가격은 $104. 전성기 시총이 $3.38억이었는데, 지금은 $1,170만이다. 97% 빠졌다.&lt;/p&gt;
&lt;h2 data-heading=&quot;Runestone이 뭔데&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;Runestone이 뭔데&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Runestone이 뭔데&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024년 3월 14일, 비트코인 Ordinals 생태계에서 가장 큰 에어드랍이 있었다. 조건은 하나였다. &lt;b&gt;비트코인 주소에 Ordinals를 3개 이상 보유하고 있을 것.&lt;/b&gt; 블록 826,600 기준으로. 조건 맞으면 Runestone NFT 하나를 무료로 받았다. 총 112,383개 배포. 에어드랍 이틀 만에 전체 체인 통틀어 마켓캡 3위까지 올라갔다. $300 이상 하던 NFT가 무료로 생긴 사람들은 당연히 웃었다.&lt;/p&gt;
&lt;h2 data-heading=&quot;지금 사면 어떻게 되나&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;지금 사면 어떻게 되나&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;지금 사면 어떻게 되나&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$104에 사면? 솔직히 모른다. 하지만 전성기 대비 97% 빠진 프로젝트를 지금 사는 건 다음 불장에서 다시 전성기 가격을 기대하는 거다. 가능은 하다. 불가능하진 않다. 근데 그 $104로 다른 초기 프로젝트 민팅에 쓰는 게 기대수익이 더 높다. 이미 유명해진 프로젝트는 리스크 대비 수익이 낮다. 모두가 아는 순간 기회는 이미 지나간 거다.&lt;/p&gt;
&lt;h2 data-heading=&quot;에어드랍의 법칙&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;에어드랍의 법칙&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;에어드랍의 법칙&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Runestone을 보면서 확인한 패턴이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;공짜로 받은 사람이 이긴다.&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크립토 에어드랍은 대부분 이렇다. 초기에 생태계 참여해서 공짜로 받은 사람들 &amp;rarr; 고점에서 팜 &amp;rarr; 나중에 알고 들어온 사람들이 물량 받아줌. Runestone도 마찬가지. Ordinals를 일찍부터 들고 있던 사람들이 에어드랍 받고 팔았다. 뒤에 들어간 사람들은 $300에 샀다가 $104에 들고 있다.&lt;/p&gt;
&lt;h2 data-heading=&quot;그럼 어떻게 해야 하나&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;그럼 어떻게 해야 하나&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;그럼 어떻게 해야 하나&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유명해지기 전에 들어가야 한다. Runestone이 에어드랍 한다고 했을 때, 아직 가격 형성도 안 됐을 때, 그 시점에 Ordinals를 들고 있어야 했다. 지금 비트코인 Runes 생태계에서 그 타이밍을 찾는다면, 아직 유명하지 않은 프로젝트, 에어드랍 조건이 있는 프로젝트, 초기 민터에게 혜택을 주는 프로젝트.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Runestone의 다음 버전이 어딘가에서 준비되고 있을 거다. 그걸 먼저 찾는 게 전략이다. 97% 빠진 Runestone을 보면서 배운 건 단 하나다. &lt;b&gt;타이밍이 전부고, 공짜가 최고다.&lt;/b&gt;&lt;/p&gt;</description>
      <author>수풍</author>
      <guid isPermaLink="true">https://hunslog.tistory.com/362</guid>
      <comments>https://hunslog.tistory.com/362#entry362comment</comments>
      <pubDate>Fri, 1 May 2026 10:06:47 +0900</pubDate>
    </item>
    <item>
      <title>AI가 없는 뉴스를 지어냈다. 로컬 LLM 할루시네이션 잡기 솔직 후기</title>
      <link>https://hunslog.tistory.com/361</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;매일 아침 맥미니가 주식 리포트를 자동으로 만든다. Ollama(로컬 LLM)가 뉴스를 분석하고, 종목 추천까지 뽑아준다. 그걸 사이트에 자동 배포한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 리포트를 확인했는데 뭔가 이상했다. 삼성전자 주가가 170,500원이었다. 실제 주가는 222,750원이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 이런 뉴스가 있었다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;삼성전자 1분기 매출 76조원 달성, HBM 출하 확대&quot;&lt;br /&gt;&quot;AT&amp;amp;T CEO John Smith, 구독 서비스 확대 발표&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 뉴스 모두 그날 없었던 뉴스다. AI가 만들어낸 거다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;1254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc3t59/dJMcafzFiyf/x4uQkuCIsDKzHnUGblukE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc3t59/dJMcafzFiyf/x4uQkuCIsDKzHnUGblukE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc3t59/dJMcafzFiyf/x4uQkuCIsDKzHnUGblukE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc3t59%2FdJMcafzFiyf%2Fx4uQkuCIsDKzHnUGblukE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1254&quot; height=&quot;1254&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-heading=&quot;왜 이런 일이 생기나&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;왜 이런 일이 생기나&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;왜 이런 일이 생기나&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조가 잘못됐다. 내가 만든 파이프라인은 이렇다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1. economy_news.py &amp;mdash; RSS 피드에서 뉴스 긁어오기
2. stock_report.py &amp;mdash; 뉴스 텍스트를 Ollama에 던지기
3. Ollama 응답 &amp;mdash; 종목 추천 + 헤드라인 + 시장 분석 JSON
4. git push &amp;rarr; Vercel 자동 배포
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 3번이 문제다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ollama(qwen2.5:14b)는 한국 주식 뉴스를 훈련 데이터로 거의 못 봤다. 그러니까 오늘 뉴스에서 중요한 헤드라인을 뽑아줘라고 하면, 뉴스 내용을 이해하는 게 아니라 &lt;b&gt;한국 경제 뉴스에 있을 법한 것을 생성&lt;/b&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삼성전자 매출 기사, AT&amp;amp;T CEO 발표 &amp;mdash; 다 훈련 데이터 기억에서 나온 거다. 그럴듯해 보이지만 사실이 아니다. 이걸 할루시네이션(hallucination)이라고 한다. LLM이 없는 사실을 만들어내는 현상.&lt;/p&gt;
&lt;h2 data-heading=&quot;처음엔 프롬프트 문제라고 생각했다&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;처음엔 프롬프트 문제라고 생각했다&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;처음엔 프롬프트 문제라고 생각했다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 프롬프트를 강화했다.&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot;&gt;&lt;code&gt;- 반드시 수집된 뉴스에서만 인용할 것
- 없는 뉴스를 만들지 말 것
- 헤드라인은 정확한 제목 그대로 쓸 것
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 이랬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;삼성전자, 2분기 반도체 수요 회복 전망&quot; &amp;mdash; 연합뉴스 경제&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처까지 &quot;연합뉴스 경제&quot;라고 붙여서 지어냈다. 프롬프트를 강화해도 소용없었다. AI는 모르는 걸 물어보면 아는 척한다. 그게 LLM의 작동 방식이다.&lt;/p&gt;
&lt;h2 data-heading=&quot;근본 해결 &amp;mdash; AI에게 뉴스 생성을 맡기지 마라&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;근본 해결 &amp;mdash; AI에게 뉴스 생성을 맡기지 마라&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;근본 해결 AI에게 뉴스 생성을 맡기지 마라&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각을 바꿨다. AI가 헤드라인을 &quot;생성&quot;하게 하지 말고, RSS에서 직접 뽑으면 된다.&lt;/p&gt;
&lt;pre class=&quot;xquery&quot;&gt;&lt;code&gt;IMPACT_KEYWORDS = {
    &quot;high&quot;: [&quot;금리&quot;, &quot;인플레이션&quot;, &quot;CPI&quot;, &quot;FOMC&quot;, &quot;반도체&quot;, &quot;HBM&quot;, &quot;earnings&quot;],
    &quot;mid&quot;:  [&quot;주가&quot;, &quot;상승&quot;, &quot;하락&quot;, &quot;실적&quot;, &quot;전망&quot;, &quot;acquisition&quot;],
}

def classify_headlines(parsed):
    def score(item):
        text = item[&quot;title&quot;] + &quot; &quot; + item[&quot;desc&quot;]
        if any(k in text for k in IMPACT_KEYWORDS[&quot;high&quot;]):
            return 2
        if any(k in text for k in IMPACT_KEYWORDS[&quot;mid&quot;]):
            return 1
        return 0

    kr_sorted = sorted(parsed[&quot;kr&quot;], key=score, reverse=True)
    us_sorted = sorted(parsed[&quot;us&quot;], key=score, reverse=True)
    return kr_sorted[:5], us_sorted[:5]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RSS에서 받은 기사들을 키워드 기준으로 점수 매겨서 상위 5개씩 뽑는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 Ollama가 뱉은 헤드라인은 버리고, 진짜 헤드라인을 주입한다.&lt;/p&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;news_data = call_ollama(news_text)
# AI가 만든 헤드라인 &amp;rarr; 버림
news_data[&quot;kr_headlines&quot;] = real_headlines_from_rss
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과:&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot;&gt;&lt;code&gt;  오늘의 헤드라인
- 두산테스나, 반도체 장비 수주 확대 &amp;mdash; 한국경제 증권
- 삼성전자 가전 OEM 확대 계획 발표 &amp;mdash; 매일경제 증권
- GM beats Q1 earnings estimates &amp;mdash; CNBC
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 뉴스다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-heading=&quot;동시에 주가도 틀렸다&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;동시에 주가도 틀렸다&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;동시에 주가도 틀렸다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;1254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ATRas/dJMcadogBJa/0YZawphmhK25zhv8yLxeqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ATRas/dJMcadogBJa/0YZawphmhK25zhv8yLxeqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ATRas/dJMcadogBJa/0YZawphmhK25zhv8yLxeqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FATRas%2FdJMcadogBJa%2F0YZawphmhK25zhv8yLxeqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1254&quot; height=&quot;1254&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 헤드라인을 지어내는 동안, 주가도 틀렸다. 원인은 yfinance 배치 다운로드였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 기존 코드 &amp;mdash; 이게 문제
df = yf.download([&quot;005930.KS&quot;, &quot;000660.KS&quot;, ...], period=&quot;1d&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;yf.download()는 여러 종목을 한 번에 받는 함수인데, 네트워크 오류 하나만 생겨도 전체가 빈 DataFrame으로 반환된다. 에러 메시지도 없다. 주가 없음 &amp;rarr; AI가 훈련 데이터 기억에서 채움 &amp;rarr; 2~3년 전 주가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;개별 조회로 바꿨다.&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def fetch_prices(tickers):
    prices = {}
    for tk in tickers:
        try:
            hist = yf.Ticker(tk).history(period=&quot;5d&quot;)
            if not hist.empty:
                prices[tk] = float(hist[&quot;Close&quot;].iloc[-1])
        except Exception as e:
            print(f&quot;[{tk}] 실패: {e}&quot;)
    return prices
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나가 실패해도 나머지는 정상으로 받아온다. 그리고 종목별 유효 범위도 현실화했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 기존 &amp;rarr; 수정
삼성전자: (30000, 180000) &amp;rarr; (30000, 500000)  # 실제 22만원, 범위 초과로 버려지던 것
SK하이닉스: (60000, 500000) &amp;rarr; (60000, 2000000)
TSMC: (50, 300) &amp;rarr; (50, 700)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PRICE_VALID 범위가 2022년 기준이었다. 그 사이 주가가 많이 올랐다.&lt;/p&gt;
&lt;h2 data-heading=&quot;RSS 소스도 절반이 죽어있었다&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;RSS 소스도 절반이 죽어있었다&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;RSS 소스도 절반이 죽어있었다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;국내 RSS 피드 12개 중 3개만 정상이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;이데일리: XML 파싱 에러
머니투데이: 410 Gone
조선비즈: 404 Not Found
파이낸셜뉴스: 404 Not Found
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;죽은 피드 지우고 살아있는 거 추가했다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;한국경제 증권 피드 추가&lt;/li&gt;
&lt;li&gt;매일경제 증권 피드 추가&lt;/li&gt;
&lt;li&gt;동아닷컴 경제 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;국내 기사 수: 45건 &amp;rarr; 80건.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RSS 피드는 가끔 확인해야 한다. 조용히 죽어있어도 아무도 안 알려준다.&lt;/p&gt;
&lt;h2 data-heading=&quot;수치 계산도 AI에게 맡기지 않는다&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;수치 계산도 AI에게 맡기지 않는다&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;수치 계산도 AI에게 맡기지 않는다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매수구간/목표가/손절가도 원래 AI가 계산했다. 현재 주가를 모르는 AI가 계산하면 당연히 틀린다. 후처리로 직접 계산하도록 바꿨다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;price = prices[ticker]  # yfinance 실제 주가
pick[&quot;buy_zone&quot;]  = f&quot;{price * 0.97:,.0f}~{price * 1.01:,.0f}원&quot;  # -3%~+1%
pick[&quot;target&quot;]    = f&quot;{price * 1.12:,.0f}원&quot;                        # +12%
pick[&quot;stop_loss&quot;] = f&quot;{price * 0.93:,.0f}원&quot;                        # -7%
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비율이 고정이라 섬세하진 않다. 그래도 AI가 지어내는 것보단 낫다.&lt;/p&gt;
&lt;h2 data-heading=&quot;결론 &amp;mdash; AI에게 사실 생성을 맡기지 마라&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;결론 &amp;mdash; AI에게 사실 생성을 맡기지 마라&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;결론 AI에게 사실 생성을 맡기지 마라&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 작업에서 배운 건 하나다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LLM이 뭔가를 생성하게 시키면 안 되는 경우가 있다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;사실(Fact)&lt;/b&gt; &amp;mdash; 오늘 뉴스, 실시간 주가, 특정 날짜의 이벤트 &amp;rarr; 외부 데이터 직접 사용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;판단(Judgment)&lt;/b&gt; &amp;mdash; 뉴스 감성, 시장 분위기 요약, 테마 분류 &amp;rarr; AI에게 맡겨도 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI는 모르는 걸 물어보면 아는 척한다. 그게 버그가 아니라 설계다. 훈련 데이터에 없는 정보를 물어보면, 그럴듯한 걸 만들어낸다. 구조를 바꿔서, 사실은 외부에서 가져오고 판단만 AI에게 맡기면 할루시네이션을 막을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;수정 전 수정 후&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;삼성전자 주가&lt;/td&gt;
&lt;td&gt;170,500원 (틀림)&lt;/td&gt;
&lt;td&gt;222,750원 (실제)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;헤드라인&lt;/td&gt;
&lt;td&gt;AI 생성 (없는 뉴스)&lt;/td&gt;
&lt;td&gt;RSS 원문 직접&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;국내 기사&lt;/td&gt;
&lt;td&gt;45건&lt;/td&gt;
&lt;td&gt;80건&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;매수구간&lt;/td&gt;
&lt;td&gt;AI 임의 계산&lt;/td&gt;
&lt;td&gt;현재가 -3%~+1%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내일 리포트가 어떻게 나오는지 지켜볼 예정이다. AI로 무언갈 만든다는 건 재밌다.&amp;nbsp;&lt;/p&gt;</description>
      <author>수풍</author>
      <guid isPermaLink="true">https://hunslog.tistory.com/361</guid>
      <comments>https://hunslog.tistory.com/361#entry361comment</comments>
      <pubDate>Tue, 28 Apr 2026 23:44:51 +0900</pubDate>
    </item>
    <item>
      <title>AI랑 3시간 삽질하고 내린 결론 Base 파밍은 결국 손가락이 답</title>
      <link>https://hunslog.tistory.com/360</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;수수료 $10으로 볼륨 $10만 만들기.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ejQa0K/dJMcaiiNE2s/vsJddX1kp5UKIpedwDfjnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ejQa0K/dJMcaiiNE2s/vsJddX1kp5UKIpedwDfjnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ejQa0K/dJMcaiiNE2s/vsJddX1kp5UKIpedwDfjnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FejQa0K%2FdJMcaiiNE2s%2FvsJddX1kp5UKIpedwDfjnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1024&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문장 보고 당연히 자동화 생각했죠. 저는 봇 만드는 사람이니까. 결론부터 말할게요. 3시간 삽질 끝에 &quot;손가락으로 눌러라&quot;는 결론 나왔습니다. 그 과정 솔직하게 씁니다.&lt;/p&gt;
&lt;h2 data-heading=&quot;발단: 크립토메이지 블로그&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;발단: 크립토메이지 블로그&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;발단: 크립토메이지님 블로그&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네이버 블로그에서 Base 에어드랍 파밍 가이드를 봤습니다. 핵심은 이거였어요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;USDC &amp;rarr; USDT: Aerodrome에서 스왑 (수수료 0.05%)&lt;/li&gt;
&lt;li&gt;USDT &amp;rarr; USDC: &lt;b&gt;Base 앱 인앱 스왑&lt;/b&gt; (수수료 &lt;b&gt;0%&lt;/b&gt;)&lt;/li&gt;
&lt;li&gt;이걸 반복하면 $10만 볼륨에 수수료 $10~25&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 이게 의미 있냐면, Base 재단이 온체인 활동량을 나중에 인센티브 배정에 쓸 가능성이 높거든요. 트랜잭션 수, 스왑 볼륨, 활동 지속 일수. 이 세 가지를 쌓으면 됩니다. 읽자마자 생각했죠. &quot;이거 봇으로 돌리면 되겠다.&quot;&lt;/p&gt;
&lt;h2 data-heading=&quot;1차 시도: iPhone 미러링으로 화면 클릭&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;1차 시도: iPhone 미러링으로 화면 클릭&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1차 시도: iPhone 미러링으로 화면 클릭&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맥북에서 iPhone Mirroring으로 아이폰 화면을 제어하는 방법입니다. PyAutoGUI로 스왑 버튼 좌표 찍고 자동 클릭하는 거죠. 좌표 찾고, PIN 자동 입력 스크립트 만들고... 근데 문제가 생겼습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스왑마다 PIN이 나옵니다.&lt;/b&gt; 매번요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 금액이랑 방향(USDC&amp;rarr;USDT 또는 반대)은 손으로 설정해야 합니다. 반자동도 아니고 그냥 PIN 입력만 자동화한 거였어요. 이게 무슨 자동화야 싶었습니다.&lt;/p&gt;
&lt;h2 data-heading=&quot;2차 시도: web3.py로 직접 컨트랙트 호출&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;2차 시도: web3.py로 직접 컨트랙트 호출&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2차 시도: web3.py로 직접 컨트랙트 호출&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발상을 바꿨습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;Base 앱 통해서 스왑하나, 직접 Aerodrome 컨트랙트 부르나, 온체인에서 결과는 같지 않나?&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맞는 말이었습니다. 그래서 web3.py로 Aerodrome Router를 직접 호출하는 스크립트를 짰습니다. 3개 계정 순환, USDC&amp;harr;USDT 왕복, 랜덤 딜레이까지. 테스트 돌려보니 실제로 작동했습니다. 트랜잭션 성공.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 여기서 중요한 걸 발견했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Aerodrome은 금액이 커지면 슬리피지가 폭발합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스왑 금액 실제 수수료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$100&lt;/td&gt;
&lt;td&gt;$0.05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$500&lt;/td&gt;
&lt;td&gt;$2.20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$1,000&lt;/td&gt;
&lt;td&gt;&lt;b&gt;$38.40&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$1,000 단위로 100번 스왑하면 수수료만 $3,800 나옵니다. 볼륨 $10만 만들려다가 파산할 뻔했어요. &lt;b&gt;반드시 $100 이하 소액으로&lt;/b&gt; 해야 합니다.&lt;/p&gt;
&lt;h2 data-heading=&quot;진짜 문제: Base 앱 인앱 스왑의 정체&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;진짜 문제: Base 앱 인앱 스왑의 정체&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;진짜 문제: Base 앱 인앱 스왑의 정체&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 Base 앱 인앱 스왑은 왜 수수료가 0%야?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;궁금해서 실제 트랜잭션을 뜯어봤습니다. Blockscout에서 확인한 결과:&lt;/p&gt;
&lt;pre class=&quot;oxygene&quot;&gt;&lt;code&gt;컨트랙트: 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
method:   handleOps
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 뭔지 아세요? &lt;b&gt;ERC-4337 EntryPoint&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말하면 Base 앱 인앱 스왑은 일반 트랜잭션이 아닙니다. &quot;Account Abstraction(AA)&quot;이라는 구조로 작동하는데, 번들러라는 중개자가 가스비를 대신 내줍니다. 그래서 유저 입장에서 수수료가 0%인 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 이 구조를 web3.py로 복제할 수 없다는 거예요. AA 번들러랑 페이마스터 연동이 필요한데, 그냥 개인키로 컨트랙트 직접 부르는 방식으로는 안 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 Base 앱 인앱 스왑은 &lt;b&gt;반드시 Base 앱에서 손으로 눌러야&lt;/b&gt; 합니다.&lt;/p&gt;
&lt;h2 data-heading=&quot;결론: 뭘 선택할 것인가&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;결론: 뭘 선택할 것인가&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;결론: 뭘 선택할 것인가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 가지 선택지만 남았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Aerodrome 양방향 완전 자동화&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;수수료 ~$53 / $10만 볼륨&lt;/li&gt;
&lt;li&gt;한 번 실행하면 완전 무인 운영&lt;/li&gt;
&lt;li&gt;SWAP_AMOUNT_USD = 100 설정 필수&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 블로그 원래 전략 (인앱 + Aerodrome 편도)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;수수료 ~$25 / $10만 볼륨&lt;/li&gt;
&lt;li&gt;인앱 스왑은 손으로 눌러야 함&lt;/li&gt;
&lt;li&gt;$28 아끼려고 손가락 수고&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 지금 1번으로 보류해뒀습니다. 솔직히 에어드랍 확정도 아니고, Base 재단이 이 데이터를 실제로 쓸지도 모르거든요. $53 태워서 볼륨 쌓을 만큼 확신이 없어요.&lt;/p&gt;
&lt;h2 data-heading=&quot;배운 것&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;배운 것&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;배운 것&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삽질했지만 건진 게 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;AA(Account Abstraction)&lt;/b&gt;: 가스비 대납 구조, 점점 많은 앱이 씁니다. 알아두면 나중에 도움 됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Aerodrome 슬리피지&lt;/b&gt;: stable pool도 금액 커지면 슬리피지 폭발. $100 단위가 기본입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;온체인 트랜잭션 분석&lt;/b&gt;: Blockscout에서 컨트랙트 주소랑 method 보면 앱이 어떻게 작동하는지 알 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동화가 항상 답은 아닙니다. 근데 시도해보지 않으면 왜 안 되는지도 모르죠.&lt;/p&gt;</description>
      <category>코인 훈수</category>
      <author>수풍</author>
      <guid isPermaLink="true">https://hunslog.tistory.com/360</guid>
      <comments>https://hunslog.tistory.com/360#entry360comment</comments>
      <pubDate>Mon, 27 Apr 2026 07:16:13 +0900</pubDate>
    </item>
    <item>
      <title>2026 고유가 피해지원금 총정리 최대 60만원, 내가 받을 수 있는지 먼저 확인하자</title>
      <link>https://hunslog.tistory.com/359</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4월 27일부터 신청 시작됩니다. 이 글 하나로 대상 확인 &amp;rarr; 금액 계산 &amp;rarr; 신청까지 끝냅니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔직히 말하면, 이런 지원금 나올 때마다 &quot;나는 해당 안 되겠지&quot; 하고 그냥 지나치는 사람이 생각보다 훨씬 많습니다. 근데 이번 고유가 피해지원금은 다릅니다. &lt;b&gt;전 국민의 70%&lt;/b&gt;, 약 3,256만 명이 받을 수 있습니다. 거의 열 명 중 일곱 명이에요. 신청 안 하면? 그냥 그 돈 그대로 증발합니다. 환급도 없고, 다음 기회도 없어요. 5분만 읽고 신청하세요. 정말 그 가치가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0OBRb/dJMcafTV4qU/U0z0MEWcRkajN95PU5Jl0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0OBRb/dJMcafTV4qU/U0z0MEWcRkajN95PU5Jl0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0OBRb/dJMcafTV4qU/U0z0MEWcRkajN95PU5Jl0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0OBRb%2FdJMcafTV4qU%2FU0z0MEWcRkajN95PU5Jl0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1024&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-heading=&quot;고유가 피해지원금이 뭔가요?&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;고유가 피해지원금이 뭔가요?&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;고유가 피해지원금이 뭔가요?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 유가 상승으로 인한 가계&amp;middot;소상공인 부담을 완화하기 위해 정부가 &lt;b&gt;전쟁 추경 예산&lt;/b&gt;으로 편성한 지원금입니다. 행정안전부 주관으로 지방자치단체와 함께 지급하며, 현금이 아닌 &lt;b&gt;카드 포인트 또는 지역사랑상품권&lt;/b&gt; 형태로 받습니다.&lt;/p&gt;
&lt;h2 data-heading=&quot;내가 받을 수 있나요? 대상자 확인&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;내가 받을 수 있나요? 대상자 확인&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;내가 받을 수 있나요? 대상자 확인&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크게 두 그룹으로 나뉩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-heading=&quot;1차 대상자 (우선지원 취약계층)&quot; data-ke-size=&quot;size23&quot;&gt;1차 대상자 (우선지원 취약계층)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기초생활수급자&lt;/li&gt;
&lt;li&gt;차상위계층&lt;/li&gt;
&lt;li&gt;한부모가족&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별도 소득 조회 없이 자동 해당됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-heading=&quot;2차 대상자 (소득 하위 70%)&quot; data-ke-size=&quot;size23&quot;&gt;2차 대상자 (소득 하위 70%)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;소득 기준표입니다. 본인 가구가 아래 기준 이하면 받을 수 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가구 규모 월 소득 기준 (하위 70%)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1인 가구&lt;/td&gt;
&lt;td&gt;약 385만원 이하&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2인 가구&lt;/td&gt;
&lt;td&gt;약 630만원 이하&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3인 가구&lt;/td&gt;
&lt;td&gt;약 810만원 이하&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4인 가구&lt;/td&gt;
&lt;td&gt;약 990만원 이하&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;건강보험료 기준으로 판단하며, 정확한 대상 여부는 신청 시 자동 조회됩니다. 일단 신청해보는 게 정답입니다.&lt;/p&gt;
&lt;h2 data-heading=&quot;얼마나 받나요?&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;얼마나 받나요?&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;얼마나 받나요?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-heading=&quot;1차 대상자 (취약계층) 지급액&quot; data-ke-size=&quot;size23&quot;&gt;1차 대상자 (취약계층) 지급액&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구분 기본 비수도권&amp;middot;인구감소지역 추가 최대&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;기초생활수급자&lt;/td&gt;
&lt;td&gt;55만원&lt;/td&gt;
&lt;td&gt;+5만원&lt;/td&gt;
&lt;td&gt;&lt;b&gt;60만원&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;차상위계층&amp;middot;한부모가족&lt;/td&gt;
&lt;td&gt;45만원&lt;/td&gt;
&lt;td&gt;+5만원&lt;/td&gt;
&lt;td&gt;&lt;b&gt;50만원&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-heading=&quot;2차 대상자 (일반 국민) 지급액&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-heading=&quot;2차 대상자 (일반 국민) 지급액&quot; data-ke-size=&quot;size23&quot;&gt;2차 대상자 (일반 국민) 지급액&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거주 지역 지급액&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;수도권&lt;/td&gt;
&lt;td&gt;10만원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;비수도권 일반&lt;/td&gt;
&lt;td&gt;15만원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;인구감소 우대지역&lt;/td&gt;
&lt;td&gt;20만원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;인구감소 특별지역&lt;/td&gt;
&lt;td&gt;25만원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수도권에 사시면 10만원, 지방이면 15만원 이상입니다.&lt;/p&gt;
&lt;h2 data-heading=&quot;언제 신청하나요?&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;언제 신청하나요?&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;언제 신청하나요?&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-heading=&quot;1차 신청&quot; data-ke-size=&quot;size23&quot;&gt;1차 신청&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2026년 4월 27일(월) ~ 5월 8일(금)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기초생활수급자, 차상위계층, 한부모가족&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-heading=&quot;2차 신청&quot; data-ke-size=&quot;size23&quot;&gt;2차 신청&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2026년 5월 18일(월) ~ 7월 3일(금)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소득 하위 70% 일반 국민&lt;/li&gt;
&lt;li&gt;1차 때 신청 못 한 우선지원 대상자&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1차에 받으셨으면 2차 신청 불가합니다.&lt;/b&gt; 중복 수령 안 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사용 기한: 2026년 8월 31일까지&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;기한 내 못 쓴 금액은 환불 없이 자동 소멸됩니다. 꼭 쓰세요.&lt;/p&gt;
&lt;h2 data-heading=&quot;어떻게 신청하나요?&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;어떻게 신청하나요?&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;어떻게 신청하나요?&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-heading=&quot;어떻게 신청하나요?&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;어떻게 신청하나요?&quot; data-ke-size=&quot;size26&quot;&gt;온라인 신청 (추천)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 앱&amp;middot;홈페이지에서 신청할 수 있습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;카드사 앱&lt;/b&gt;: 신한카드, KB국민카드, 삼성카드, 현대카드, 롯데카드 등&lt;/li&gt;
&lt;li&gt;&lt;b&gt;간편결제 앱&lt;/b&gt;: 카카오페이, 네이버페이, 토스&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인터넷뱅킹&lt;/b&gt;: 카카오뱅크, 토스뱅크&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;신청 순서 (카드 포인트 기준)&lt;/b&gt;:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;본인이 주로 쓰는 카드사 앱 실행&lt;/li&gt;
&lt;li&gt;'고유가 피해지원금' 메뉴 찾기 (검색창에 검색해도 됨)&lt;/li&gt;
&lt;li&gt;대상 여부 자동 조회&lt;/li&gt;
&lt;li&gt;포인트 충전 신청 완료&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카드 앱 하나면 5분 안에 끝납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-heading=&quot;오프라인 신청&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;오프라인 신청&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주민센터 방문&lt;/li&gt;
&lt;li&gt;은행 영업점 방문&lt;/li&gt;
&lt;li&gt;신분증 지참 필수&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-heading=&quot;사전 알림 신청 (놓치지 않으려면)&quot; data-ke-size=&quot;size23&quot;&gt;사전 알림 신청 (놓치지 않으려면)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네이버앱, 카카오톡, 토스 등 &lt;b&gt;20개 모바일 앱&lt;/b&gt;에서 '고유가 피해지원금 알림' 사전 신청 가능합니다. 신청일 이틀 전에 금액&amp;middot;신청 방법을 미리 알려줍니다.&lt;/p&gt;
&lt;h2 data-heading=&quot;수령 방법은?&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;수령 방법은?&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;수령 방법은?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 가지 중 선택합니다. 수령 방식 특징&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;신용&amp;middot;체크카드 포인트&lt;/td&gt;
&lt;td&gt;기존 카드에 충전, 가장 편리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;선불카드&lt;/td&gt;
&lt;td&gt;카드 없는 분도 OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;지역사랑상품권&lt;/td&gt;
&lt;td&gt;지역 내 소비 유도&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본인이 신청 시 선택하면 되고, &lt;b&gt;신청 후에는 카드사 변경 불가&lt;/b&gt;합니다. 신중하게 선택하세요.&lt;/p&gt;
&lt;h2 data-heading=&quot;어디서 쓸 수 있나요?&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;어디서 쓸 수 있나요?&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;어디서 쓸 수 있나요?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;매출액 30억원 이하 소상공인 매장&lt;/b&gt;에서 사용 가능합니다. 쉽게 말하면 동네 마트, 음식점, 미용실, 병원, 편의점 등 대부분의 가게에서 씁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사용 불가 업종:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유흥주점, 노래방 등 유흥업종&lt;/li&gt;
&lt;li&gt;카지노 등 사행업종&lt;/li&gt;
&lt;li&gt;대형마트, 백화점, 면세점&lt;/li&gt;
&lt;li&gt;온라인 쇼핑몰&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-heading=&quot;꼭 알아야 할 주의사항&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;꼭 알아야 할 주의사항&quot; data-ke-size=&quot;size26&quot;&gt;꼭 알아야 할 주의사항&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① 피싱 문자 조심&lt;/b&gt;&lt;br /&gt;정부와 카드사는 &lt;b&gt;URL이 포함된 문자메시지를 발송하지 않습니다.&lt;/b&gt; 링크 클릭하라는 문자 왔으면 100% 사기입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;② 미사용 금액 소멸&lt;/b&gt;&lt;br /&gt;8월 31일까지 못 쓴 돈은 돌려받을 수 없습니다. 잊지 말고 꼭 소진하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;③ 신청 후 변경 불가&lt;/b&gt;&lt;br /&gt;카드사 선택, 수령 방식 모두 신청 후 변경 안 됩니다. 신청 전에 한 번 더 확인하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;④ 1인당 지급&lt;/b&gt;&lt;br /&gt;가구당이 아니라 1인당입니다. 4인 가족이면 각자 신청해야 합니다.&lt;/p&gt;
&lt;h2 data-heading=&quot;자주 묻는 질문 (FAQ)&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;자주 묻는 질문 (FAQ)&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자주 묻는 질문 (FAQ)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 건강보험 피부양자인데 받을 수 있나요?&lt;/b&gt;&lt;br /&gt;A. 받을 수 있습니다. 피부양자도 독립적인 1인으로 계산됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 대상자인지 어떻게 확인하나요?&lt;/b&gt;&lt;br /&gt;A. 카드사 앱에서 신청하면 자동으로 조회됩니다. 별도 서류 필요 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 주민센터에 꼭 가야 하나요?&lt;/b&gt;&lt;br /&gt;A. 온라인 신청 가능합니다. 카드사 앱이나 토스&amp;middot;카카오페이에서 신청하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 지역사랑상품권으로 받으면 뭐가 다른가요?&lt;/b&gt;&lt;br /&gt;A. 해당 지역 내 가맹점에서만 사용 가능합니다. 지역에서 다 소비할 분들께 유리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 내년에도 신청할 수 있나요?&lt;/b&gt;&lt;br /&gt;A. 이번 지원금은 2026년 한시적 지원입니다. 미신청 시 재신청 기회 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 직장인도 받나요?&lt;/b&gt;&lt;br /&gt;A. 소득 하위 70% 기준이면 직장인도 받습니다. 월 소득 기준표 확인하세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;마무리 &amp;mdash; 신청하지 않으면 0원입니다&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;마무리 신청하지 않으면 0원입니다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 고유가 피해지원금, 정리하면 이렇습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;대상&lt;/b&gt;: 전 국민 70% (약 3,256만 명)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;금액&lt;/b&gt;: 최소 10만원 ~ 최대 60만원&lt;/li&gt;
&lt;li&gt;&lt;b&gt;1차 신청&lt;/b&gt;: 4월 27일 ~ 5월 8일 (취약계층)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;2차 신청&lt;/b&gt;: 5월 18일 ~ 7월 3일 (일반 국민)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;신청 방법&lt;/b&gt;: 카드사 앱, 토스, 카카오페이 등&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카드 앱 켜고 검색창에 '고유가 피해지원금' 치면 5분 안에 끝납니다. 신청 안 하면 그냥 사라지는 돈입니다. 지금 바로 확인해보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관련 공식 사이트: 행정안전부 고유가 피해지원금 (mois.go.kr)&lt;/p&gt;
&lt;h2 data-heading=&quot;참고 출처&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;참고 출처&quot; data-ke-size=&quot;size26&quot;&gt;참고 출처&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;행정안전부: &lt;a href=&quot;https://www.mois.go.kr/frt/sub/a06/b07/highOilPriceSupport/screen.do&quot;&gt;https://www.mois.go.kr/frt/sub/a06/b07/highOilPriceSupport/screen.do&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KB의 생각: &lt;a href=&quot;https://kbthink.com/life/daily/high-oil-price-relief-fund.html&quot;&gt;https://kbthink.com/life/daily/high-oil-price-relief-fund.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;카드고릴라: &lt;a href=&quot;https://www.card-gorilla.com/contents/detail/4236&quot;&gt;https://www.card-gorilla.com/contents/detail/4236&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;정책브리핑: &lt;a href=&quot;https://www.korea.kr/news/policyNewsView.do?newsId=148963023&quot;&gt;https://www.korea.kr/news/policyNewsView.do?newsId=148963023&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>수풍</author>
      <guid isPermaLink="true">https://hunslog.tistory.com/359</guid>
      <comments>https://hunslog.tistory.com/359#entry359comment</comments>
      <pubDate>Sun, 26 Apr 2026 22:25:48 +0900</pubDate>
    </item>
    <item>
      <title>printr 뱅어봇 제작</title>
      <link>https://hunslog.tistory.com/358</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-heading=&quot;왜 만들었냐면&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Printr 뱅어 봇 제작&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔라나에서 새 토큰이 올라오는 순간 자동으로 사는 봇을 만들었다. 이름은 &quot;뱅어봇&quot;. 신규 토큰이 발행되면 바로 낚아채는 느낌이라고 붙였다.&lt;/p&gt;
&lt;h2 data-heading=&quot;왜 만들었냐면&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;왜 만들었냐면&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;왜 만들었냐면&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔라나에서 밈코인 하나 터지면 발행 직후 몇 분 만에 수십 배 간다. 근데 사람이 직접 보다가 사면 이미 늦다. 그 타이밍을 기계한테 맡기자는 거였다. Printr.money라는 플랫폼이 있다. 새 토큰 발행 플랫폼인데, 여기서 토큰이 생성될 때마다 특정 프로그램 주소에 트랜잭션이 찍힌다. 그 주소를 실시간으로 모니터링하다가, 새 토큰 감지되면 &amp;rarr; 자동 매수.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이론상 완벽해 보였다.&lt;/p&gt;
&lt;h2 data-heading=&quot;첫 번째 삽질 &amp;mdash; Jupiter API가 죽어있었다&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;첫 번째 삽질 &amp;mdash; Jupiter API가 죽어있었다&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;첫 번째 삽질 , Jupiter API가 죽어있었다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;봇 다 만들고 돌려봤는데 매수가 안 됐다. 에러 메시지가 이상했다. quote-api.jup.ag가 DNS 조회 실패라고 나오는 거다. Jupiter는 솔라나 최대 DEX 애그리게이터인데, 그게 주소가 바뀌었다는 걸 모르고 있었던 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고 보니 Jupiter가 URL을 이전했다. quote-api.jup.ag &amp;rarr; lite-api.jup.ag/swap/v1. 공식 문서 보면 나오는 얘기였는데 예전 코드를 그냥 쓰고 있었던 거다. 코드 2줄 고쳤더니 됐다.&lt;/p&gt;
&lt;h2 data-heading=&quot;두 번째 삽질 &amp;mdash; 스캠을 걸러야 한다&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;두 번째 삽질 &amp;mdash; 스캠을 걸러야 한다&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;두 번째 삽질 , 스캠을 걸러야 한다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 새 토큰 다 매수하면 되지 않나? 싶었는데 아니다. 솔라나에서 하루에 생성되는 토큰이 수천 개다. 대부분은 발행하고 5분 뒤에 팀이 LP를 빼는 러그풀이다. 무조건 사면 돈 잃는다. 그래서 점수 필터를 만들었다. 4가지를 체크한다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;발행자 지갑이 오래된 지갑인지 (신규 지갑이면 -50점)&lt;/li&gt;
&lt;li&gt;발행자 SOL 잔고가 있는지&lt;/li&gt;
&lt;li&gt;토큰 홀더가 몇 명인지 (발행 2분 후 체크)&lt;/li&gt;
&lt;li&gt;최근 거래가 활발한지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;80점 만점에 30점 이상일 때만 매수한다. 이 필터 하나가 봇의 핵심이다.&lt;/p&gt;
&lt;h2 data-heading=&quot;매도 전략도 중요하다&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;매도 전략도 중요하다&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;매도 전략도 중요하다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사는 것보다 파는 게 더 어렵다. 솔라나 밈코인은 대부분 발행 후 30분 안에 승부가 난다. 올라가면 급격히 올라가고, 죽으면 유동성이 빠져서 팔기도 힘들어진다. 그래서 3가지 조건을 걸었다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;+200% 도달 시 &amp;rarr; 익절&lt;/li&gt;
&lt;li&gt;-60% 도달 시 &amp;rarr; 손절&lt;/li&gt;
&lt;li&gt;30분 경과 시 &amp;rarr; 무조건 청산&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;30분 강제청산이 제일 중요하다. 미련 두다가 유동성 다 빠지면 팔지도 못한다.&lt;/p&gt;
&lt;h2 data-heading=&quot;친구한테 공유해봤다&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;친구한테 공유해봤다&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;친구한테 공유해봤다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;봇 만들고 나서 친구한테 공유해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1402&quot; data-origin-height=&quot;1122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnkHtw/dJMcaiC4dc3/UGbjFEpmPJ66PG5cjTPys1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnkHtw/dJMcaiC4dc3/UGbjFEpmPJ66PG5cjTPys1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnkHtw/dJMcaiC4dc3/UGbjFEpmPJ66PG5cjTPys1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnkHtw%2FdJMcaiC4dc3%2FUGbjFEpmPJ66PG5cjTPys1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1402&quot; height=&quot;1122&quot; data-origin-width=&quot;1402&quot; data-origin-height=&quot;1122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조를 바꿔서 유저별로 자기 지갑 키를 등록하면 그 지갑으로 개별 거래가 되게 했다. 텔레그램 봇에 /addkey 명령어 치면 다음 메시지로 프라이빗 키를 보내는 방식.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키 없이 /start만 하면 알림만 받는다. 직접 매수하고 싶으면 전용 지갑 따로 만들어서 소액 넣고 키 등록하면 된다.&lt;/p&gt;
&lt;h2 data-heading=&quot;솔직한 현황&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;솔직한 현황&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;솔직한 현황&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 수익 결과를 공개할 단계는 아니다. 필터가 맞는지 검증이 더 필요하다. 다만 확실히 알게 된 게 있다. &quot;자동으로 산다&quot;는 게 핵심이 아니다. &quot;뭘 사지 않을지&quot;를 결정하는 필터가 핵심이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과 나오면 후속 글로 쓸 예정.&lt;/p&gt;</description>
      <category>코인 훈수</category>
      <author>수풍</author>
      <guid isPermaLink="true">https://hunslog.tistory.com/358</guid>
      <comments>https://hunslog.tistory.com/358#entry358comment</comments>
      <pubDate>Fri, 24 Apr 2026 00:10:28 +0900</pubDate>
    </item>
    <item>
      <title>Telegram 409, 봇이 두 개인 줄 몰랐다</title>
      <link>https://hunslog.tistory.com/357</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오픈 클로봇이 며칠째 메시지를 안 받았다. 로그를 보니 이랬다.&lt;/p&gt;
&lt;pre class=&quot;smali&quot;&gt;&lt;code&gt;Telegram API error: {'ok': False, 'error_code': 409,
'description': 'Conflict: terminated by other getUpdates request;
make sure that only one bot instance is running'}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Telegram이 &quot;다른 getUpdates 요청에 의해 종료됨&quot;이라고 한다. 봇 인스턴스가 하나 이상 실행 중이라는 뜻. 근데 나는 봇을 하나만 켜놨다고 생각했다.&lt;/p&gt;
&lt;h2 data-heading=&quot;원인&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;원인&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;원인&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스 목록을 뽑아봤다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;ps aux | grep python | grep -v grep
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 개가 나왔다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;claw_bot.py &amp;mdash; 원래 운영 중인 클로봇&lt;/li&gt;
&lt;li&gt;hunslog_bot.py (PID 98224) &amp;mdash; LaunchAgent로 실행 중&lt;/li&gt;
&lt;li&gt;hunslog_bot.py (PID 95965) &amp;mdash; 좀비 프로세스, 4월 9일부터 살아있었음&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hunslog_bot은 블로그 자동화 봇이다. Telegram으로 명령을 받기 위해 getUpdates를 폴링한다. 그런데 Telegram 토큰을 claw_bot과 같은 걸 쓰고 있었다. 같은 토큰으로 세 개가 동시에 폴링하니까 Telegram이 매번 한 개만 살려두고 나머지를 409로 걷어차는 것. 이전에 openclaw-gateway를 제거해도 409가 안 풀린 이유가 이거였다. 진짜 범인은 hunslog_bot이었는데 openclaw만 보고 있었다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-heading=&quot;수정&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;수정&lt;/b&gt;&lt;/h2&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;kill 95965          # 좀비 프로세스 제거
kill 98224          # hunslog_bot 종료
launchctl unload com.shud.hunslog.plist  # LaunchAgent 해제
launchctl stop com.shud.clawbot
launchctl start com.shud.clawbot         # claw_bot 단독으로 재시작
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재시작 후 로그:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;[2026-04-19] Bot: @shud_claw_bot (슈드 오픈클로봇)
[2026-04-19] Bot is ready! Waiting for messages...
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;409가 사라졌다.&lt;/p&gt;
&lt;h2 data-heading=&quot;교훈&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;교훈&quot; data-ke-size=&quot;size26&quot;&gt;교훈&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;같은 Telegram 봇 토큰은 하나의 getUpdates 연결만 허용한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;봇을 여러 개 운영하면 각각 별도 토큰이 필요하다. @BotFather에서 /newbot으로 만들면 된다. hunslog_bot은 나중에 새 토큰 발급 후 재배포 예정. 지금은 꺼놓은 상태. 프로세스 목록은 가끔씩 확인할 것. 좀비가 조용히 살아서 다른 봇을 방해하고 있을 수 있다.&lt;/p&gt;</description>
      <category>코인 훈수</category>
      <author>수풍</author>
      <guid isPermaLink="true">https://hunslog.tistory.com/357</guid>
      <comments>https://hunslog.tistory.com/357#entry357comment</comments>
      <pubDate>Wed, 22 Apr 2026 23:31:12 +0900</pubDate>
    </item>
    <item>
      <title>Ink 30계정 파밍 세팅했다</title>
      <link>https://hunslog.tistory.com/356</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Ink는 Kraken이 만든 L2 체인이다. 아직 토큰이 없다. 에어드랍이 예상된다. 보통 이런 경우 온체인 활동을 많이 한 지갑에 토큰을 뿌린다. 그래서 30개 지갑을 만들었다. 그리고 전부 자동화했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;896&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/osABO/dJMcabcPyPT/mbTDDfaBHRkfA7cg8RNuT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/osABO/dJMcabcPyPT/mbTDDfaBHRkfA7cg8RNuT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/osABO/dJMcabcPyPT/mbTDDfaBHRkfA7cg8RNuT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FosABO%2FdJMcabcPyPT%2FmbTDDfaBHRkfA7cg8RNuT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1102&quot; height=&quot;896&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;896&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-heading=&quot;왜 30개인가&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;왜 30개인가&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;왜 30개인가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나 잘 하는 것보다 여러 개 중간 이상 하는 게 에어드랍에서는 유리할 때가 있다. 단일 계정이 $10 에어드랍 받을 때, 30개 계정이 각각 $5씩 받으면 $150이다. 물론 이게 항상 맞는 건 아니다. 일부 프로젝트는 계정당 상한을 둬서 하나에 몰아주는 게 낫다. 어떻게 될지 모르니까 분산했다.&lt;/p&gt;
&lt;h2 data-heading=&quot;세팅 과정&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;세팅 과정&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;세팅 과정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;30개 지갑을 만들었다. 프라이빗 키를 안전하게 저장했다. 그다음 각 계정별로 약간의 ETH를 넣었다. 가스비로 쓸 돈이다. ink_farmer라는 스크립트를 만들었다. 30개 계정이 매일 Ink 체인에서 온체인 활동을 한다. 구체적으로는 자기 자신에게 소액 ETH를 전송한다. 금액은 거의 없지만 지갑이 활성화돼있다는 흔적이 된다. 타이밍을 분산시켰다. 30개가 같은 시간에 트랜잭션을 보내면 패턴이 너무 뚜렷하다. 계정마다 날짜를 기반으로 오늘의 전송 시각을 정한다. 내일은 또 다른 시각에 보낸다.&lt;/p&gt;
&lt;h2 data-heading=&quot;실제 결과&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;실제 결과&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;실제 결과&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세팅은 했는데, 절반은 아직 제대로 안 돌아가고 있다. 이유가 단순하다. ETH 충전을 아직 안 했다. 잔액이 없으면 트랜잭션이 안 나간다. 처음에는 일부 계정만 잔액이 있었고, 나머지는 비어있었다. 딜레이 파라미터 문제로 대기가 너무 길어서 한 번도 실행 못 한 계정도 있었다. 파라미터 수정 후 지금은 잔액 있는 계정들은 정상 실행 중이다. 나머지는 ETH 충전하는 대로 켜질 예정이다.&lt;/p&gt;
&lt;h2 data-heading=&quot;Nado 포인트도 연결했다&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;Nado 포인트도 연결했다&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Nado 포인트도 연결했다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Nado DEX가 포인트 시스템을 운영한다. 트레이딩 볼륨에 따라 포인트를 주고, 이게 나중에 $INK로 전환된다. 30계정 중 9개를 나도봇 파밍에 투입했다. 각각 다른 전략을 쓴다. 핑퐁 좁은 갭, 핑퐁 넓은 갭, 추세봇 보수적, 추세봇 공격적 등. 어떤 전략이 포인트를 더 잘 쌓는지 비교해보려고.&lt;/p&gt;
&lt;h2 data-heading=&quot;솔직히 말하면&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;솔직히 말하면&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;솔직히 말하면&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에어드랍이 있을지 없을지 모른다. 있어도 기준이 어떻게 될지 모른다. 열심히 했는데 아무것도 안 나올 수도 있다. 그래서 여기에 큰 자본을 쓰진 않는다. 가스비 정도만. 시간도 자동화했으니 크게 들지 않는다. 기대치를 낮게 잡고, 만약 된다면 좋은 거다. 안 되면 그냥 자동화 연습한 거다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코인 훈수</category>
      <author>수풍</author>
      <guid isPermaLink="true">https://hunslog.tistory.com/356</guid>
      <comments>https://hunslog.tistory.com/356#entry356comment</comments>
      <pubDate>Tue, 21 Apr 2026 23:41:12 +0900</pubDate>
    </item>
    <item>
      <title>launchctl stop 했는데 포지션이 안 닫힌다</title>
      <link>https://hunslog.tistory.com/355</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;봇을 잠깐 멈추려고 launchctl stop com.nadogrid를 쳤다. 오더는 취소됐다. 그런데 포지션이 그대로 남아있었다. ETH 롱이 열린 채로 봇만 꺼진 상태. 이러면 봇이 없으니까 스탑로스도 없다. 그냥 물리는 거다.&lt;/p&gt;
&lt;h2 data-heading=&quot;원인&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;원인&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;원인&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;봇에는 종료 핸들러가 있었다.&lt;/p&gt;
&lt;pre class=&quot;qml&quot;&gt;&lt;code&gt;def graceful_shutdown(signum, frame):
    global running
    print(&quot;\n[BOT] Shutting down gracefully...&quot;)
    running = False

signal.signal(signal.SIGTERM, graceful_shutdown)
signal.signal(signal.SIGINT, graceful_shutdown)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;launchctl stop은 SIGTERM을 보낸다. 핸들러가 받아서 running = False로 루프를 종료한다. 문제는 여기서 끝난다는 거다. 오더 취소, 포지션 종료 없이 그냥 꺼진다. 봇에는 이미 handle_kill()이라는 함수가 있었다. 오더 취소, 포지션 시장가 종료, 실패 시 5회 재시도까지 다 갖춰진 함수다. 근데 종료 핸들러가 그걸 안 부르고 있었다.&lt;/p&gt;
&lt;h2 data-heading=&quot;수정&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;수정&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;수정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄 바꿨다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 수정 전
def graceful_shutdown(signum, frame):
    global running
    print(&quot;\n[BOT] Shutting down gracefully...&quot;)
    running = False

# 수정 후
def graceful_shutdown(signum, frame):
    print(&quot;\n[BOT] Shutting down gracefully...&quot;)
    handle_kill(close_position=True)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;handle_kill(close_position=True)가 알아서 오더 취소 &amp;rarr; 포지션 종료 &amp;rarr; 텔레그램 알림까지 처리한다.&lt;/p&gt;
&lt;h2 data-heading=&quot;교훈&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-heading=&quot;교훈&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;교훈&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;종료 핸들러가 있다고 해서 안전하게 종료되는 게 아니다. 핸들러가 뭘 하는지가 중요하다. launchctl stop, Ctrl+C, 서버 재부팅 &amp;mdash; 모두 SIGTERM이나 SIGINT를 보낸다. 봇이 켜져 있는 한 포지션 관리 책임은 봇에 있다. 꺼질 때도 마찬가지다.&lt;/p&gt;</description>
      <category>코인 훈수</category>
      <author>수풍</author>
      <guid isPermaLink="true">https://hunslog.tistory.com/355</guid>
      <comments>https://hunslog.tistory.com/355#entry355comment</comments>
      <pubDate>Mon, 20 Apr 2026 23:38:51 +0900</pubDate>
    </item>
    <item>
      <title>업비트봇 끄기로 했다</title>
      <link>https://hunslog.tistory.com/354</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;업비트봇을 끄기로 했다. 약 2주 돌렸다. 수익은 0원이다. 체결된 라운드트립이 한 번도 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끄는 이유는 수익 때문만은 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;업비트봇이 뭐였나&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현물 추세추종 봇이다. 이동평균선을 기준으로 추세를 판단하고, 그 안에서 핑퐁을 친다. BTC 가격이 MA20 위에 있으면 상승 추세로 판단하고, 현재가 기준 1.5% 아래에 매수 오더를 건다. 오더가 체결되면 1.5% 위에 매도를 걸고 기다린다. 나도봇(파생)과 달리 현물이라 레버리지가 없다. 손실 한계가 명확하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2주 운영 결과&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항목 내용&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;운영 기간&lt;/td&gt;
&lt;td&gt;약 2주&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;매수 오더&lt;/td&gt;
&lt;td&gt;3회&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;완료된 라운드트립&lt;/td&gt;
&lt;td&gt;0회&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;수익&lt;/td&gt;
&lt;td&gt;0원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매수 오더는 3번 걸렸는데, 한 번도 매도까지 이어지지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이유가 있다. 2주 동안 BTC가 계속 올랐다. 매수 오더가 체결되면 BTC를 들고 있는 상태가 되는데, 그 상태에서 매도 오더(1.5% 위)까지 오르기 전에 다시 내려오거나, 아직 매도 체결을 기다리는 상태로 남아있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끄는 시점에도 미체결 매수 오더가 하나 열려 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수익 제로라고 해서 봇이 잘못된 건 아니다. 상승장에서 핑퐁 봇은 원래 느리다. 오르락내리락해야 체결이 나는데, 한 방향으로만 움직이면 기다리는 수밖에 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;왜 끄냐&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;집중하려고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BTC 봇, ETH 봇, 업비트봇 세 개를 동시에 관리하고 있다. 각각 로그 확인하고, 파라미터 점검하고, 이상 감지하는 데 신경이 분산된다. ETH 봇이 아직 검증 중이다. 파라미터 바꾼 지 얼마 안 됐다. 이 시점에 다른 봇까지 챙기는 건 낭비다. 봇이 많다고 수익이 비례해서 늘어나지 않는다. 하나를 제대로 돌리는 게 셋을 어설프게 돌리는 것보다 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;현물 봇의 장점은 여전히 있다&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파생은 손절 한 번에 크게 날릴 수 있다. 레버리지가 있으니까. 현물은 그나마 덜하다. 가격이 내려가도 코인을 들고 있을 뿐이고, 오르면 다시 올라온다. 처음 봇을 시작하는 사람이라면 파생보다 현물 핑퐁이 훨씬 심리적으로 편하다. 수익률이 낮은 대신 극단적인 손실이 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;나중에 다시 켤 수도 있다&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끄는 게 폐기가 아니다. ETH 봇 검증이 끝나고 시스템이 안정화되면 다시 켤 수 있다. 지금은 선택과 집중이다.&lt;/p&gt;</description>
      <category>코인 훈수</category>
      <author>수풍</author>
      <guid isPermaLink="true">https://hunslog.tistory.com/354</guid>
      <comments>https://hunslog.tistory.com/354#entry354comment</comments>
      <pubDate>Sun, 19 Apr 2026 21:44:13 +0900</pubDate>
    </item>
  </channel>
</rss>