Le problème de l'arbre d'argent magique

19

J'ai pensé à ce problème sous la douche, il a été inspiré par les stratégies d'investissement.

Disons qu'il y avait un arbre d'argent magique. Chaque jour, vous pouvez offrir une somme d'argent à l'arbre monétaire et il la triplera ou la détruira avec une probabilité de 50/50. Vous remarquez immédiatement qu'en moyenne, vous gagnerez de l'argent en faisant cela et vous avez hâte de profiter de l'arbre de l'argent. Cependant, si vous offriez tout votre argent en même temps, vous perdriez 50% de tout votre argent. Inacceptable! Vous êtes une personne peu averse au risque, vous décidez donc de trouver une stratégie. Vous voulez minimiser les chances de tout perdre, mais vous voulez aussi gagner autant d'argent que possible! Vous venez avec ce qui suit: chaque jour, vous offrez 20% de votre capital actuel à l'arbre monétaire. En supposant que le plus bas que vous puissiez offrir est de 1 cent, il vous faudrait 31 périodes de pertes pour perdre tout votre argent si vous commenciez avec 10 dollars. Quoi de plus, plus vous gagnez d'argent, plus la séquence de défaites doit être longue pour que vous perdiez tout, incroyable! Vous commencez rapidement à gagner beaucoup d'argent. Mais une idée vous vient à l'esprit: vous pouvez simplement offrir 30% par jour et gagner beaucoup plus d'argent! Mais attendez, pourquoi ne pas offrir 35%? 50%? Un jour, avec de gros signes en dollars dans les yeux, vous courez vers l'arbre à argent avec tous vos millions et offrez 100% de votre argent, que l'arbre à argent brûle rapidement. Le lendemain, vous obtenez un emploi chez McDonalds. que l'arbre d'argent brûle rapidement. Le lendemain, vous obtenez un emploi chez McDonalds. que l'arbre d'argent brûle rapidement. Le lendemain, vous obtenez un emploi chez McDonalds.

Y a-t-il un pourcentage optimal de votre argent que vous pouvez offrir sans tout perdre?

(sous) questions:

S'il y a un pourcentage optimal que vous devez proposer, est-ce statique (c'est-à-dire 20% par jour) ou le pourcentage devrait-il augmenter à mesure que votre capital augmente?

En offrant 20% chaque jour, les chances de perdre tout votre argent diminuent-elles ou augmentent-elles avec le temps? Y a-t-il un pourcentage d'argent d'où les chances de perdre tout votre argent augmentent avec le temps?

ElectronicToothpick
la source
7
Cela semble être une variation de la ruine de Gambler
Robert Long
2
Une grande partie de cette question dépend de la possibilité ou non de fractionner les cents. En outre, il existe de nombreux objectifs possibles que quelqu'un pourrait avoir dans cette situation. Différents objectifs auraient différentes stratégies optimales.
Buge

Réponses:

19

Il s'agit d'un problème bien connu. Cela s'appelle un pari Kelly. Soit dit en passant, la réponse est 1/3. Cela équivaut à maximiser l'utilité du journal de la richesse.

Kelly a commencé par prendre le temps de l'infini, puis à résoudre à l'envers. Comme vous pouvez toujours exprimer des retours en termes de composition continue, vous pouvez également inverser le processus et l'exprimer dans des journaux. Je vais utiliser l'explication de l'utilitaire de journal, mais l'utilitaire de journal est pratique. Si vous maximisez la richesse en vous vous retrouverez avec une fonction qui sera la même que l'utilitaire de journalisation. Si est la cote de paiement, et est la probabilité de gagner et est le pourcentage de richesse investie, alors la dérivation suivante fonctionnera.nbpX

Pour un pari binaire, , pour une seule période et richesse unitaire.E(log(X))=plog(1+bX)+(1p)log(1X)

ddXE[log(x)]=ddX[plog(1+bX)+(1p)log(1X)]
=pb1+bX1p1X

Mettre le dérivé à zéro pour trouver les extrema,

pb1+bX-1-p1-X=0

En multipliant, vous vous retrouvez avec

pb(1-X)-(1-p)(1+bX)=0
pb-pbX-1-bX+p+pbX=0
bX=pb1+p
X=bp(1p)b

