Two Plus Two Older Archives  

Go Back   Two Plus Two Older Archives > General Gambling > Probability

Reply
 
Thread Tools Display Modes
  #1  
Old 12-11-2005, 11:02 PM
mittman84 mittman84 is offline
Member
 
Join Date: Mar 2005
Posts: 34
Default over the course of 100K hands

over the course of playing 100,000 hands what is the probability of having a 300BB downswing, 200BB downswing, multiple 100BB downswings? How many 100BB downswings should you expect?
assume 1.5BB/100 with a normal standard deviation for 6 max (not sure what it is)

thanks
Reply With Quote
  #2  
Old 12-12-2005, 03:27 AM
Megenoita Megenoita is offline
Senior Member
 
Join Date: Oct 2004
Posts: 199
Default Re: over the course of 100K hands

It's decently probable. Probably 20-25% probable depending on your win rate. If your win rate is below really good, like under 2 BB/100 truly, then it's probably 20-25% probable. Having many 100 BB downswings is extremely normal. Having a 200 and a 300 is not very likely, but I would assume in 500k hands, it happens once or twice to a non-spectacular player.

I know Peter_Rus has had much fewer and more gentle swings than almost all other players. Win rate does affect variance significantly.
Reply With Quote
  #3  
Old 12-12-2005, 04:32 AM
daryn daryn is offline
Senior Member
 
Join Date: Apr 2003
Location: Boston, MA
Posts: 2,759
Default Re: over the course of 100K hands

[ QUOTE ]
It's decently probable.

[/ QUOTE ]


ah, thank you sir
Reply With Quote
  #4  
Old 12-20-2005, 08:38 PM
Guest
 
Posts: n/a
Default Re: over the course of 100K hands

Bump. Anyone a link at least? Thx
Reply With Quote
  #5  
Old 12-21-2005, 12:01 PM
Fabian Fabian is offline
Member
 
Join Date: Sep 2004
Location: Sweden
Posts: 67
Default Re: over the course of 100K hands

200BB swings are very common. I don't have any math to answer your question though.
Reply With Quote
  #6  
Old 12-21-2005, 12:37 PM
Guest
 
Posts: n/a
Default Re: over the course of 100K hands

How do you normally calculate and express win rate?
Reply With Quote
  #7  
Old 12-21-2005, 08:32 PM
Guest
 
Posts: n/a
Default Re: over the course of 100K hands

I wrote a simple program that simulates a random walk of several billion hands for a given mean (bb/100) and standard deviation (std/100), in order to see how often you should encounter downswings. The following data shows approximately how often (in hands) you should encounter a downswing of a given size, i.e., for a std/100 of 15, and an expection of 2 bb/100, you should encounter a downswing of 100-199 bb an average of every 23346 hands or so.

<font class="small">Code:</font><hr /><pre>
For std/100 = 15:
100-199 200-299 300-399 400-499 500-599 600-699 700-799 800+
0.5 53743 155207 327332 608828 1070663 1710863 2754820 1686340
1.0 30068 106292 295595 768639 1798561 4926108 1E+007 2E+007
1.5 24452 114613 456204 1733102 7326007 3E+007 7E+007 2E+008
2.0 23346 156421 952834 5235602 4E+007 3E+008 1E+009
2.5 25286 254906 2270147 2E+007 3E+008 2E+009
3.0 29448 446229 6578947 7E+007 3E+008
3.5 36189 799360 2E+007 1E+009
4.0 46388 1581027 7E+007 2E+009

For std/100 = 20:
100-199 200-299 300-399 400-499 500-599 600-699 700-799 800+
0.5 56326 152380 297619 490556 779119 1133786 1663893 536624
1.0 29119 83664 180995 342994 620732 1049868 1848428 1195457
1.5 20891 66912 165030 379867 825423 1848428 3636363 4184100
2.0 17108 63233 191938 532197 1536098 4032258 1E+007 2E+007
2.5 15460 67453 250941 889679 3205128 1E+007 4E+007 9E+007
3.0 14720 78268 356824 1669449 7518796 3E+007 1E+008 4E+008
3.5 14798 95909 574547 3262642 2E+007 1E+008 7E+008
4.0 15335 125046 900900 6666666 7E+007 1E+009 2E+009

For std/100 = 25:
100-199 200-299 300-399 400-499 500-599 600-699 700-799 800+
0.5 59516 152823 286204 474383 743218 1043841 1409443 343112
1.0 30331 80019 159451 272257 439657 681895 1000500 413821
1.5 20821 58107 121802 228702 398089 710227 1170960 730994
2.0 16476 48636 112189 231133 454545 896860 1684919 1555209
2.5 13811 44701 114771 262191 606428 1420454 3072196 3629764
3.0 12254 43299 123969 335345 908265 2355712 6688963 9803921
3.5 11342 44250 145443 476190 1427551 4535147 1E+007 3E+007
4.0 10809 47433 177336 654022 2424242 8403361 3E+007 7E+007
</pre><hr />

Note that the results are approximations, and I make the assumption that the results of playing poker are normally distributed. Interestingly enough, you encounter more swings with an average bb/100 than with a low one - due to the fact that when your expectation is lower, your downswings are larger, and last longer.

Senni
Reply With Quote
  #8  
Old 12-21-2005, 09:15 PM
mittman84 mittman84 is offline
Member
 
Join Date: Mar 2005
Posts: 34
Default Re: over the course of 100K hands

[ QUOTE ]
i.e., for a std/100 of 15, and an expection of 2 bb/100, you should encounter a downswing of 100-199 bb an average of every 23346 hands or so.

[/ QUOTE ]
I hate poker
Reply With Quote
  #9  
