Two Plus Two Publishing LLC Two Plus Two Publishing LLC
 

Go Back   Two Plus Two Poker Forums > General Gambling > Probability

Notices

Probability Discussions of probability theory

Reply
 
Thread Tools Display Modes
Old 08-28-2011, 01:13 PM   #1
Carpal \'Tunnel
 
CBorders's Avatar
 
Join Date: Feb 2008
Location: NOT SHTTY POCKET FIVES FORUM
Posts: 14,060
Standard deviation and risk of ruin help

Hi,

I'm trying to calculate my risk of ruin for the 180 mans on Pokerstars. I don't know what the standard deviation for these tournaments is. I'm assuming an average buy-in of $10, an ROI of 13%, a bankroll of $4000.

Thanks for any help.
CBorders is offline   Reply With Quote
Old 08-28-2011, 03:30 PM   #2
Carpal \'Tunnel
 
Sherman's Avatar
 
Join Date: Jun 2005
Location: Psychology Department
Posts: 6,793
Re: Standard deviation and risk of ruin help

Well, the real key is knowing the standard deviation. If you know the ROI, you ought to have some feel for the finish distribution. If you have an idea of the finish distribution you can calculate the SD. Once you have the SD, it is easy to get the RoR.
Sherman is offline   Reply With Quote
Old 08-28-2011, 07:03 PM   #3
Carpal \'Tunnel
 
RustyBrooks's Avatar
 
Join Date: Feb 2006
Location: Austin, TX
Posts: 12,571
Re: Standard deviation and risk of ruin help

At the very least I wonder if you could start with the SD you'd get if you were equally likely to finish in any position. Then you use the relatively standard SD formula and go from there. I'd probably make it a spreadsheet and then try altering the assumptions to assume we have more than an even chance of winning $ and see how much that changes things.
RustyBrooks is offline   Reply With Quote
Old 08-28-2011, 08:25 PM   #4
old hand
 
Join Date: Jun 2011
Posts: 1,303
Re: Standard deviation and risk of ruin help

As sherman says knowing the finish distribution will give you the best idea of the SD. If you're asking about 13% ROI because that is your current ROI at the game, then if you can dig up past results for yourself, that would give you a better idea of the SD. As an estimate though, you can just create a reasonable finish distribution for someone with a 13% ROI, and this will mimic the SD pretty well because the biggest factor for SD in MTTs is field size and payout schedule.

PositionPayout %Prob. Of FinishBuyins WonAvg. BI wonVariance (BI^2)
130.00.007148.57200.344916.6612
220.00.006932.04800.22117.0295
311.90.006818.66360.12692.3358
48.00.006712.21920.08190.9792
56.50.00679.74060.06530.6189
65.00.00667.26200.04790.3357
73.50.00664.78340.03160.1429
82.60.00653.29620.02140.0652
91.70.00641.80910.01160.0180
10 thru 181.20.05900.98290.05800.0429
19 thru 1800.00.8807-1.0000-0.88071.1242
Total100.01.0000 0.129829.3536

Here is an example that will create a 12.98% ROI. It has a total variance of 29.35 BI^2. The Standard Deviation is simply the square root of the variance, in this case, 5.418 Buy-ins per tourney.

Now standard deviation will scale with the square root of number of tourneys played. So a sample of 100 Tourneys would have a SD of 54.18 BI, 10,000 Tourneys would have a SD of 541.8 BI, etc...

One way to estimate Risk of Ruin is by using the formula:

RoR = e^(-2*WR*BR/SD^2)

Here WR would be 0.1298 BI.
BR is =$4000/$10 = 400 BI
(Note: Stars only has $7 and $15 180 mans...I'll assume you'd mix the two?)

SD is 5.418 BI.

Using this formula yields a RoR of 2.9%. But it's independent of sample size.

I believe this formula leans toward a conservative estimate of RoR for 180 mans at least. Using a normal distribution table, this SD and BR will cause you to go broke <1% if you don't cashout/adjust stakes/truly have a ROI of 13%.

So generally speaking, $4000 should be plenty to handle the swings for a player who has >10% ROI.

Here is a blog post about BR management with suggestions on cashing out over time that seems very sound, imo.

