{ "cells": [ { "cell_type": "markdown", "id": "developing-gamma", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "# The Horse-race Model of Bet-hedging" ] }, { "cell_type": "markdown", "id": "broad-rebate", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "In this notebook we will use betting on a horse race as a model for the bet-hedging strategy in changing environments. Remember, the idea of bet-hedging is that, if the environment switches randomly between multiple conditions, the population may diversify into coexisting groups of individuals that exhibit different phenotypes, each being favorable for a particular environment. We can map this description onto a horse race as follows. At each round, the environment corresponds to which horse will actually win the race, and the phenotypes are different choices of horses to bet on. A bet-hedging strategy means distributing money over multiple choices. The odds (the reward for every dollar you bet if you win) are then analogous to the number of offspring produced by each invididual in a given environment, and the rate of capital gain is analogous to the population growth rate." ] }, { "cell_type": "markdown", "id": "e5ab4ef7-c2f3-4106-a57c-8de37c65a204", "metadata": {}, "source": [ "What is special about the horse race is that, if money is bet on the wrong horse, there is no return. That means only one phenotype can survive in each environmental condition. This assumption simplifies the mathematics and allows us to study the situation where the distribution of phenotypes can depend on external signals. For example, some bacterial species have type-I persister cells, which are induced by environmental triggers such as lack of nutrients. We will see that when such information is used to adjust the phenotype distribution optimally, the population's longterm growth rate can be further increased. This would correspond to the situation in a horse race where we have secret information about the race to help us place bets on the horses." ] }, { "cell_type": "markdown", "id": "453f49f3-1260-4a8e-b6cc-96b5c32c72e1", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Betting with no information" ] }, { "cell_type": "markdown", "id": "robust-fountain", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Let us simulate the random process of betting on the horse race. We can reuse the `BetHedging` class defined for studying persister cells before." ] }, { "cell_type": "code", "execution_count": 1, "id": "certain-leone", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "id": "facial-afternoon", "metadata": {}, "outputs": [], "source": [ "class BetHedging:\n", " \"\"\"\n", " simulate bet-hedging strategy in changing environments.\n", " \"\"\"\n", " \n", " def __init__(self, phe_dist, fit_mat, N0=1., record=True):\n", " \"\"\"\n", " initialize population.\n", " inputs:\n", " phe_dist: 1-d array-like, phenotype distribution q[i] (should sum to 1).\n", " fit_mat: 2-d array-like, fitness matrix f[i,j] = number of offspring for phenotype i in environment j.\n", " N0: real, initial population size (use real instead of integer).\n", " record: bool, whether to record history of environment and population size.\n", " \"\"\"\n", " self.phe_dist = np.asarray(phe_dist) # phenotype distribution q_i\n", " self.fit_mat = np.asarray(fit_mat) # fitness matrix f_{ij}\n", " self.pop_size = float(N0) # current population size\n", " self.time = 0 # current number of generations since the beginning of simulation\n", " self.record = record\n", " if record:\n", " self.env_hist = []\n", " self.pop_hist = []\n", " \n", " def grow(self, env_seq):\n", " \"\"\"\n", " simulation population growth in changing environments.\n", " inputs:\n", " env_seq: 1-d array-like, environment sequence, list of environment indices.\n", " \"\"\"\n", " T = len(env_seq)\n", " for t in range(T):\n", " env = env_seq[t] # environmental condition at each time step\n", " factor = np.dot(self.phe_dist, self.fit_mat[:,env]) # growth factor according to formula\n", " new_pop = self.pop_size * factor # new population size at next time step\n", " if self.record: # record history\n", " self.env_hist.append(env)\n", " self.pop_hist.append(self.pop_size)\n", " self.pop_size = new_pop # update population size" ] }, { "cell_type": "markdown", "id": "artificial-faith", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "### Asset growth" ] }, { "cell_type": "markdown", "id": "constant-parcel", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "We first need to specify the odds. This can be represented by a \"fitness matrix\" as follows:\n", "\\begin{equation}\n", "\\mathbf{f} = \\left( \\begin{matrix} R_0 & 0 \\\\ 0 & R_1 \\end{matrix} \\right)\n", "\\end{equation}\n", "where $R_0$ and $R_1$ are the returns if horse #0 or #1 wins. Note that the matrix is diagonal because there is no return for betting on the wrong horse." ] }, { "cell_type": "code", "execution_count": 3, "id": "italic-survivor", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "fit_mat = np.array([[1.3, 0.0],\n", " [0.0, 4.5]])" ] }, { "cell_type": "markdown", "id": "official-aggregate", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "Now we have to decide on a strategy, i.e., allocation of money to bet on each horse. Since the second horse has a *higher* return, we might expect it to have a *smaller* chance of winning. So let us try putting *less* money on it." ] }, { "cell_type": "code", "execution_count": 4, "id": "middle-request", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "phe_dist = [0.7, 0.3]" ] }, { "cell_type": "markdown", "id": "incoming-relationship", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "To simulate the outcomes of repeated races, we will generate a random sequence representing which horse wins at every round." ] }, { "cell_type": "code", "execution_count": 5, "id": "streaming-istanbul", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "env_dist = [0.77, 0.23] # true probability of each horse winning\n", "T = 10000 # number of rounds\n", "env_seq = np.random.choice(2, size=T, p=env_dist) # index of horse to win at each round" ] }, { "cell_type": "markdown", "id": "dominican-civilian", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "Let us pretend that we do not know the true probabilities, and use our chosen strategy to bet on the horses. We can make a simulation of the capital growth using the `BetHedging` class." ] }, { "cell_type": "code", "execution_count": 6, "id": "settled-grocery", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "bh1 = BetHedging(phe_dist, fit_mat)\n", "bh1.grow(env_seq)" ] }, { "cell_type": "markdown", "id": "passing-proposition", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "To see how well we are doing, let us plot our money versus time." ] }, { "cell_type": "code", "execution_count": 7, "id": "improving-shade", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(bh1.pop_hist)\n", "plt.yscale('log')\n", "plt.xlabel('time steps')\n", "plt.ylabel('asset')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "frequent-validation", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "This looks rather \"unfortunate\"... Nevertheless, let us calculate the average growth rate over a long time $T$:\n", "\\begin{equation}\n", "\\Lambda = \\frac{1}{T} \\, \\log \\frac{N_T}{N_0}\n", "\\end{equation}" ] }, { "cell_type": "code", "execution_count": 8, "id": "political-enterprise", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "average growth rate = -0.0074115639989703495\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "T = len(bh1.pop_hist)\n", "lam_avg = np.log(bh1.pop_hist[T-1] / bh1.pop_hist[0]) / T\n", "print(f'average growth rate = {lam_avg}')\n", "\n", "plt.figure()\n", "plt.plot(bh1.pop_hist)\n", "plt.plot(bh1.pop_hist[0] * np.exp(lam_avg * np.arange(T)), label='average growth rate')\n", "plt.yscale('log')\n", "plt.xlabel('time steps')\n", "plt.ylabel('asset')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "3190d46b-d5a4-4ad2-a297-70c441572ea8", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "The capital growth rate is negative -- no wonder that we are losing money!" ] }, { "cell_type": "markdown", "id": "serious-pension", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "### Optimal bet" ] }, { "cell_type": "markdown", "id": "responsible-agenda", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "To figure out the optimal betting strategy, let us try different distributions and repeat the steps above." ] }, { "cell_type": "code", "execution_count": 9, "id": "rocky-switch", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/b.xue/Programs/python/lib/python3.7/site-packages/ipykernel_launcher.py:8: RuntimeWarning: divide by zero encountered in log\n", " \n" ] } ], "source": [ "q1_list = np.linspace(0, 1, 101) # list of phenotype distribution element q_1\n", "lam_avg_list = [] # list to collect average growth rates\n", "\n", "for q1 in q1_list:\n", " phe_dist = [1-q1, q1]\n", " bh1 = BetHedging(phe_dist, fit_mat)\n", " bh1.grow(env_seq)\n", " lam_avg = np.log(bh1.pop_hist[T-1]) / T\n", " lam_avg_list.append(lam_avg)" ] }, { "cell_type": "markdown", "id": "public-venice", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "We can plot the average growth rate with respect to the bets to see which strategy works best." ] }, { "cell_type": "code", "execution_count": 10, "id": "determined-impact", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(q1_list, lam_avg_list)\n", "plt.axhline(0, color='k', lw=1)\n", "plt.xlabel(r'bet $q_1$')\n", "plt.ylabel('asset')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "durable-leisure", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "It appears that only a narrow window between around $q_1 = 0.18$ and $0.28$ would give a positive growth rate. (Don't worry about the flat part of the curve on the right -- it is because we ran into round-off error there.)" ] }, { "cell_type": "markdown", "id": "209a90e6-d9cc-4ca5-9072-9be733f75154", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "We can find the optimal bet by looking for the maximum growth rate." ] }, { "cell_type": "code", "execution_count": 11, "id": "composite-argentina", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "optimal bet = [0.78, 0.22]\n", "maximum growth rate = 0.008624615881219351\n" ] } ], "source": [ "imax = np.argmax(lam_avg_list) # returns index of maximum value\n", "q1_opt = q1_list[imax] # find value of q1 at that index\n", "lam_max = lam_avg_list[imax] # maximum growth rate\n", "print(f'optimal bet = {[1-q1_opt, q1_opt]}')\n", "print(f'maximum growth rate = {lam_max}')" ] }, { "cell_type": "markdown", "id": "bfe288d2-316e-4fe5-8e39-824d5ca62bda", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "The bets we chose were not that far off. However, the odds are so tight that there is only a small window where one could make money." ] }, { "cell_type": "markdown", "id": "brutal-extension", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "Mathematically, when the fitness matrix is diagonal, we expect the optimal phenotype distribution to be equal to the environment distribution. In this case, the true environment distribution used to generate the random sequence was (0.77, 0.23). The optimal bet is indeed close to it (the small difference is because the empirical distribution of the finite environment sequence is in fact (0.7796, 0.2204))." ] }, { "cell_type": "markdown", "id": "e4ba9d2e-f793-4408-ab26-78b743f67fae", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Betting with side information" ] }, { "cell_type": "markdown", "id": "featured-rates", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "For a set of \"unbiased\" odds, e.g., $R_i = 1/p_i$, where $p_i$ are the true probabilities of each horse winning, the best one can do is not losing money, because the maximum growth rate will be zero. To prove that, recall from the lecture that, theoretically,\n", "\\begin{equation}\n", "\\Lambda = \\sum_i p_i \\log (q_i R_i)\n", "\\end{equation}\n", "In the unbiased case, we have:\n", "\\begin{equation}\n", "\\Lambda = \\sum_i p_i \\log (q_i / p_i) = -D(p \\Vert q) \\leq 0\n", "\\end{equation}\n", "where $D(p \\Vert q)$ is the *relative entropy* between the probability distributions $p$ and $q$, which is non-negative." ] }, { "cell_type": "markdown", "id": "union-clinton", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "So how can we possibly make money? The trick is, to get insider's information! That is, we want to receive a secret message (or so-called \"side information\"), which is hopefully correlated with the actual outcome of the race. For example, we may receive word that \"horse 0 will win\", and, while it may not be completely reliable, it may indicate that horse 0 has an advantage that is known to the insider. In that case, we might want to adjust our strategy to put *more* money on horse 0 (but not necessarily *all* the money because the message could be wrong)." ] }, { "cell_type": "markdown", "id": "cosmetic-croatia", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "To model side information, let us denote the message by $\\eta$, which can take a value $\\eta = i$ that means \"horse $i$ should win\". Since we will base our bets on this information, we will use a *conditional* probability distribution $q(j|i)$. That means, given a message $\\eta = i$, we will bet a fraction $q(j|i)$ of our money on horse $j$. For two horses, our strategy then becomes a (2x2) matrix, instead of a 2-d vector. Since the probabilities should sum to 1 for any given message, i.e., $\\sum_j q(j|i) = 1$ for all $i$, we can parametrize the matrix by:\n", "\\begin{equation}\n", "q(j|i) = \\left( \\begin{matrix} 1 - q_{10} & 1 - q_{11} \\\\ q_{10} & q_{11} \\end{matrix} \\right)\n", "\\end{equation}\n", "That is, each column should sum to 1. At every round, we will receive a message, and will choose the money distribution given the message. Therefore, our asset grows by a factor:\n", "\\begin{equation}\n", "N_{t+1} = N_t \\, \\sum_\\phi q(\\phi|\\eta_t) f(\\phi;\\varepsilon_t)\n", "\\end{equation}\n", "where $f(\\phi;\\varepsilon)$ is a general fitness matrix like before, and $\\varepsilon_t$ and $\\eta_t$ are the environment and message received at that round." ] }, { "cell_type": "markdown", "id": "russian-vitamin", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Let us write a python class to simulate bet-hedging using side information. Besides the environment sequence, we will also have a message sequence as input to the `grow` method." ] }, { "cell_type": "code", "execution_count": 12, "id": "handed-thong", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "class BetHedgingWithSideInformation(BetHedging):\n", " \"\"\"\n", " simulate bet-hedging with side information.\n", " note that here `self.phe_dist` should be a 2-d array representing a conditional distribution q(j|i).\n", " \"\"\"\n", " \n", " def grow(self, env_seq, mes_seq): # decorating base method\n", " \"\"\"\n", " simulation population growth in changing environments.\n", " inputs:\n", " env_seq: 1-d array-like, environment sequence, list of environment indices.\n", " mes_seq: 1-d array-like, message sequence, list of message indices.\n", " \"\"\"\n", " T = len(env_seq)\n", " for t in range(T):\n", " env = env_seq[t] # environmental condition at each time step\n", " mes = mes_seq[t] # message at each time step\n", " factor = np.dot(self.phe_dist[:,mes], self.fit_mat[:,env]) # growth factor\n", " new_pop = self.pop_size * factor # new population size at next time step\n", " if self.record: # record history\n", " self.env_hist.append(env)\n", " self.pop_hist.append(self.pop_size)\n", " self.pop_size = new_pop # update population size" ] }, { "cell_type": "markdown", "id": "incoming-makeup", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Now let us create a message sequence that is somewhat correlated with the environment sequence but not completely. For example, we can make the message correct for 80% of the time." ] }, { "cell_type": "code", "execution_count": 13, "id": "compliant-sympathy", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "mes_seq = []\n", "for env in env_seq:\n", " if env == 0:\n", " mes = np.random.choice(2, p=(0.8, 0.2))\n", " elif env == 1:\n", " mes = np.random.choice(2, p=(0.2, 0.8))\n", " mes_seq.append(mes)" ] }, { "cell_type": "markdown", "id": "brief-possession", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Let us see how well we can do with such side information. Suppose we choose to believe the message with only 70% confidence, i.e., if the message says \"horse 0\", we bet 70% of our money on horse 0, and vice versa. Then our conditional distribution is:" ] }, { "cell_type": "code", "execution_count": 14, "id": "egyptian-polymer", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "phe_dist2 = np.array([[0.7, 0.3],\n", " [0.3, 0.7]])" ] }, { "cell_type": "markdown", "id": "functioning-texture", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "We can simulate our asset growth as follows." ] }, { "cell_type": "code", "execution_count": 15, "id": "wicked-venice", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "bh2 = BetHedgingWithSideInformation(phe_dist2, fit_mat)\n", "bh2.grow(env_seq, mes_seq)" ] }, { "cell_type": "code", "execution_count": 16, "id": "prospective-internet", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "average growth rate = 0.01114425914350944\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "T = len(bh2.pop_hist)\n", "lam_avg2 = np.log(bh2.pop_hist[T-1]) / T\n", "print(f'average growth rate = {lam_avg2}')\n", "\n", "plt.figure()\n", "plt.plot(bh2.pop_hist)\n", "plt.plot(np.exp(lam_avg2 * np.arange(T)), label='average growth rate')\n", "plt.yscale('log')\n", "plt.xlabel('time steps')\n", "plt.ylabel('asset')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "hired-typing", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "Hooray! We are now making money." ] }, { "cell_type": "markdown", "id": "regional-literacy", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "### Optimal bet with side information" ] }, { "cell_type": "markdown", "id": "horizontal-export", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "How do we make the best use of the side information? That is, what would be the optimal betting strategy given the side information? To find it out, let us try different strategies by varying the parameters $q_{10}$ and $q_{11}$. Note that we will use the same environment and message sequences for all simulations, so that the growth rate will be a smooth function of the parameters." ] }, { "cell_type": "code", "execution_count": 17, "id": "south-speaker", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "q10 = 0.00, q11 = 0.03, lam_avg = -inf\r" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/b.xue/Programs/python/lib/python3.7/site-packages/ipykernel_launcher.py:14: RuntimeWarning: divide by zero encountered in log\n", " \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "q10 = 1.00, q11 = 1.00, lam_avg = -inf71873\r" ] } ], "source": [ "q10_list = np.linspace(0, 1, 101) # list of q_10 values\n", "q11_list = np.linspace(0, 1, 101) # list of q_11 values\n", "lam_avg_array = np.zeros((len(q10_list), len(q11_list)))\n", "\n", "for i in range(len(q10_list)):\n", " for j in range(len(q11_list)):\n", " q10 = q10_list[i]\n", " q11 = q11_list[j]\n", " phe_dist = np.array([[1-q10, 1-q11],\n", " [q10, q11]])\n", " bh2 = BetHedgingWithSideInformation(phe_dist, fit_mat)\n", " T = 2000 # use a shorter time to avoid round-off and save time\n", " bh2.grow(env_seq[:T], mes_seq[:T])\n", " lam_avg = np.log(bh2.pop_hist[T-1]) / T\n", " lam_avg_array[i,j] = lam_avg\n", " print(f'q10 = {q10:.2f}, q11 = {q11:.2f}, lam_avg = {lam_avg:.6f}', end='\\r')" ] }, { "cell_type": "markdown", "id": "minus-wallace", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Since it is a 2-d array, we can plot our result as a heatmap." ] }, { "cell_type": "code", "execution_count": 18, "id": "seven-mailman", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.imshow(lam_avg_array, extent=(0, 1, 0, 1), origin='lower')\n", "plt.colorbar()\n", "plt.xlim(0, 1)\n", "plt.ylim(0, 1)\n", "plt.xlabel(r'$q(1|1)$')\n", "plt.ylabel(r'$q(1|0)$')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "specialized-buffalo", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "We can see the parameter region where the growth rate peaks (don't worry about some regions that are cut out because of round-off error). Let us find the values of the distribution with the maximum growth rate." ] }, { "cell_type": "code", "execution_count": 19, "id": "sixth-touch", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "optimal conditional bets =\n", "[[0.94 0.49]\n", " [0.06 0.51]]\n", "maximum growth rate = 0.14081738596108814\n" ] } ], "source": [ "imax, jmax = np.unravel_index(np.argmax(lam_avg_array), lam_avg_array.shape)\n", "q10_opt = q10_list[imax]\n", "q11_opt = q11_list[jmax]\n", "lam_avg_max = lam_avg_array[imax, jmax]\n", "print(f'optimal conditional bets =\\n{np.array([[1-q10_opt, 1-q11_opt], [q10_opt, q11_opt]])}')\n", "print(f'maximum growth rate = {lam_avg_max}')" ] }, { "cell_type": "markdown", "id": "amazing-charter", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "According to this optimal conditional strategy, we should not fully trust the message (indeed, recall that the message is accurate only 80% of the time). For example, when we receive message \"1\", we should only bet about half of the money on each horse. Intuitively, this is because horse 1 has a relatively low chance of winning, so even when we are told that it is going to win, we should take that with a grain of salt and be more cautious.\n", "\n", "To see how we are using the side information, we should compare to the best strategy without side information, which we found above to be (0.78, 0.22). That means, when we receive a message \"0\", we increase the bet on horse 0 from 78% to 94%; similarly, when we receive a message \"1\", we increase the bet on horse 1 from 22% to 51%. As a result, we have increased our asset growth rate from 0.01 to 0.14 --- this is the value of side information." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }