The Kelly Criterion: Multiple Investment Opportunities

This is the second post in a four-part series exploring the Kelly criterion:

After the last post introduced the Kelly criterion and its application in deciding how much to invest in a single gamble, we'll investigate whether Kelly can help us choosing between multiple investment opportunities.

We'll start with a mathematical model:

V1=V0((1+r0)(1ili)+ili(1+ri))V_1 = V_0 \left( (1+r_0)(1 - \sum_i l_i) + \sum_i l_i(1 + r_i) \right)

Simple, right? :-)

  • V0,V1V_0, V_1 are the available money before and after the first round, as before.
  • r0r_0 is the risk-free return rate. This allows us to model opportunity costs (could put the money into a bank account instead of investing, r0=0.004r_0 = 0.004), or inflation (non-invested money loses value over time r0=0.02r_0 = -0.02).
  • lil_i is the fraction of the available money invested in stock ii.
  • rir_i is a random variable describing returns for stock ii.

The first term (1+r0)(1ili)(1+r_0) (1 - \sum_i l_i) represents all the money not invested in any stock, being invested at the risk-free return rate r0r_0. The second term ili(1+ri)\sum_i l_i(1 + r_i) represents the outcomes of the investments in individual stocks ii.

We will re-formulate a bit to simplify the expression:

V1V0=(1+r0)ili(1+r0)+ili(1+ri)=(1+r0)+ili(rir0)\begin{aligned} \frac{V_1}{V_0} & = (1+r_0) - \sum_i l_i (1+r_0) + \sum_i l_i(1 + r_i) \\ & = (1+r_0) + \sum_i l_i(r_i - r_0) \end{aligned}

We can further simplify by merging the lil_i and rir_i into the vectors l\vec l and r\vec r, with 1\vec 1 being a vector where all elements are 11:

V1V0=(1+r0)+l(rr01)\frac{V_1}{V_0} = (1+r_0) + \vec l \cdot (\vec r - r_0 \vec 1)

Let's move from a single game round to nn rounds:

VnV0=((1+r0)+l(rr01))n\frac{V_n}{V_0} = \left( (1+r_0) + \vec l \cdot (\vec r - r_0 \vec 1) \right)^n

Now we are again in a position where we can follow Kelly's prescription: invoking the law of large numbers and finding the ll which maximizes the gain Vn/V0V_n/V_0.

For large nn, we can approximate:

VnV0j(1+r0+l(rjr01))pjn\frac{V_n}{V_0} \approx \prod_j \left( 1+r_0 + \vec l \cdot (\vec r_j - r_0 \vec 1) \right)^{p_j n}

In this step we switched from the random variable r\vec r to its outcomes rj\vec r_j. Each possible outcome rj\vec r_j occurs with probability pjp_j. We justify this switch with the law of large numbers: the outcome rj\vec r_j will be observed proportionally to its probability, pjnp_j n times (for large nn). Consequently, we will have pjnp_j n factors involving rj\vec r_j in the overall product, with jj iterating over all potential outcomes of r\vec r.

Note that since rj\vec r_j is vector-valued, pjp_j is a joint probability distribution.

At this point we are nearly finished. We are looking for the vector lopt\vec l_{opt} that maximizes Vn/V0{V_n}/{V_0}. In analogy to last post, we arrive at:

lopt=argmaxlVnV0=argmaxllogVnV0=argmaxljpjlog(1+r0+l(rjr01))\begin{aligned} \vec l_{opt} & = \operatorname*{argmax}_{\vec l} \frac{V_n}{V_0} = \operatorname*{argmax}_{\vec l} \log \frac{V_n}{V_0} \\ & = \operatorname*{argmax}_{\vec l} \sum_j p_j \log \left( 1+r_0 + \vec l \cdot (\vec r_j - r_0 \vec 1) \right) \end{aligned}

This equation is not analytically solvable, but may be approximated as a quadratic programming problem as described in a paper by Vasily Nekrasov.


It should be obvious that the Kelly criterion is applicable in a wide range of scenarios, from gambling over investment decisions to whether to buy insurance. If you're interested in interactive plots that really helped me understand this material, you can find them in this Jupyter Notebook.

In the next post we'll discuss the origins of the logarithm in the Kelly formula.