Updated the gist with test code for this bet. With runs of 1000 4 coin runs, you sometimes lose and sometimes win, but trend is you win more than you lose. You can play with the numbers to figure out where the long-term odds work against you, but a bar-bet designed by me should favor me so I wouldn't give you better odds than 50%. Fair-coin rule of bar-betting see?
There are large fluctuations in this bet. sum([test_hothand(0.5,3) for i in xrange(10)]) has returned a range of (-348,+312) but biased towards positive for the patron. A combination of 10^6 runs was 320 wins in favor of the patron.
sum([sum([test_hothand(0.5,3) for i in xrange(10)]) for x in xrange(10)]) fluctuates too but it's sum is still in favour of the patron.
But a good bar bet should convince the mark he has the advantage. If the paper is correct then one direction has odds of 58%. You should be able to split the difference, offering $0.54 to my $0.46 and still have a 4% edge. Fool that I am, I would think I have the same edge, since I erroneously think the odds are 50/50. Since that makes us both convinced we have an identical edge this is the fairest bet.
52/48 is the max since that's break-even according to the theory (favoring the bartender by 8%). The effect is slight and fickle enough that you can't structure a "win-every-time" bet. For large enough runs you will always have loser runs with arbitrarily bad losses. In the long run patron wins, given enough time.
I still need to see an enumeration before I'll believe it's not 50/50. I would take that bet. Blackjack card counters can make a living on a 2% edge in Vegas.
(Of course if I convincingly lose the bet, I learn a way to make a living on bar bets in Vegas, so I still win in the long run :)
The effect is too slight. No matter how big you make the runs, once in a while you get an unfortunate grouping and you lose. Most of the time you win. Run the gist several times with different parameters.
What I mean is, there are few enough cases so we can put them all on one piece of paper and count. That's what I did in my first comment here. There are exactly as many cases of HT and HH, hence my belief in 50% odds. That's pretty much the standard way to tackle basic probability questions.
But maybe I'm misinterpreting what they mean and there's some way to structure a bet so the odds fall to one side or the other. I just having found it yet. If we could find it and put it on paper, we'd have a clear understanding of why it works.
Plus, it'd probably be pretty counterintuitive and with a decent bankroll would be reliably profitable over the long term, in certain environments.
Your MC results are interesting, I've looked at your code and it seems straightforward. But counting all possible cases is essentially a mathematical proof, and I just can't find any mistakes in it, or figure out how it could be wrong.