If no one else does it, i'll go through it for that bet and see what it should be
My (untested) calculations:
The kelly for that bet is a staggering 0.353028752 (aka the house should risk 35% of it's bankroll)?! wtf?
Seems rather unintuitive, and likely I made a mistake (and possibly twice, once when first writing the generalize kelly code).
Most of the work is in inverting the bet to be from the houses perspective, so here's what I came up with if it is of any help to anyone:
Well 35% seems rather large, but I believe that was within the range of the ~150-160 BTC bankroll, so
bet #18530298 at least doesn't seem fishy that way. What's fishy is the 35%. So I went and calculated the kelly criterion for that
payout table. Here is some Haskell code:
table :: [(Double, Double)]
table =
[ ( 65536 / (2^32) , 1 - 121.0 ), ( 749731840 / (2^32) , 1 - 0.5 )
, ( 1048576 / (2^32) , 1 - 47.0 ), ( 524812288 / (2^32) , 1 - 1.0 )
, ( 7864320 / (2^32) , 1 - 13.0 ), ( 286261248 / (2^32) , 1 - 1.4 )
, ( 36700160 / (2^32) , 1 - 5.0 ), ( 119275520 / (2^32) , 1 - 3.0 )
, ( 119275520 / (2^32) , 1 - 3.0 ), ( 36700160 / (2^32) , 1 - 5.0 )
, ( 286261248 / (2^32) , 1 - 1.4 ), ( 7864320 / (2^32) , 1 - 13.0 )
, ( 524812288 / (2^32) , 1 - 1.0 ), ( 1048576 / (2^32) , 1 - 47.0 )
, ( 749731840 / (2^32) , 1 - 0.5 ), ( 65536 / (2^32) , 1 - 121.0 )
, ( 843448320 / (2^32) , 1 - 0.3 )
]
ps = sum [ p | (p,_) <- table ] -- Should be 1.0
fun, der, der2 :: Double -> Double
fun x = sum [ p * log (1 + b * x) | (p,b) <- table ]
der x = sum [ p * b / (1 + b * x) | (p,b) <- table ]
der2 x = sum [ - b^2 * p / (1 + b * x)^2 | (p,b) <- table ]
newtons :: Double -> Double
newtons x = if abs ((x - x') / x) < 1e-10 then x' else newtons x'
where x' = x - der x / der2 x
kelly :: String
kelly = show (100 * newtons 0) ++ "%"
Which tells me
λ> kelly
"0.29419062808971297%"
λ>
To me ~0.29% seems more realistic than 35.3028752%. So assuming the bet was a max bet (which it probably wasn't but was close) the house overbet by a factor of roughly 120x.