Dice Roll, Kelly Criterion and Ralph Vince Optimal F

298 Views Asked by At

I read an article of betting on a six-sided die whereby:

If an even number comes up, the gain = bet amount x even number
If an odd number comes up, the loss = bet amount x odd number

For example:
If one bets \$10 and the number that comes up is 2, then the gain is \$10 x 2 = \$20
Using the same \$10 bet and the number on the next roll is 5, the loss is $10 x 5 = \$50

Since one can lose up to five times the wager amount, the most one could possibly bet is 1/5 of one's bankroll.

Using Python, the author mentions in the article that the Kelly Criterion = 0.025 or 2.5% and Ralph Vince Optimal f = 0.034 or 3.4%

I am able to generate the same Ralph Vince Optimal f by maximizing the TWR function in Excel which is 3.37436% to be more precise but I need help with how the author generates the Kelly Criterion of 2.5%.

Here is the attached google sheet: https://docs.google.com/spreadsheets/d/1aKm78Y3P4fBaLQca0OTXlBmt5_TyoFSJ78U5Xsx_pQw/edit?usp=drivesdk

1

There are 1 best solutions below

1
On

If you are referring to this article, IMO its representation of the Kelly criterion is a bit uncharitable to Kelly. The very first formula in Kelly's original 1956 paper is

$$ G = \lim_{N \rightarrow \infty} \frac{1}{N} \log{\frac{V_N}{V_0}} $$

so Kelly's intent was always to maximize the logarithm of the bankroll and not the arithmetic mean. Here is example code:

import numpy
import scipy.optimize

def kelly(returns):
    def fun(x):
        after = 1.0 + x * returns
        if numpy.any(after <= 0.0):
            return numpy.inf
        return -numpy.mean(numpy.log(after))
    result = scipy.optimize.minimize(fun, 0.0)
    return result

returns = numpy.array([-1, 2, -3, 4, -5, 6])

print(kelly(returns))

So what the article calls the "optimal f" is the Kelly criterion, and what the article calls the "Kelly criterion" just retrofitted an arithmetic mean on top of Kelly's solution to the binary case.