ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 디스코드 전적이 도박 1등하기
    개발 꼰대 2021. 12. 21. 15:06

    원글 작성일: 2021-12-20

     

    내가 속해 있던 디스코드 서버에서 전적이라는 봇의 도박 기능을 이용하고 있었는데 규칙은 간단히 다음과 같다.

    • 초기 금액은 10만원이다.
    • 내가 보유한 금액의 일부분을 (최소 500원 이상) 베팅할 수 있다.
    • 초기 도박 성공 확률($p$)은 43%이다.
    • 도박 실패시 베팅한 금액을 잃으며, 도박 성공 확률($p$)이 0.35%p에서 1.6%p 사이의 임의의 값만큼 상승한다. (uniform random)
    • 도박 성공 시 87%의 확률로 베팅한 금액의 두 배를, 10%의 확률로 베팅한 금액의 세 배를, 3%의 확률로 베팅한 금액의 다섯 배를 획득할 수 있다. 또한 도박 성공 확률이 43%로 초기화된다.

    언뜻 도박 성공 확률이 아주 불리해 보이지만 (43%), 낮은 확률로 3배나 5배를 얻을 수도 있고 일정 횟수만큼 도박을 연속으로 실패하여 도박 성공 확률을 올린다면 충분히 양의 기댓값을 가지는 베팅을 할 수 있다.

    도박 성공 확률이 $0 \le p \le 1$ 이고 베팅 비율이 $0 \le r \le1$ 일 때 베팅 후의 로그 리턴의 기댓값 $R$ 은 다음과 같다.

     

    $$R = (1-p)\log(1-r)+0.87p\log(1+r)+0.1p\log(1+2r)+0.03p\log(1+4r)$$

     

    따라서 로그 리턴을 최대화하는 비율 $r$ 은 위 식을 $r$ 에 대해 편미분한 4차방정식의 해로서 구할 수 있다. 굳이 직접 미분하지 않고 scipy.optimization 모듈을 통해서 $0 \le r \le1$ 이 되는 범위의 constrained optimization을 통해서 최적 베팅 비율을 계산할 수 있다. 계산된 최적 베팅 비율 $r(p)$ 함수는 아래와 같다.

     

    도박 성공 확률 $p$에 따른 최적 베팅 비율과 이를 1차식으로 근사한 함수

     

    중요한 점은 해당 로그 리턴을 최대로 만드는 베팅 비율 $r$은 현재 도박 성공 확률 $p$에만 의존하는 아주 간단한 함수라는 점이다.

     

    다만 도박 성공 확률이 45.66% 미만일 때는 음의 비율로 베팅하는것이 이득인데 이는 불가능하고, 전적이 도박의 최소 베팅 금액이 500원이기 때문에 45.66% 미만에서는 항상 최소 베팅 금액을 베팅해야 한다. 일반적으로 알려진 전적이의 도박 전략은 2회 이상 연속으로 도박을 실패해서 베팅 성공 확률을 높인 뒤에 점점 베팅금액을 높이는 방식인데 어느정도 맞는 말이다. 다만 현재 자산이 적을 경우 (백만원 미만) 최소 베팅 금액으로 잃는 금액이 상대적으로 커서 실질 기댓값이 음수가 되어 아주 높은 확률로 파산하게 된다. 돈받기 명령어나 출석 체크 등을 통해 백만원 이상 모은 경우 베팅을 통해서 벌어들이는 돈이 유의미하게 많아지기 시작한다. 이 때부터는 위의 이상적인 베팅 비율에 따라 계속 베팅을 하면 기하급수적으로 자산이 상승한다.

     

    최적 베팅 비율은 closed form으로 구하기 힘들기 때문에, 미리 한 번 계산한 뒤에 다항식 근사 함수를 이용하면 좀더 계산이 빠를 수 있다. 위 그래프에서 실제로 1차함수로 근사한 결과식을 구했는데, 전적이 도박 특성상 최소 도박 성공 확률은 43%, 아무리 증가하더라도 60% 이상 되기는 어렵기 때문에 $0.43<p<0.6$ 구간에 대해서 least square error를 가지는 직선이다. 이 직선의 기울기는 1.73, x절편은 0.4566 인데, 다시 말해 도박 성공 확률이 약 45.7% 를 초과할 경우 해당 초과분의 약 1.7배만큼의 비율로 베팅을 하는 것이 최적 베팅 비율이다. 예를 들어 현재 보유 금액이 100만원이고 도박 성공 확률이 48%라면 45.7%의 초과분 2.3%p의 1.7배인 3.91%의 비율인 39100원을 배팅하는게 가장 이득이다. 이보다 적게 베팅하거나 많게 베팅할 경우 상대적으로 손해를 본다.

     

    해당 전략을 이용하여 약 17,000 게임을 플레이한 결과 초기 자본 100만원에서 최종 5조 8천억원으로 (580만배) 전체 서버 1등을 달성했다. (2등은 100억 정도이다) 물론 베팅전략이 양의 기울기를 가지므로 도박을 계속하면 언제까지고 자산이 늘어나기 때문에 최종적으로 몇 배로 자산을 불렸나보다는 게임당 실질 수익률이 더 유의미한 수치다. 평균적으로 약 750판마다 2배씩, 2500판마다 10배씩 자산을 불릴 수 있었다.

     

    17,183 판의 게임 플레이에 따른 자산 변동 로그 그래프.

     

    자산 변동 히스토리를 보면 전반적으로 양의 기울기를 가지나, 가파른 수직선으로 돈을 잃는 순간들이 (-70% 이상, 많게는 -98% 까지도) 있는데, 이는 오랜 시행동안 필연적으로 발생하는 운이 나쁜 (10연패 이상 하는) 경우다. 도박 성공 시 성공 확률이 43%로 초기화되어 최소금액만을 베팅하게 되므로 연승에 대한 메리트는 전무한 반면 연패에 대한 손실은 크기 때문에 나타나는 불균형이다. 하지만 자산이 1/10토막이 나더라도 이를 만회하기 위한 높은 베팅을 하지 말고, 멘탈을 붙잡고 항상 수학적으로 계산된 최선의 베팅비율에 따라서 베팅하는 것이 성공의 비결이다.

    글의 시작은 전적이 도박에 대해서 얘기했지만, 끝맞음은 전적이의 경제 시스템에 대해서 좀더 얘기해보고 싶다. 전적이 도박은 시행에 대한 기댓값이 플러스라는 점에서 사실 "도박"이라고 분류하기 어렵다 (도박 사업장 입장에서는 돈을 벌기 위해서 도박에 대한 기댓값이 항상 음수여야 하기 때문에). 정말 현실의 경제 시스템을 모방하기 위해서는 근본적으로 돈 자체를 사고 파는 시장이 갖추어져야 한다. 또한 주식의 경우에도 전적이처럼 시스템 맘대로 정해지는 가격이 아니라 판매자와 구매자간의 수요공급으로 결정이되며, 실질적으로 이윤을 창출하는 방법이 있고 (예를 들어 도박 시스템의 사업자에 해당하는 부분) 해당 사업체의 지분을 직접적으로 사고 팔면서 해당 기업의 이윤을 공유받을 수 있어야 할 것이다.

    전적이의 경제 시스템을 보면 유튜브의 세금 내는 아이들 채널이 생각난다. 교육용이든, 단순한 재미를 위해서든 경제 시스템을 유사하게 따라가는 것 같지만 사실 세계에서 경제가 존재하는 핵심적인 이유가 빠져 있기 때문에 이를 통해서 마치 rpg 게임에서 강해지는 것과 같은 수치적 만족을 느낄수는 있겠지만, 현실 경제를 경험하는 효과는 전무하거나 오히려 왜곡되어 있다. 이 점은 참 아쉽다.

     

    '개발 꼰대' 카테고리의 다른 글

    알고리즘 실력과 개발 능력의 관계  (1) 2022.01.16

    댓글

Designed by Tistory.