http://www.pocketfives.com/blogs/jennifear/
tringlomane is offline   Reply With Quote
Old 08-28-2011, 08:51 PM   #5
Carpal \'Tunnel
 
CBorders's Avatar
 
Join Date: Feb 2008
Location: NOT SHTTY POCKET FIVES FORUM
Posts: 14,060
Re: Standard deviation and risk of ruin help

Stars has 2.50, 3.50 rebuy (played as 6.50), 8, 15, and 35 180s. I'd be playing the 3.50-15's.
CBorders is offline   Reply With Quote
Old 08-28-2011, 08:55 PM   #6
Carpal \'Tunnel
 
Sherman's Avatar
 
Join Date: Jun 2005
Location: Psychology Department
Posts: 6,793
Re: Standard deviation and risk of ruin help

Actually, I have another problem with this whole analysis. I don't doubt the accuracy, simply the appropriateness of using statistics that make assumptions of the data that are not met. I cannot be sure, but given that the RoR formula uses SD in its calculation I assume it is only accurate to the degree to which such assumptions are met.

I wrote an article for the 2+2 magazine some years ago that demonstrated that traditional confidence intervals using the t (or Z) distribution are inaccurate unless sample sizes are very large (perhaps well over 1000 MTTs played). I advocated a bootstrapping approach to estimating 95% confidence interval and demonstrated that it performed much better in terms of Type I error rates.