Dans votre cas,

X=3×12(112)3=13.

Vous pouvez facilement étendre cela à des résultats multiples ou continus en résolvant l'utilité attendue de la richesse sur une distribution de probabilité conjointe, en choisissant les allocations et sous réserve de toute contrainte. Fait intéressant, si vous l'exécutez de cette manière, en incluant des contraintes, telles que la capacité de faire face aux paiements hypothécaires et ainsi de suite, alors vous avez comptabilisé votre ensemble total de risques et vous avez donc un risque ajusté ou au moins contrôlé par le risque Solution.

Desiderata Le but réel de la recherche originale avait à voir avec combien de jeu basé sur un signal bruyant. Dans le cas précis, combien jouer sur un signal électronique bruyant où il indiquait le lancement d'armes nucléaires par l'Union soviétique. Il y a eu plusieurs lancements à la fois par les États-Unis et la Russie, manifestement par erreur. Combien jouez-vous sur un signal?

Dave Harris
la source
Cette stratégie donnerait un plus grand risque de se ruiner , je pense que par rapport aux fractions inférieures
probabilityislogic
@probabilityislogic Uniquement dans le cas où il existe des sous. Dans le cas discret, cela deviendrait vrai parce que vous pourriez parier votre dernier sou. Vous ne pouviez pas parier un tiers de sou. Dans un monde discret, il est intrinsèquement vrai que la probabilité de faillite doit augmenter dans la taille de l'allocation, indépendamment du cas de paiement. Une allocation de 2% a une plus grande probabilité de faillite qu'un 1% dans un monde discret.
Dave Harris
@probabilityislogic si vous commencez avec 3 cents, c'est risqué. Si vous commencez avec 550 $, il y a moins d'une chance sur 1024 de faire faillite. Pour des tailles de pots raisonnables, le risque d'effondrement discret devient faible à moins que vous n'alliez vraiment à l'infini, puis il devient une certitude à moins que l'emprunt ne soit autorisé.
Dave Harris
Je m'attendais à ce que ce soit un problème connu, mais je ne savais pas comment le rechercher. Merci pour la mention de Kelly. Une question cependant: wikipedia sur le critère kelly mentionne la formule suivante pour calculer le pourcentage optimal: (bp-q) / b. Où b est le #dollar que vous obtenez en pariant 1 $, p la probabilité de gagner et q la chance de perdre. Si je remplis ceci pour mon scénario, j'obtiens: (2 * 0,5-0,5) /2=0,25. Cela signifie que le pourcentage optimal pour parier serait de 25%. Qu'est-ce qui cause cet écart avec votre réponse du 1/3?
ElectronicToothpick
3
@ElectronicToothpick si vous remplissez b = 3, vous obtenez 1/3. La différence réside dans la façon dont vous considérez le triple paiement. Supposons que vous commencez avec 1 dollar et que vous misez 50 cents, puis vous considérez le triple paiement comme se terminant par cinquante-cinquante 50 cents ou 2 dollars (b = 2, c'est-à-dire moins 50 cents ou plus 2 fois 50 cents) contre cinquante-cinquante 50 cents ou 2,50 dollars (b = 3, c'est-à-dire moins 50 cents ou plus 3 fois 50 cents).
Sextus Empiricus
5

J'ai aimé la réponse donnée par Dave Harris. tout en abordant le problème d'un point de vue "à faible risque", plutôt que de maximiser les profits

La marche aléatoire que vous faites, en supposant que votre mise de fraction est q et que la probabilité de gagner p=0.5 est donnée par

Yt|Yt1=(1q+3qXt)Yt1
XtBernoulli(p) . vous avez en moyenne
E(Yt|Yt1)=(1q+3pq)Yt1
Vous pouvez l'appliquer itérativement pour obtenir
Yt|Y0=Y0j=1t(1q+3qXt)
avec la valeur attendue
E(Yt|Y0)=(1q+3pq)tY0
vous pouvez également exprimer la quantité au tempst en fonction d'une seule variable aléatoireZt=j=1tXtBinomial(t,p) , mais notant queZt n'est pas indépendant deZt1
Yt|Y0=Y0(1+2q)Zt(1q)tZt