Old 12-22-2005, 11:48 AM
Guest
 
Posts: n/a
Default Re: over the course of 100K hands

Great post. Could you share the programm?
Reply With Quote
  #10  
Old 12-22-2005, 05:18 PM
Guest
 
Posts: n/a
Default Re: over the course of 100K hands

[ QUOTE ]

Great post. Could you share the programm?


[/ QUOTE ]

Sure. The program is written in C, and uses math.h, so remember to add the -lm flag when compiling. This version uses random() and gettimeofday() for a seed. If your C compiler doesnt have these functions just use rand(), and seed it with srand(time(NULL)). rand() is not a great random number generator, as the low order bits tend to cycle, though that shouldn't matter much here.

The box_muller function implements the Box-Muller transform, a method of generating random numbers along a normally distributed function. The main program is pretty simple, for each mean (bb/100) we want to examine, we set bankroll to +0 bets and just start simulating lots of hands. Each time our bankroll passes the previous high point, the difference between it and the lowest point reached since then is counted as a downswing. So, if we start at 0, lose 300 bbs, gain 100 bbs, lose 300 bbs, when we eventually get back to 0, that counts as 1 500 bb swing, not 2 300 bb swings.

<font class="small">Code:</font><hr /><pre>
//************************************************** ******************************
// random_walk.c
// Ronald Nussbaum
//************************************************** ******************************

#include &lt;math.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;sys/time.h&gt;

#define ITERATIONS 2000000000 // number of hands
#define STD 15 // std/100

// http://www.taygeta.com/random/boxmuller.html
double box_muller(double m, double s) // normal random variate generator
{ // mean m, standard deviation s
double x1, x2, y1, w;
static double y2;
static int use_last = 0;

if (use_last) // use value from previous call
{
y1 = y2;
use_last = 0;
}
else
{
do
{
x1 = 2.0 * ((double) random() / (double) RAND_MAX) - 1.0;
x2 = 2.0 * ((double) random() / (double) RAND_MAX) - 1.0;
w = x1 * x1 + x2 * x2;
}
while (w &gt;= 1.0);

w = sqrt((-2.0 * log(w)) / w);
y1 = x1 * w;
y2 = x2 * w;
use_last = 1;
}

return (m + y1 * s);
}

int main(int argc, char **argv)
{
long int i, t, downswings[10];
long double mean, bankroll, high, low;
struct timeval tv;

gettimeofday(&amp;tv, NULL);
srandom(tv.tv_usec);

printf("For std/100 = %d:\n", STD);
printf(" 100-199 200-299 300-399 400-499 500-599 600-699 700-799 800+\n");
for (mean = .5; mean &lt;= 4; mean += .5)
{
high = low = bankroll = 0;
for (i = 0; i &lt; 10; ++i)
downswings[i] = 0;

for (i = 0; i &lt; ITERATIONS; i += 100)
{
bankroll += box_muller(mean, STD);
if (bankroll &gt; high)
{
t = (int) (high - low) / 100;
if (t &gt; 8)
t = 8;
++downswings[t];
high = low = bankroll;
}
else if (bankroll &lt; low)
low = bankroll;
}

printf("%.1f ", (double) mean);
for (i = 1; i &lt;= 8; ++i)
if (downswings[i] &gt; 0)
{
if ((ITERATIONS / downswings[i]) &lt; 9999999)
printf("%7ld ", ITERATIONS / downswings[i]);
else printf(" %6.0E ", (double) (ITERATIONS / downswings[i]));
}
else printf(" ");
printf("\n");
}

return EXIT_SUCCESS;
}
</pre><hr />

On a 32 bit machine, ITERATIONS cannot exceed the maximum size of a long int, which is just over 2 billion. To get more accurate approximations, you either need to use a large number package, or a 64 bit machine, which has a limit in the quintillions. Here are some results from a 64 bit machine simulating 100 billion hands per trial:

<font class="small">Code:</font><hr /><pre>
For std/100 = 15:
100-199 200-299 300-399 400-499 500-599 600-699 700-799 800+
0.5 54087 152788 323449 603343 1046725 1733763 2810962 1651936
1.0 30426 104171 289054 745901 1868530 4599816 1E+07 2E+07
1.5 24429 112099 452988 1784630 7061149 3E+07 1E+08 3E+08
2.0 23419 153301 962343 6127826 4E+07 2E+08 1E+09 5E+09
2.5 25085 245873 2487809 3E+07 3E+08 3E+09 2E+10 1E+11
3.0 29107 438392 7304601 1E+08 3E+09 2E+10 1E+11
3.5 35756 838475 2E+07 7E+08 2E+10 1E+11
4.0 45889 1731871 8E+07 4E+09 1E+11

For std/100 = 20:
100-199 200-299 300-399 400-499 500-599 600-699 700-799 800+
0.5 57068 149643 290361 490186 760121 1115436 1598210 544988
1.0 29780 83583 177262 338975 606152 1053363 1798011 1200984
1.5 21257 65961 162519 370933 821631 1774119 3829510 4298302
2.0 17481 62315 184495 526803 1465502 4100209 1E+07 2E+07
2.5 15666 65967 243236 880871 3221338 1E+07 4E+07 1E+08
3.0 14944 76072 354111 1681491 8045699 4E+07 2E+08 7E+08
3.5 14927 93370 559665 3482864 2E+07 1E+08 9E+08 3E+09
4.0 15461 120526 938086 7792410 6E+07 6E+08 5E+09 3E+10
</pre><hr />

I hope this is useful. Please let me know if I made any serious mathematical goofs in my code (hopefully not).

Senni
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

Forum Jump


All times are GMT -4. The time now is 04:08 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.