So in the situation you present here, I would also prefer some resampling approach to estimating the RoR. A computer simulation that draws results from the distribution given by tringlomane above would be interesting. Start with your BR and then simulate results until you achieve some total BR (say $20,000 to be safe) or you go broke (i.e. can't afford another BI. Repeat perhaps 10,000 or more times to see how often you would go broke. It would be interesting to know if those results match the results of the RoR formula.
Sherman is offline   Reply With Quote
Old 08-28-2011, 09:43 PM   #7
old hand
 
Join Date: Jun 2011
Posts: 1,303
Re: Standard deviation and risk of ruin help

Quote:
Originally Posted by Sherman View Post
Actually, I have another problem with this whole analysis. I don't doubt the accuracy, simply the appropriateness of using statistics that make assumptions of the data that are not met. I cannot be sure, but given that the RoR formula uses SD in its calculation I assume it is only accurate to the degree to which such assumptions are met.

I wrote an article for the 2+2 magazine some years ago that demonstrated that traditional confidence intervals using the t (or Z) distribution are inaccurate unless sample sizes are very large (perhaps well over 1000 MTTs played). I advocated a bootstrapping approach to estimating 95% confidence interval and demonstrated that it performed much better in terms of Type I error rates.

So in the situation you present here, I would also prefer some resampling approach to estimating the RoR. A computer simulation that draws results from the distribution given by tringlomane above would be interesting. Start with your BR and then simulate results until you achieve some total BR (say $20,000 to be safe) or you go broke (i.e. can't afford another BI. Repeat perhaps 10,000 or more times to see how often you would go broke. It would be interesting to know if those results match the results of the RoR formula.
Yes, you are right, what you suggest is the more appropriate thing to do. Unfortunately, I'm too coding retarded to pull it off right now. I never really have messed with random number generators in C much. Apparently Excel can do random numbers for you...but pulling this off in a spreadsheet may be messy. I may give it a quick and dirty try with the spreadsheet tomorrow.
tringlomane is offline   Reply With Quote
Old 08-28-2011, 11:11 PM   #8
Carpal \'Tunnel
 
Sherman's Avatar
 
Join Date: Jun 2005
Location: Psychology Department
Posts: 6,793
Re: Standard deviation and risk of ruin help

Sorry, I really didn't think through how easy it would be for me to write something. So here is an R function (you can download R for free from www.r-project.org) that does it all for you:

Code:
finishdist <- c(rep(48.571,71),rep(32.048,69),rep(18.6636,68),rep(12.2192,67),rep(9.7406,67),rep(7.2620,66),rep(4.7834,66),
          rep(3.2962,65),rep(1.8091,64),rep(.9829,590),rep(-1,8807))


RoR.sim <- function(finishdist, startBR=100, winAmt=5*startBR, sims=1000) {
  res <- rep(NA, sims)
    for (i in 1:sims) {
    BR <- startBR
      while(BR >= 1 & BR < winAmt) {
        BR <- BR + sample(finishdist, 1, T)
      }
    res[i] <- BR
  }
  probs <- cbind(sims, sum(res < 1) / sims, sum(res >= winAmt) / sims)
  colnames(probs) <- c("Sims", "Ruin", "Win")
  rownames(probs) <- "Probabilities"
  out <- list(probs, summary(res))
  names(out) <- c("Ruin/Win Results", "Summary of Final Bankrolls")
  return(out)
}

RoR.sim(finishdist)
All you have to do is create your own finish distribution and assign it any name you would like (e.g. FinishDist). Then run the RoR.sim function code to store the function in the R system's memory. Then type:

RoR.sim(FinishDist)

and you will get 1000 simulations assuming you start with a 100 BI bankroll and you will quit when you have 5 times your starting bankroll amount (500 BIs by default). Of course, you can change any of these options to you liking.

For example, if you want more sims just say,

RoR.sim(finishdist, sims=10000)
or however many you would like.

If you want to stop when you have doubled your bankroll, just say,

RoR.sim(finishdist, winAmt=2*StartBR)

If you want to change your starting bankroll amount just say,

RoR.sim(finishdist, startBR=50)
or however many BIs instead of 50 you would like.

The only requirement is that you give it a finish distribution (in BIs) which you can tailor to your liking. Above I made one following tringlomane's example such that each prize (or loss) represents the expected probability of getting each prize (e.g. I made 71 first places as 48.572 and 8807 OOTM finishes as -1).

If you copy and paste the code I have above into R directly, it will run 1000 simulations based on that distribution. It outputs the number of simulations and the probability of ruin and winning along with a summary (min, 1st quartile, median, mean, 3rd quartile, and max) of the bankroll results.
Sherman is offline   Reply With Quote
Old 08-28-2011, 11:29 PM   #9
Carpal \'Tunnel
 
Sherman's Avatar
 
Join Date: Jun 2005
Location: Psychology Department
Posts: 6,793
Re: Standard deviation and risk of ruin help

Sorry, but I couldn't help myself. I already made a change to the function that also outputs your expected ROI (if the finish distribution were accurate).

Code:
RoR.sim <- function(finishdist, startBR=100, winAmt=5*startBR, sims=1000) {
  res <- rep(NA, sims)
    for (i in 1:sims) {
    BR <- startBR
      while(BR >= 1 & BR < winAmt) {
        BR <- BR + sample(finishdist, 1, T)
      }
    res[i] <- BR
  }
  tradRoR <- exp(-2*(sum(finishdist) / length(finishdist))*startBR/var(finishdist))
  probs <- rbind(sims, (sum(finishdist) / length(finishdist)) * 100, tradRoR, sum(res < 1) / sims, sum(res >= winAmt) / sims)
  rownames(probs) <- c("Sims", "ROI %", "Traditional Ruin Prob", "Simulated Ruin Prob.", "Simulated Win Prob.")
  colnames(probs) <- "Results"
  out <- list(probs, summary(res))
  names(out) <- c("Ruin/Win Results", "Summary of Final Bankrolls")
  return(out)
}

 # Example
finishdist <- c(rep(48.571,71),rep(32.048,69),rep(18.6636,68),rep(12.2192,67),rep(9.7406,67),rep(7.2620,66),rep(4.7834,66),
          rep(3.2962,65),rep(1.8091,64),rep(.9829,590),rep(-1,8807))

RoR.sim(finishdist)
RoR.sim(finishdist, startBR=40)
RoR.sim(finishdist=c(rep(20/10.5,55),rep(-1,45)))
I moved the function to the top and the examples to the bottom. I include an additional example that might reflect a HU STT player who wins 55% of the time.

Now updated to output traditional risk of ruin calculation result side by side.

Last edited by Sherman; 08-28-2011 at 11:47 PM.
Sherman is offline   Reply With Quote
Old 08-29-2011, 12:04 AM   #10
Carpal \'Tunnel
 
Sherman's Avatar
 
Join Date: Jun 2005
Location: Psychology Department
Posts: 6,793
Re: Standard deviation and risk of ruin help

Further improved (sorry for so many posts):

Code:
RoR.sim <- function(finishdist, startBR=100, winAmt=5*startBR, sims=1000, digits=5) {
  res <- rep(NA, sims)
    print("Simulating...please wait")
    for (i in 1:sims) {
    BR <- startBR
    if(i == .25*sims) {print("25% of sims complete.")}
    if(i == .5*sims) {print("50% of sims complete.")}
    if(i == .75*sims) {print("75% of sims complete.")}

      while(BR >= 1 & BR < winAmt) {
        BR <- BR + sample(finishdist, 1, T)
      }
    res[i] <- BR
  }
  tradRoR <- exp(-2*(sum(finishdist) / length(finishdist))*startBR/var(finishdist))
  probs <- rbind(sims, (sum(finishdist) / length(finishdist)) * 100, tradRoR, sum(res < 1) / sims, sum(res >= winAmt) / sims)
  rownames(probs) <- c("Sims", "ROI %", "Traditional Ruin Prob", "Simulated Ruin Prob.", "Simulated Win Prob.")
  colnames(probs) <- "Results"
  out <- list(round(probs, digits), summary(res))
  names(out) <- c("Ruin/Win Results", "Summary of Final Bankrolls")
  return(out)
}

 # Example
finishdist <- c(rep(48.571,71),rep(32.048,69),rep(18.6636,68),rep(12.2192,67),rep(9.7406,67),rep(7.2620,66),rep(4.7834,66),
          rep(3.2962,65),rep(1.8091,64),rep(.9829,590),rep(-1,8807))

RoR.sim(finishdist)
RoR.sim(finishdist, startBR=40)
RoR.sim(finishdist=c(rep(20/10.5,55),rep(-1,45)))
By the way, this code will get you the results for the OP's problem where has has 400 Buyins.

RoR.sim(finishdist, startBR=400)

When I ran that, I got a simulated RoR (1000 trials) of .026, whereas the traditional RoR was .02907. Pretty dang close to each other, which of course suggests there was no need for all this simulation work. ;-)
Sherman is offline   Reply With Quote
Old 08-29-2011, 03:53 AM   #11
old hand
 
Join Date: Jun 2011
Posts: 1,303
Re: Standard deviation and risk of ruin help

Quote:
Originally Posted by Sherman View Post
By the way, this code will get you the results for the OP's problem where has has 400 Buyins.

RoR.sim(finishdist, startBR=400)

When I ran that, I got a simulated RoR (1000 trials) of .026, whereas the traditional RoR was .02907. Pretty dang close to each other, which of course suggests there was no need for all this simulation work. ;-)
You got it to be 0.026? I ran it 3 times at BR=400 and got it to be 0.016, 0.017, and 0.017. You are right though, this is a significantly higher RoR than a Z-table would predict because of the very top-heavy payouts.