stratégie possible

vous pouvez utiliser cette formule pour déterminer une valeur de «faible risque» pour q . Supposons que vous vouliez vous assurer qu'après k pertes consécutives, vous disposiez toujours de la moitié de votre richesse d'origine. Ensuite, vous définissez q=12k1

En prenant l'exemple k=5 , nous fixons q=0.129 , ou avec k=15 nous fixons q=0.045 .

En outre, en raison de la nature récursive de la stratégie, ce risque correspond à ce que vous prenez à chaque pari. C'est-à-dire qu'au temps s , en continuant à jouer, vous vous assurez qu'au temps k+s votre richesse sera d'au moins 0.5Ys

discussion

la stratégie ci-dessus ne dépend pas du gain de la victoire, mais plutôt de la fixation d'une limite à la perte. Nous pouvons obtenir les gains attendus en substituant la valeur de q nous avons calculée, et au moment k qui a été utilisé en tenant compte du risque.

cependant, il est intéressant de regarder la médiane plutôt que la rentabilité attendue au temps t , ce qui peut être trouvé en supposant que median(Zt)tp .

Yk|Y0=Y0(1+2q)tp(1q)t(1p)
lorsque p=0.5 nous avons le rapport égal à (1+q2q2)0.5t . Ceci est maximisé lorsqueq=0.25 et supérieur à1 lorsqueq<0.5

il est également intéressant de calculer les chances que vous soyez en avance au temps t . pour ce faire, nous devons déterminer la valeur z telle sorte que

(1+2q)z(1q)tz>1
faisant un certain réarrangement, nous constatons que la proportion de victoires devrait satisfaire
zt>log(1q)log(1q)log(1+2q)
Ceci peut être branché dans une approximation normale (note: moyenne de0.5et erreur standard de0.5t ) comme
Pr(ahead at time t)Φ(tlog(1+2q)+log(1q)[log(1+2q)log(1q)])

ce qui montre clairement que le jeu a de très bonnes chances. le facteur multipliant t est minimisé lorsqueq=0(valeur maximisée de13 ) et décroît de façon monotone en fonction deq. la stratégie "à faible risque" consiste donc à miser une très petite fraction de votre richesse et à jouer un grand nombre de fois.

supposons que nous comparons cela avec q=13 etq=1100 . le facteur pour chaque cas est de0.11et0.32. Cela signifie qu'après38matchs, vous auriez environ 95% de chances d'être en tête avec la petite mise, contre 75% avec la plus grosse mise. De plus, vous avez également une chance de faire faillite avec la mise la plus importante, en supposant que vous deviez arrondir votre mise au 5 cents ou au dollar le plus proche. À partir de20cela pourrait aller de13.35,8.90,5.95,3.95,2.65,1.75,1.15,0.75,0.50,0.35,0.25,0.15,0.1,0.05,0 . Il s'agit d'une séquence de14 défaites sur38 , et étant donné que le jeu s'attend à19 défaites, si vous n'avez pas de chance avec les premiers paris, alors même gagner peut ne pas compenser une mauvaise séquence (par exemple, si la plupart de vos victoires se produisent une fois que la plupart des richesses ont disparu). la rupture avec la plus petite participation de 1% n'est pas possible en38 matchs. Le revers de la médaille est que la plus petite mise se traduira par un bénéfice beaucoup plus faible en moyenne, quelque chose comme uneaugmentation de350 fois avec la grosse mise par rapport à1.2 augmenter avec le petit pari (c'est-à-dire que vous vous attendez à avoir 24 dollars après 38 tours avec le petit pari et 7000 dollars avec le gros pari).

probabilitéislogique
la source
il est si l' on considère que est choisi de manière à faible risque et nous ne sommes pas calcules pour t > > k , ce n'est pas trop mauvaise approximation. Il surestime donc probablement le profit de la grande stratégie de paris. qt>>k
probabilitéislogic
Votre approche pour maximiser la médiane de est en fait la même que celle de Dave Harris qui maximise la moyenne de Z t (qui est la même que la médiane de Z t ). Ce serait différent quand on maximise la moyenne de Y t qui est distribuée lognormalement et pour laquelle la moyenne et la médiane ne sont pas les mêmes. ZtZtZtYt
Sextus Empiricus
5

