Post
Topic
Board Service Announcements (Altcoins)
Re: Just-Dice.com : Invest in 1% House Edge Dice Game
by
msm595
on 23/11/2013, 19:08:28 UTC
Is there a mathematician in the house?

How do I analyse the odds of this strategy working?



He bets at 66%, which pays out 1.5x.  He starts at 0.06 BTC (this first bet is not shown in the screenshot), doubles on loss, halves on win, never halves below 0.06.

So it's a random walk, which makes a net profit of 0.03 BTC each time it gets back to betting 0.06.  Steps down are about twice as likely as steps up, so it seems unlikely to reach max bet and bust very quickly.

But the question is how do I calculate the probability of such a progression busting, given that he can afford to go N steps up the random walk?

Is it a Markov Chain thing?  Or how do I analyse it?

It's just an "improved" Martingale betting system. It's still guaranteed to lose money if betting ad infinitum. I put together a quick script to simulate betting, I'm no statistician though, so I'm not sure what numbers are needed.
Code:
import random
from decimal import *

r = random.SystemRandom()

chanceWin = Decimal(".66")
payout = Decimal("1.5")
maxProfit = Decimal("287.47")

maxBet = maxProfit/(payout-Decimal(1))
minBet = Decimal("0.06")

whaleWallet = Decimal("5")

def betRound(bet, whaleWallet, justDiceDelta=Decimal(0), verbose=False):
    numBets = 0

    while whaleWallet > 0:
        if bet > whaleWallet:
            bet = whaleWallet

        if bet < minBet:
            break

        numBets += 1
       
        if r.random() < chanceWin:
            if verbose: print("Won  bet of %s" % bet)
            justDiceDelta -= bet*(payout-Decimal(1))
            whaleWallet += bet*(payout-Decimal(1))
            bet = max(minBet, bet/Decimal(2))
        else:
            if verbose: print("Lost bet of %s" % bet)
            justDiceDelta += bet
            whaleWallet -= bet
            bet = min(maxBet, bet*Decimal(2))

        if verbose: print("Just Dice: %s, Whale: %s" % (justDiceDelta, whaleWallet))

    return (numBets, justDiceDelta, whaleWallet, justDiceDelta)

rounds = 100
bets = []
justDiceLost = False

print("Running %d simulations of betting with %0.2f BTC..." % (rounds, whaleWallet))

for i in range(0,1000):
    stats = betRound(minBet, whaleWallet)
    print(stats)
    bets.append(stats[0])
    if stats[1] < 0:
        justDiceLost = True
        print("JustDice actually lost money!!!!!!!!!!!")

if not justDiceLost:
    print("JustDice didn't lose a single bitcoin.")
print(bets)