So OP, a $4000 roll should be fine, but you will have a small risk of bust if you don't move stakes at all.

And thanks for the code! Now I think I'm going re-run the optimal play probabilities on that VP machine that lucky ass Huck Seed hit on (it had about a 0.6% player advantage), and see what his RoR is with a $1M roll (i.e. 2000 betting units). Before you threw up this code, I just made stat estimates on: "If he doesn't hit the Royal Flush"...lol
tringlomane is offline   Reply With Quote
Old 08-31-2011, 05:37 PM   #12
Carpal \'Tunnel
 
Sherman's Avatar
 
Join Date: Jun 2005
Location: Psychology Department
Posts: 6,793
Re: Standard deviation and risk of ruin help

I'm bumping this to ask for some help. I'm trying to generalize the function I wrote to be used by anyone for any tournament style RoR problem.

Here is the updated function:

Code:
RoR.sim <- function(prizes, probs, startBR=100, winAmt=5*startBR, sims=1000) {
  if(sum(probs) != 1) {stop("Finish probabilities do not total 1.00. Please adjust input probabilities.")}
  if(length(prizes) != length(probs)) {stop("prizes and probs must be the same length (have the same number of elements).")}

  BI <- -min(prizes)
  draws <- probs*10^(max(nchar(round(probs,6)))-2)
  finishdist <- rep(prizes, draws)
  ROI <- sum(finishdist) / (-1*min(finishdist)*length(finishdist))
  
  if(sims==FALSE) {tradRoR <- exp(-2*ROI*startBR/var(finishdist))
    out <- rbind("ROI %"=ROI, "Traditional RoR"=tradRoR)
    colnames(out) <- "Results"
    return(out)
  }

  res <- rep(NA, sims)
    print("Simulating...please wait")
    for (i in 1:sims) {
    BR <- startBR
    if(i == .25*sims) {print("25% of sims complete.")}
    if(i == .5*sims) {print("50% of sims complete.")}
    if(i == .75*sims) {print("75% of sims complete.")}

      while(BR >= BI & BR < winAmt) {
        BR <- BR + sample(prizes, 1, T, prob=probs)
      }
    res[i] <- BR
  }
  tradRoR <- exp(-2*ROI*startBR/var(finishdist))
  out <- rbind(sims, ROI, tradRoR, sum(res < BI) / sims, sum(res >= winAmt) / sims)
  rownames(out) <- c("Sims", "ROI %", "Traditional Ruin Prob.", "Simulated Ruin Prob.", "Simulated Win Prob.")
  colnames(out) <- "Results"
  return(out)
}
I've been testing other situations than the one we began with here. For example, consider an 9 person STT with the following prize structure and finish probabilities.