Je ne pense pas que ce soit très différent de la Martingale. Dans votre cas, il n'y a pas de paris doublés, mais le gain gagnant est de 3x.

J'ai codé une "réplique vivante" de votre arbre. Je lance 10 simulations. Dans chaque simulation (trace), vous commencez avec 200 pièces et essayez avec l'arbre, 1 pièce à chaque fois 20 000 fois.

Les seules conditions qui arrêtent la simulation sont la faillite ou avoir «survécu» à 20 000 tentatives

enter image description here

Je pense que quelles que soient les chances, la faillite vous attend tôt ou tard.


Le code est du javascript improvisé mais sans dépendance: https://repl.it/@cilofrapez/MagicTree-Roulette

Il vous montre immédiatement les résultats. Le code est simple à peaufiner: pour exécuter cependant autant de simulations, le montant des mises, autant de tentatives ... N'hésitez pas à jouer!

Au bas du code, les résultats de chaque simulation (par défaut 10) sont enregistrés dans un fichier CSV avec deux colonnes: numéro de rotation et argent. Je l'ai fait pour qu'il puisse être introduit dans un traceur en ligne pour les graphiques.

Il serait facile de tout automatiser localement en utilisant la bibliothèque Google Charts par exemple. Si vous voulez seulement voir les résultats à l'écran, vous pouvez commenter cette dernière partie comme je l'ai mentionné dans le fichier.

ÉDITER

Code source:

/**
 * License: MIT
 * Author: Carles Alcolea, 2019
 * Usage: I recommend using an online solution like repl.it to run this code.
 * Nonetheless, having node installed, it's as easy as running `node magicTree.js`.
 *
 * The code will run `simulations` number of scenarios, each scenario is equal in settings
 * which are self-descriptive: `betAmount`,`timesWinPayout`, `spinsPerSimulation`, `startingBankRoll`
 * and `winningOdds`.
 *
 * At the end of the code there's a part that will generate a *.csv file for each simulation run.
 * This is useful for ploting the resulting data using any such service or graphing library. If you
 * wish the code to generate the files for you, just set `saveResultsCSV` to true. All files will
 * have two columns: number of spin and current bankroll.
 */

const fs = require('fs'); // Only necessary if `saveResultsCSV` is true

/**
 * ==================================
 * You can play with the numbers of the following variables all you want:
 */
const betAmount          = 0.4,   // Percentage of bankroll that is offered to the tree
      winningOdds        = 0.5,
      startingBankRoll   = 200,
      timesWinPayout     = 2,
      simulations        = 5,
      spinsPerSimulation = 20000,
      saveResultsCSV     = false;
/**
 * ==================================
 */

const simWins = [];
let currentSim = 1;

//* Each simulation:
while (currentSim <= simulations) {
  let currentBankRoll = startingBankRoll,
      spin            = 0;
  const resultsArr  = [],
        progressArr = [];

  //* Each spin/bet:
  while (currentBankRoll > 0 && spin < spinsPerSimulation) {
    if (currentBankRoll === Infinity) break; // Can't hold more cash!
    let currentBet = Math.ceil(betAmount * currentBankRoll);
    if (currentBet > currentBankRoll) break;  // Can't afford more bets... bankrupt!

    const treeDecision = Math.random() < winningOdds;
    resultsArr.push(treeDecision);
    if (treeDecision) currentBankRoll += currentBet * timesWinPayout; else currentBankRoll -= currentBet;
    progressArr.push(currentBankRoll);
    spin++;
  }

  const wins = resultsArr.filter(el => el === true).length;
  const losses = resultsArr.filter(el => el === false).length;
  const didTheBankRollHold = (resultsArr.length === spinsPerSimulation) || currentBankRoll === Infinity;

  const progressPercent = didTheBankRollHold ? `(100%)` : `(Bankrupt at aprox ${((resultsArr.length / parseFloat(spinsPerSimulation)) * 100).toPrecision(4)}% progress)`;

  // Current simulation summary
  console.log(`
  - Simulation ${currentSim}: ${progressPercent === '(100%)' ? '✔' : '✘︎'}
    Total:      ${spin} spins out of ${spinsPerSimulation} ${progressPercent}
    Wins:       ${wins} (aprox ${((wins / parseFloat(resultsArr.length)) * 100).toPrecision(4)}%)
    Losses:     ${losses} (aprox ${((losses / parseFloat(resultsArr.length)) * 100).toPrecision(4)}%)
    Bankroll:   ${currentBankRoll}
  `);

  if (didTheBankRollHold) simWins.push(1);

  /**
   * ==================================
   * Saving data?
   */
  if (saveResultsCSV) {
    let data = `spinNumber, bankRoll`;
    if (!fs.existsSync('CSVresults')) fs.mkdirSync('CSVresults');
    progressArr.forEach((el, i) => {
      data += `\n${i + 1}, ${el}`;
    });
    fs.writeFileSync(`./CSVresults/results${currentSim}.csv`, data);
  }
  /**
   * ==================================
   */

  currentSim++;
}

