PDA

View Full Version : over the course of 100K hands


mittman84
12-11-2005, 11:02 PM
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

Megenoita
12-12-2005, 03:27 AM
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.

daryn
12-12-2005, 04:32 AM
[ QUOTE ]
It's decently probable.

[/ QUOTE ]


ah, thank you sir

12-20-2005, 08:38 PM
Bump. Anyone a link at least? Thx

Fabian
12-21-2005, 12:01 PM
200BB swings are very common. I don't have any math to answer your question though.

12-21-2005, 12:37 PM
How do you normally calculate and express win rate?

12-21-2005, 08:32 PM
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

mittman84
12-21-2005, 09:15 PM
[ 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

12-22-2005, 11:48 AM
Great post. Could you share the programm?

12-22-2005, 05:18 PM
[ 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

12-24-2005, 07:28 AM
Big Bets per 100 hands is the common measure.
How do you mean "calculating winrate"? I use Pokertracker.

12-24-2005, 08:16 AM
I did a calculation, based on the formulas given below, using 15BB/100 as SD and 2BB/100 as winrate.

BB possibility of downsizing
125.00 BB 10.83680%
150.00 BB 6.94835%
175.00 BB 4.45514%
200.00 BB 2.85655%
225.00 BB 1.83156%
250.00 BB 1.17436%
275.00 BB 0.75298%
300.00 BB 0.48279%
325.00 BB 0.30956%
350.00 BB 0.19848%
375.00 BB 0.12726%
400.00 BB 0.08160%
425.00 BB 0.05232%
450.00 BB 0.03355%
475.00 BB 0.02151%
500.00 BB 0.01379%
525.00 BB 0.00884%
550.00 BB 0.00567%
575.00 BB 0.00364%
600.00 BB 0.00233%
625.00 BB 0.00149%
650.00 BB 0.00096%