Code:
STTprizes.stars <- c(34, 16, 7, -11)
STTprob.stars <- c(.15, .13, .11, .61)
When I run the following code though (using that prize structure and finish distribution) which includes a 110 unit starting bankroll (10 buyins) I get wildly different RoRs between the simulated RoR and the traditional RoR (traditional RoR is 91.7%, while simulated RoR is only around 39%). What the heck is going on here?

RoR.sim(STTprizes.stars, STTprob.stars2, startBR=110, winAmt=1100)
Sherman is offline   Reply With Quote
Old 08-31-2011, 07:26 PM   #13
Carpal \'Tunnel
 
Sherman's Avatar
 
Join Date: Jun 2005
Location: Psychology Department
Posts: 6,793
Re: Standard deviation and risk of ruin help

Here are some other results that have me concerned:

Consider a HUSNG that costs $10.50 to enter and the winner get $20 (i.e. makes $9.50). So you either make $9.50 or lose $10.50.

Now consider the following win-rates: 55%, 54%, 53%, 52%, 51%, 50%, and 49% and starting with a bankroll of 10 buyins.

When I apply the function above I get the following risk of ruin results (10,000 sims):

Code:
ROI %	Trad %	Sim %
4.76	90.48	36.31
2.86	94.20	53.15
0.95	98.03	72.70
-0.95	102.00	88.15
-2.86	106.12	95.90
-6.67	114.87	99.83
Things to notice include the huge differences between the simulated ruin percentage and the traditional ruin percentage, especially when the ROI is quite good (winning 55% of the time is probably pretty good for headsup, I'm not really sure though). The other thing to notice is that the traditional RoR just gets it wrong when your ROI is negative providing estimates of over 100% chance that you will go broke.
Sherman is offline   Reply With Quote
Old 08-31-2011, 08:18 PM   #14
Carpal \'Tunnel
 
Sherman's Avatar
 
Join Date: Jun 2005
Location: Psychology Department
Posts: 6,793
Re: Standard deviation and risk of ruin help

Here is a a bit more about these HU situations. Obviously there are massive differences between these results. In the simulation you stop when you reach 50 buyins, so I wondered if that might be the problem (so I made it higher), but that doesn't really make any difference because it is so hard to go broke once you are already that high.

Maybe the problem is in the computation of the variance for the traditional ROR? I'm using the N-1 in the denominator and perhaps I should be using N? I'm not sure. Either way, I doubt changing the variance by that amount would make a difference as large as this.

Basically you would be saying to someone who is very good at HUSNGs (a 60% winner) that they have a 75% chance of going broke with 10 Buyins if you used the traditional formula, but only a 5% chance if you used the simulation.

Code:
Win%   ROI%   Trad. ROR% Sim. ROR%
60  14.285714   75.48396      4.98
59  12.380952   76.64246      7.47
58   9.668110   81.40758     11.20
57   7.744108   84.89049     16.19
56   6.666667   86.88151     24.35
55   4.761905   90.48374     36.29
54   2.857143   94.19693     53.50
53   0.952381   98.03246     72.03
52  -0.952381  102.00297     88.12
51  -2.857143  106.12249     96.13
50  -4.761905  109.41743     99.15
49  -6.666667  114.87283     99.81
48  -8.571429  119.54056     99.98
47 -10.476190  124.43172    100.00
46 -12.380952  129.57089    100.00
45 -14.285714  134.98588    100.00
Sherman is offline   Reply With Quote
Old 09-03-2011, 10:44 AM   #15
Carpal \'Tunnel
 
Sherman's Avatar
 
Join Date: Jun 2005
Location: Psychology Department
Posts: 6,793
Re: Standard deviation and risk of ruin help

Thanks to Bruce's help, I was able to fix the problem. Here are the results for the HUSNGs now:

Code:
RoR.sim <- function(prizes, probs, startBR=100, winAmt=5*startBR, sims=1000) {
  if(sum(probs) != 1) {stop("Finish probabilities do not total 1.00. Please adjust input probabilities.")}
  if(length(prizes) != length(probs)) {stop("prizes and probs must be the same length (have the same number of elements).")}

  BI <- -min(prizes)
  ROI <- sum(prizes*probs) / BI
  VAR <- sum(prizes^2 * probs) - ROI^2
  
  if(sims==FALSE) {tradRoR <- exp(-2*ROI*BI*startBR/VAR)
    out <- rbind("ROI %"=ROI, "Traditional RoR"=tradRoR)
    colnames(out) <- "Results"
    return(out)
  }

  res <- rep(NA, sims)
    print("Simulating...please wait")
    for (i in 1:sims) {
    BR <- startBR
    if(i == .25*sims) {print("25% of sims complete.")}
    if(i == .5*sims) {print("50% of sims complete.")}
    if(i == .75*sims) {print("75% of sims complete.")}

      while(BR >= BI & BR < winAmt) {
        BR <- BR + sample(prizes, 1, T, prob=probs)
      }
    res[i] <- BR
  }
  tradRoR <- exp(-2*ROI*BI*startBR/VAR)
  out <- rbind(sims, BI, startBR/BI, ROI*100, sqrt(VAR), tradRoR*100, (sum(res < BI) / sims)*100, (sum(res >= winAmt) / sims)*100)
  rownames(out) <- c("Sims", "BuyIn", "BR (in Buyins)", "ROI %", "SD", "Trad. Ruin %", "Sim. Ruin %", "Sim. Win %")
  colnames(out) <- "Results"
  return(out)
}
Code:
Win%   ROI%   Trad. ROR%   Sim. ROR%
60  14.285714    4.048706      4.92
59  12.380952    6.244850      7.50
58  10.476190    9.614745     11.08
57   8.571429   14.776531     16.57
56   6.666667   22.669143     23.97
55   4.761905   34.716376     36.17
54   2.857143   53.073663     52.39
53   0.952381   80.998644     72.59
52  -0.952381  123.406755     88.12
51  -2.857143  187.702916     96.16
50  -4.761905  285.024580     99.09
49  -6.666667  432.096772     99.78
48  -8.571429  653.996240     99.95
47 -10.476190  988.264102    100.00
46 -12.380952 1491.015824    100.00
45 -14.285714 2246.005324    100.00


As you can see, the results for the traditional RoR formula and the simulated formula are quite similar except when the ROI becomes negative (52% win percentage HU). Of course if you are -EV at a game, it is assured that you will lose, but your actual risk of ruin cannot be higher than 100%. If those numbers are adjusted (down) to 100% the results mirror each other again.
Sherman is offline   Reply With Quote

Reply
      

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off



All times are GMT -4. The time now is 01:38 PM.


Powered by vBulletin®
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0 ©2011, Crawlability, Inc.
Copyright © 2008-2010, Two Plus Two Interactive