// Total summary
console.log(`We ran ${simulations} simulations, with the goal of ${spinsPerSimulation} spins in each one.
Our bankroll (${startingBankRoll}) has survived ${simWins.length} out of ${simulations} simulations, with ${(1 - winningOdds) * 100}% chance of winning.`);
```
Carles Alcolea
la source
1
Pouvez-vous également publier le code que vous avez écrit pour cela?
baxx
1
Il s'agit de parier avec une mise constante - mais de parier une proportion fixe de votre richesse, comme ici, chaque fois produirait un résultat différent. Vous devrez peut-être l'adapter pour éviter les pièces de monnaie fractionnelles (par exemple arrondir à moins que cela ne produise une valeur inférieure à1pièce, auquel cas misez1pièce)1411
Henry
@baxx Bien sûr, je viens de mettre à jour le message. Henry, je ne suis pas sûr de t'avoir compris. Je peux adapter le code à différents besoins si vous le souhaitez.
Carles Alcolea
@CarlesAlcolea Je disais simplement que ce serait bien si le code que vous avez utilisé pour le message était contenu dans le message lui-même. Je ne sais pas si le lien vers la réponse que vous avez publié mourra à un moment donné ou non
baxx
1
@baxx Bien sûr! Après avoir écrit ce programme improvisé, j'ai pensé que je devrais faire une petite application en ligne, pour pouvoir explorer facilement presque toutes les situations de ce genre. Je n'en ai pas trouvé. Maintenant, je suis noyé dans le travail donc pour le moment je laisse le code dans la poste et l'application sur ma liste de
tâches
4

Énoncé du problème

Soit Yt=log10(Mt) le logarithme de la somme d'argent Mt le joueur a au temps t .

Soit q la fraction d'argent que le joueur parie.

Soit Y0=1 la somme d'argent avec laquelle le joueur commence (dix dollars). Soit YL=2 le montant d'argent où le joueur fait faillite (en dessous de 1 cent). Pour simplifier, nous ajoutons une règle selon laquelle le joueur arrête de jouer lorsqu'il a dépassé une certaine somme d'argent YW (nous pouvons ensuite lever cette règle en prenant la limite YW ).

Marche aléatoire

Vous pouvez voir la croissance et le déclin de l'argent comme une marche aléatoire asymétrique. Autrement dit, vous pouvez décrire Yt comme:

Yt=Y0+i=1tXi

P[Xi=aw=log(1+2q)]=P[Xi=al=log(1q)]=12

Probabilité de faillite

Martingale

L'expression

Zt=cYt

est une martingale quand on choisit c tel que.

caw+cal=2
c<1q<0.5

E[Zt+1]=E[Zt]12caw+E[Zt]12cal=E[Zt]

Probabilité de se retrouver en faillite

Yt<YLYt>YWYWYLaw

E[Zτ]τE[Z0]

Donc

cY0=E[Z0]=E[Zτ]P[Yτ<L]cYL+(1P[Yτ<L])cYW

et

P[Yτ<YL]cY0cYWcYLcYW

and the limit YW

P[Yτ<YL]cY0YL

Conclusions

Is there an optimal percentage of your cash you can offer without losing it all?

Whichever is the optimal percentage will depend on how you value different profits. However, we can say something about the probability to lose it all.

Only when the gambler is betting zero fraction of his money then he will certainly not go bankrupt.

With increasing q the probability to go bankrupt will increase up to some point where the gambler will almost surely go bankrupt within a finite time (the gambler's ruin mentioned by Robert Long in the comments). This point, qgambler's ruin, is at

qgambler's ruin=11/b
This is the point where there is no solution for c below one. This is also the point where the increasing steps aw are smaller than the decreasing steps al.

Thus, for b=2, as long as the gambler bets less than half the money then the gambler will not certainly go bankrupt.

do the odds of losing all your money decrease or increase over time?

The probability to go bankrupt is dependent on the distance from the amount of money where the gambler goes bankrupt. When q<qgambler's ruin the gambler's money will, on average increase, and the probability to go bankrupt will, on average, decrease.

Bankruptcy probability when using the Kelly criterion.

When you use the Kelly criterion mentioned in Dave Harris answer, q=0.5(11/b), for b being the ratio between loss and profit in a single bet, then independent from b the value of c will be equal to 0.1 and the probability to go bankrupt will be 0.1SL.

That is, independent from the assymetry parameter b of the magic tree, the probability to go bankrupt, when using the Kelly criterion, is equal to the ratio of the amount of money where the gambler goes bankrupt and the amount of money that the gambler starts with. For ten dollars and 1 cent this is a 1:1000 probability to go bankrupt, when using the Kelly criterion.

Simulations

The simulations below show different simulated trajectories for different gambling strategies. The red trajectories are ones that ended up bankrupt (hit the line Yt=2).

simulations

Distribution of profits after time t

To further illustrate the possible outcomes of gambling with the money tree, you can model the distribution of Yt as a one dimensional diffusion process in a homogeneous force field and with an absorbing boundary (where the gambler get's bankrupt). The solution for this situation has been given by Smoluchowski

Smoluchowski, Marian V. "Über Brownsche Molekularbewegung unter Einwirkung äußerer Kräfte und deren Zusammenhang mit der verallgemeinerten Diffusionsgleichung." Annalen der Physik 353.24 (1916): 1103-1112. (online available via: https://www.physik.uni-augsburg.de/theo1/hanggi/History/BM-History.html)

Equation 8:

W(x0,x,t)=ec(xx0)2Dc2t4D2πDt[e(xx0)24Dte(x+x0)24Dt]

This diffusion equation relates to the tree problem when we set the speed c equal to the expected increase E[Yt], we set D equal to the variance of the change in a single steps Var(Xt), x0 is the initial amount of money, and t is the number of steps.

The image and code below demonstrate the equation:

  • The histogram shows the result from a simulation.

  • The dotted line shows a model when we use a naive normal distribution to approximate the distribution (this corresponds to the absence of the absorbing 'bankruptcy' barrier). This is wrong because some of the results above the bankruptcy level involve trajectories that have passed the bankruptcy level at an earlier time.

  • The continuous line is the approximation using the formula by Smoluchowski.

illustration as diffusion in force field

Codes

#
## Simulations of random walks and bankruptcy:
#

# functions to compute c
cx = function(c,x) {
  c^log(1-x,10)+c^log(1+2*x,10) - 2
}
findc = function(x) {
  r <- uniroot(cx, c(0,1-0.1^10),x=x,tol=10^-130)
  r$root
}


# settings
set.seed(1)
n <- 100000
n2 <- 1000
q <- 0.45

# repeating different betting strategies
for (q in c(0.35,0.4,0.45)) {
  # plot empty canvas
  plot(1,-1000,
       xlim=c(0,n2),ylim=c(-2,50),
       type="l",
       xlab = "time step", ylab = expression(log[10](M[t])) )

  # steps in the logarithm of the money
  steps <- c(log(1+2*q,10),log(1-q,10))

  # counter for number of bankrupts
  bank <- 0

  # computing 1000 times
  for (i in 1:1000) {
    # sampling wins or looses
    X_t <- sample(steps, n, replace = TRUE)
    # compute log of money
    Y_t <- 1+cumsum(X_t)
    # compute money
    M_t <- 10^Y_t
    # optional stopping (bankruptcy)
    tau <- min(c(n,which(-2 > Y_t)))
    if (tau<n) {
      bank <- bank+1
    }
    # plot only 100 to prevent clutter
    if (i<=100) {
      col=rgb(tau<n,0,0,0.5)
      lines(1:tau,Y_t[1:tau],col=col)
    }
  }
  text(0,45,paste0(bank, " bankruptcies out of 1000 \n", "theoretic bankruptcy rate is ", round(findc(q)^3,4)),cex=1,pos=4)
  title(paste0("betting a fraction ", round(q,2)))
}

#
## Simulation of histogram of profits/results
#

# settings
set.seed(1)
rep <- 10000  # repetitions for histogram
n   <- 5000   # time steps
q   <- 0.45    # betting fraction
b   <- 2      # betting ratio loss/profit
x0  <- 3      # starting money

# steps in the logarithm of the money
steps <- c(log(1+b*q,10),log(1-q,10))

# to prevent Moiré pattern in
# set binsize to discrete differences in results
binsize <- 2*(steps[1]-steps[2]) 

for (n in c(200,500,1000)) {

  # computing several trials
  pays <- rep(0,rep)
  for (i in 1:rep) {
    # sampling wins or looses
    X_t <- sample(steps, n, replace = TRUE)
      # you could also make steps according to a normal distribution
      # this will give a smoother histogram
      # to do this uncomment the line below
    # X_t <- rnorm(n,mean(steps),sqrt(0.25*(steps[1]-steps[2])^2))

    # compute log of money
    Y_t <- x0+cumsum(X_t)
    # compute money
    M_t <- 10^Y_t
    # optional stopping (bankruptcy)
    tau <- min(c(n,which(Y_t < 0)))
    if (tau<n) {
      Y_t[n] <- 0
      M_t[n] <- 0
    }
    pays[i] <- Y_t[n]
  }

  # histogram
  h <- hist(pays[pays>0],
            breaks = seq(0,round(2+max(pays)),binsize), 
            col=rgb(0,0,0,0.5),
            ylim=c(0,1200),
            xlab = "log(result)", ylab = "counts",
            main = "")
  title(paste0("after ", n ," steps"),line = 0)  

  # regular diffusion in a force field (shifted normal distribution)
  x <- h$mids
  mu <- x0+n*mean(steps)
  sig <- sqrt(n*0.25*(steps[1]-steps[2])^2)
  lines(x,rep*binsize*(dnorm(x,mu,sig)), lty=2)

  # diffusion using the solution by Smoluchowski
  #   which accounts for absorption
  lines(x,rep*binsize*Smoluchowski(x,x0,0.25*(steps[1]-steps[2])^2,mean(steps),n))

}
Sextus Empiricus
la source
"That is, independent from the assymetry parameter b of the magic tree, the probability to go bankrupt, when using the Kelly criterion, is equal to the ratio of the amount of money where the gambler goes bankrupt and the amount of money that the gambler starts with. For ten dollars and 1 cent this is a 1:1000 probability to go bankrupt" Im a bit surprised about this. So this means the probability to go bankrupt will be 1:1000 even if the payout is 10 times the offered money per round? How is this possible when the odds of going bankrupt decrease as your money grows?
ElectronicToothpick
1
@ElectronicToothpick If the payout is larger, and if you do not change the fraction that you gamble, then the probability to go bankrupt will be smaller. However, when you increase the fraction that you gamble, then this may not be true anymore. With the Kelly criterion, you will increase the fraction to gamble when the payout is higher. This will increase the expected value of the logarithm of the money, but as a consequence, the probability to go bankrupt will remain the same.
Sextus Empiricus
1
Actually, when the gambler is not using the Kelly criterion, which optimizes E[logMt], but instead chooses to optimize E[Mt], then the consequence is that a higher fraction of the amount of money is being gambled. Possibly this might lead to an increase in the risk of bankruptcy when the payout is made larger. I could add an analysis of this, but I am afraid that my answer is already too long and/or complex.
Sextus Empiricus