Sihirli Para Ağacı Sorunu


19

Duşta bu sorunu düşündüm, yatırım stratejilerinden ilham aldı.

Diyelim ki sihirli bir para ağacı var. Her gün, para ağacına bir miktar para teklif edebilirsiniz ve bu onu üçe katlayacak ya da 50/50 olasılıkla yok edecektir. Bunu yaparak ortalama olarak para kazanacağınızı ve para ağacından yararlanmaya istekli olduğunuzu hemen fark edersiniz. Ancak, tüm paranızı bir kerede teklif ettiyseniz, tüm paranızı% 50 oranında kaybedersiniz. Kabul edilemez! Riskten oldukça hoş bir insansınız, bu yüzden bir strateji bulmaya karar veriyorsunuz. Her şeyi kaybetme olasılığını en aza indirmek istiyorsun, ama aynı zamanda olabildiğince çok para kazanmak istiyorsun! Aşağıdakileri bulursunuz: her gün, mevcut sermayenizin% 20'sini para ağacına sunuyorsunuz. Eğer sunabileceğiniz en düşük 1 cent varsayarsak, 10 dolar ile başlarsanız tüm paranızı kaybetmek 31 kayıp çizgi alacaktı. Daha ne, ne kadar çok para kazanırsanız, kaybettiğiniz çizgi ne kadar uzun olursa olsun, her şeyi kaybetmeniz gerekir, inanılmaz! Hızlıca bol miktarda nakit kazanmaya başlarsınız. Ama sonra bir fikir aklınıza gelir: her gün% 30 teklif verebilir ve daha fazla para kazanabilirsiniz! Ama bekleyin, neden% 35 teklif etmiyorsunuz? % 50? Bir gün, gözlerinizdeki büyük dolar işaretleri ile tüm milyonlarca para ağacına koşarsınız ve paranızın derhal yaktığı paranızın% 100'ünü sunarsınız. Ertesi gün McDonalds'ta bir iş bulursunuz. para ağacının hemen yanması. Ertesi gün McDonalds'ta bir iş bulursunuz. para ağacının hemen yanması. Ertesi gün McDonalds'ta bir iş bulursunuz.

Her şeyi kaybetmeden sunabileceğiniz en uygun paranın yüzdesi var mı?

(alt) sorular:

Eğer teklif etmeniz gereken optimal bir yüzde varsa, bu durağan mı (yani her gün% 20) veya sermayeniz arttıkça yüzde artmalı mı?

Her gün% 20 teklif vererek, tüm paranızı kaybetme olasılığı zaman içinde azalıyor veya artıyor mu? Tüm paranızı kaybetme olasılığının zaman içinde arttığı bir yüzde para var mı?


7
Bu Gambler'in harabesinde bir varyasyon gibi görünüyor
Robert Long

2
Bu sorunun çoğu kesirli sentlerin mümkün olup olmadığına bağlıdır. Ek olarak, birisinin bu durumda sahip olabileceği birçok olası hedef vardır. Farklı hedeflerin farklı optimal stratejileri olacaktır.
Buge

Yanıtlar:


19

Bu iyi bilinen bir sorundur. Buna Kelly bahsi denir. Bu arada cevap 1/3. Servetin günlük faydasını maksimuma çıkarmaya eşdeğerdir.

Kelly sonsuzluğa zaman ayırıp geriye doğru çözerek başladı. İadeleri her zaman sürekli birleştirme açısından ifade edebildiğiniz için, işlemi tersine çevirebilir ve günlüklerde ifade edebilirsiniz. Günlük yardımcı programı açıklamasını kullanacağım, ancak günlük yardımcı programı kolaylık sağlıyor. Zenginliği olarak en üst düzeye çıkarıyorsanız, günlük yardımcı programıyla aynı şekilde çalışan bir işlev elde edersiniz. Eğer ödeme oranları, ve kazanma olasılığı olduğunu ve yatırım zenginlik yüzdesidir, sonra aşağıdaki türetme çalışacaktır.nbpX

İkili bahis için, , tek bir dönem ve birim zenginlik için.E(log(X))=plog(1+bX)+(1p)log(1X)

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

Ekstremi bulmak için türevi sıfıra ayarlamak,

pb1+bX1p1X=0

Çapraz çarpma,

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

Sizin durumunuzda,

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

Ortak olasılık dağılımında servetin beklenen faydasını çözerek, tahsisleri seçerek ve herhangi bir kısıtlamaya tabi olarak bunu kolayca veya sürekli sonuçlara genişletebilirsiniz. İlginç bir şekilde, bu şekilde gerçekleştirirseniz, ipotek ödemelerini karşılama ve benzeri gibi kısıtlamalar ekleyerek, toplam risk setinizi muhasebeleştirdiniz ve böylece riske göre ayarlanmış veya en azından risk kontrollü olursunuz çözüm.

Desiderata Orijinal araştırmanın asıl amacı, gürültülü bir sinyale dayalı olarak kumar oynamanın ne kadarı ile ilgiliydi. Belirli bir durumda, Sovyetler Birliği tarafından nükleer silahların başladığını belirten gürültülü bir elektronik sinyalde ne kadar kumar oynanacağı. Hem Amerika Birleşik Devletleri hem de Rusya tarafından bazı hatalar meydana geldi. Bir sinyalde ne kadar kumar oynarsınız?


Gidiş riskinin daha yüksek verecekti Bu strateji ben alt fraksiyonlara göre düşünmek kırdı
probabilityislogic

@probabilityislogic Sadece pelerinlerin bulunduğu durumda. Ayrık durumda, bu gerçek olur çünkü son kuruşunuza bahis oynayabilirsiniz. Bir kuruşun üçte birine bahse giremezdin. Ayrık bir dünyada, iflas olasılığının, ödeme durumundan bağımsız olarak, tahsis boyutunda artması gerektiği doğal olarak doğrudur. % 2'lik bir tahsisin, ayrı bir dünyada% 1'den daha fazla iflas olasılığı vardır.
Dave Harris

@probabilityislogic 3 sent ile başlarsanız risklidir. 550 $ ile başlarsanız, 1024'te iflas etme şansı birden azdır. Makul tencere boyutları için, gerçekten sonsuza gitmedikçe ayrık çökme riski azalır, ardından borçlanmaya izin verilmedikçe kesinlik kazanır.
Dave Harris

Bunun bilinen bir sorun olacağını umuyordum ama nasıl arayacağımı bilmiyordum. Kelly'den bahsettiğiniz için teşekkürler. Yine de bir soru: Kelly kriteri üzerindeki wikipedia en uygun yüzdeyi hesaplamak için aşağıdaki formülden bahsediyor: (bp-q) / b. B, 1 $ bahis oynadığınız # dolar, p kazanma olasılığı ve q kaybetme şansı. Bunu senaryom için doldurursam: (2 * 0.5-0.5) /2=0.25. Yani bahis için en uygun yüzde% 25 olacaktır. 1/3 cevabınızla bu tutarsızlığa ne sebep olur?
ElectronicToothpick

3
@ElectronicToothpick b = 3 doldurursanız 1/3 elde edersiniz. Aradaki fark, üç kez ödeme şeklini dikkate almanızdır. Diyelim ki 1 dolar ile başlıyorsunuz ve 50 sent bahis oynuyorsunuz, o zaman üçlü ödemeyi elli elli 50 sent veya 2 dolar (b = 2, yani eksi 50 sent veya artı 2 kez 50 sent) ile elli elli arasında bitirirsiniz. 50 sent veya 2.50 dolar (b = 3, yani eksi 50 sent veya artı 3 kez 50 sent).
Sextus Empiricus

5

Dave Harris'in verdiği cevabı beğendim. soruna kar maksimizasyonu yerine "düşük riskli" bir perspektiften gelmeme rağmen

Yaptığını rasgele bir yürüyüş için fraksiyon bahsi varsayarak ve kazanma olasılığı olarak verilmiştir olan burada . ortalama olarak almak için tekrar tekrar uygulayabilirsiniz. beklenen değerine sahip zamanındaki miktarı tek bir rastgele değişkenin fonksiyonu olarak da ifade edebilirsiniz , ancak den bağımsız olmadığınıqp=0.5

Yt|Yt1=(1q+3qXt)Yt1
XtBernoulli(p)
E(Yt|Yt1)=(1q+3pq)Yt1
Yt|Y0=Y0j=1t(1q+3qXt)
E(Yt|Y0)=(1q+3pq)tY0
tZt=j=1tXtBinomial(t,p)ZtZt1
Yt|Y0=Y0(1+2q)Zt(1q)tZt

olası strateji

için "düşük risk" değerini belirlemek için bu formülü kullanabilirsiniz . Peşinde sağlamak istedik varsayarak Say ardışık kayıplar hala yarısı orijinal zenginliği vardı. Sonra ayarlıyorsunuzqkq=12k1

Örnek alma aracı belirlenmekte , veya biz dizi .k=5q=0.129k=15q=0.045

Ayrıca, stratejinin özyinelemeli yapısı nedeniyle, bu risk her bir bahisde aldığınız şeydir. Yani, zamanında , oynamaya devam ederek, zamanında servetinizin en azsk+s0.5Ys

tartışma

Yukarıdaki strateji, kazanmanın getirdiği maaştan ziyade kaybetmek için bir sınır belirlemekle ilgilidir. Hesapladığımız değerini ve bu riski göz önünde bulundurarak kullanıldığında , beklenen kazançları elde edebiliriz .qk

ancak, olduğu varsayılarak, zamanında beklenenden ziyade . olduğunda , . Bu büyütüldüğünde ve daha fazlatmedian(Zt)tp

Yk|Y0=Y0(1+2q)tp(1q)t(1p)
p=0.5(1+q2q2)0.5tq=0.251q<0.5

zamanında ileride olma şansınızı hesaplamak da ilginçtir . bunu yapmak için değeri belirlemek gerekir , öyle ki , bazı biz kazanç oranı tatmin gerektiğini bulmak yeniden düzenleme yaparak Bu normal bir yaklaşıma eklenebilir (not: ortalama ve standart hata ) tz

(1+2q)z(1q)tz>1
zt>log(1q)log(1q)log(1+2q)
0.50.5t
Pr(ahead at time t)Φ(tlog(1+2q)+log(1q)[log(1+2q)log(1q)])

bu da oyunun çok iyi oranlara sahip olduğunu açıkça gösteriyor. çarpma faktörü asgariye düşürülmesidir (maksimize değeri ve) monoton bir fonksiyonu olarak azalmaktadır . bu yüzden "düşük risk" stratejisi, servetinizin çok küçük bir bölümüne bahis oynamak ve çok sayıda oynamaktır.tq=013q

varsayalım ki bunu ve . her vaka için faktör ve . Bu, maçtan sonra , daha büyük bahisle% 75 şansa kıyasla, küçük bahiste önde olma şansınız yaklaşık% 95 olacaktır. Ayrıca, bahis tutarınızı en yakın 5 kuruş veya dolara yuvarlamanız gerektiğini varsayarsak, daha büyük bahse girme şansınız da vardır. başlayarak bu, . Bu üzerinden kayıp dizisi ve oyun beklenir göz önüne alındığındaq=13q=11000.110.32382013.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,0143819İlk birkaç bahisle şanssız kalırsanız, kazanma bile kötü bir çizgi oluşturmayabilir (örneğin, kazançlarınızın çoğu servetin çoğu gittiğinde ortaya çıkarsa). maçta % 1 daha küçük bahis miktarıyla ayrılmak mümkün değil . Flip tarafı, daha küçük bahis miktarının ortalama olarak çok daha küçük bir karla sonuçlanacağı , küçük bahiste artışa kıyasla büyük bahiste kat artış gibi bir şey olacağıdır (yani, bahis ve büyük bahis ile 7000 dolar).383501.2


Eğer düşünüyorlarsa öyle düşük riskli bir şekilde seçilir ve biz bunu hesaplama değil, , bu çok kötü bir yaklaşım değildir. Bu yüzden büyük bahis stratejisinden elde edilen kârı abartıyor. qt>>k
olasılık

Ortancasını maksimize etmek için yaklaşım aslında ortalamasını maksimize edilir Dave Harris yaklaşımı aynıdır (ortanca aynıdır ). sahip olan ve ortalama ile medyanın aynı olmadığı ortalamasını en üst düzeye çıkarmak farklı olacaktır . ZtZtZtYt
Sextus Empiricus

5

Bunun Martingale'den çok farklı olduğunu düşünmüyorum. Sizin durumunuzda, iki katına çıkma bahisleri yoktur, ancak kazanan ödeme 3 kattır.

Ağacınızın "yaşayan bir kopyasını" kodladım. 10 simülasyon çalıştırıyorum. Her simülasyonda (iz), 200 jetonla başlar ve ağaçla, her seferinde 20.000 kez 1 jetonla çalışırsınız.

Simülasyonu durduran tek şartlar iflas veya "hayatta kalan" 20 bin denemedir

resim açıklamasını buraya girin

Sanırım er ya da geç iflaslar sizi bekliyor.


Kod doğaçlama javascripttir, ancak bağımlılık içermez: https://repl.it/@cilofrapez/MagicTree-Roulette

Sonuçları hemen gösterir. Kod tweak basittir: ancak birçok simülasyon, bahis miktarı, ancak birçok deneme çalıştırmak için ... Oynamak için çekinmeyin!

Kodun altında, her simülasyonun (varsayılan olarak 10) sonuçları iki sütunlu bir CSV dosyasına kaydedilir: dönüş numarası ve para. Bunu grafikler için çevrimiçi bir çiziciye besleyebilmek için yaptım.

Örneğin, Google Grafikler kitaplığını kullanarak tümünün yerel olarak otomatik hale getirilmesi zahmetsizdir. Sonuçları sadece ekranda görmek istiyorsanız, dosyada bahsettiğim gibi son kısmı yorumlayabilirsiniz.

DÜZENLE

Kaynak kodu:

/**
 * 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.`);
```

1
Bunun için yazdığınız kodu da gönderebilir misiniz?
baxx

1
Bu sabit bir bahisle bahis , burada gibi servetinizin sabit bir kısmına bahis yapmak her seferinde farklı bir sonuç üretir. Sen fraksiyonel paralar kaçınmak için bu uyarlamak gerekebilir (örneğin yuvarlak aşağı bundan daha az bir değer üretir sürece vaka bahis olan madalyonun, sikke)1411
Henry

@baxx Elbette, gönderiyi yeni güncelledim. Henry, seni anladığımdan emin değilim. İsterseniz kodu farklı ihtiyaçlara uyacak şekilde uyarlayabilirim.
Carles Alcolea

@CarlesAlcolea Sadece yazı için kullandığınız kod yazı içinde yer alsaydı iyi olacağını söylüyordum.
Gönderdiğiniz

1
@baxx Elbette! Bu doğaçlama programı yazdıktan sonra, bu tür hemen hemen her durumu kolayca keşfedebilmek için küçük bir çevrimiçi uygulama yapmam gerektiğini düşündüm. Ben hiç bulamadım. Şimdi işte boğuldum, bu yüzden şu an post ve kodu benim yapılacaklar listemde bırakıyorum
Carles Alcolea

4

Sorun bildirimi

Let para miktarının logaritması kumarbaz süre içinde yer alır .Yt=log10(Mt)Mtt

Bırakın , kumarbazın bahis yaptığı paranın bir kısmı olsun .q

, kumarbazın başladığı para miktarı olsun (on dolar). , kumarbazın iflas ettiği para miktarı olsun (1 altında). Basit olması için, kumarbazın bir miktar para geçtiğinde kumar oynamayı durdurduğuna dair bir kural (daha sonra sınırını alarak bu kuralı kaldırabiliriz ).Y0=1YL=2YWYW

Rastgele yürüyüş

Paranın büyümesini ve düşüşünü asimetrik rastgele bir yürüyüş olarak görebilirsiniz. şu şekilde tanımlayabilirsiniz :Yt

Yt=Y0+i=1tXi

nerede

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

İflas olasılığı

martingal kayışı

İfade

Zt=cYt

böyle seçtiğimizde bir martingale olur .c

caw+cal=2
(burada ise ). Bu davadan beric<1q<0.5

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

İflas etme olasılığı

Durma süresi ( kaybetme / iflas veya kazanma ) neredeyse kesinlikle sonludur, çünkü en kötü durumda belirli bir sonlu uzunlukta kazanan bir çizgi (veya kaybetme çizgisi) gerektirir, , ki bu kesinlikle gerçekleşecek.Yt<YLYt>YWYWYLaw

Ardından, durma zamanı , sıfır zamanında beklenen değerine eşit demek için isteğe bağlı durma teoremini kullanabiliriz .E[Zτ]τE[Z0]

Böylece

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

ve

P[Yτ<YL]cY0cYWcYLcYW

ve sınırıYW

P[Yτ<YL]cY0YL

Sonuçlar

Her şeyi kaybetmeden sunabileceğiniz en uygun paranın yüzdesi var mı?

En uygun yüzde hangisi olursa olsun, farklı kârlara nasıl değer verdiğinize bağlı olacaktır. Ancak, hepsini kaybetme olasılığı hakkında bir şeyler söyleyebiliriz.

Sadece kumarbaz parasının sıfır kısmını bahis yaptığında kesinlikle iflas etmeyecektir.

Artan ile iflas etme olasılığı, kumarbazın sınırlı bir süre içinde neredeyse kesin olarak iflas edeceği bir noktaya kadar artacaktır (Robert Long'un yorumlarda bahsettiği kumarbaz harabesi). Bu nokta, , Bu, altında bir çözümün bulunmadığı noktadır . Bu aynı zamanda artan basamaklarının azalan adımlarından daha küçük olduğu .qqgambler's ruin

qgambler's ruin=11/b
cawal

Böylece, , kumarbaz paranın yarısından daha azını bahis oynadığı sürece, kumarbaz kesinlikle iflas etmeyecektir .b=2

tüm paranızı kaybetme ihtimaliniz zaman içinde azalıyor veya artıyor mu?

İflas etme olasılığı, kumarbazın iflas ettiği para miktarına olan mesafeye bağlıdır. Ne zaman kumarbaz para olacak, ortalama, düşüş ortalama artış ve iflas irade gitmek olasılık üzerinde.q<qgambler's ruin

Kelly kriterini kullanırken iflas olasılığı.

Dave Harris cevabında belirtilen Kelly kriterini kullandığınızda, , tek bir bahiste kayıp ve kâr arasındaki oran olduğundan, bağımsız olarak değeri eşit olacaktır. ve iflas etme olasılığı .q=0.5(11/b)bbc0.10.1SL

Yani, sihirli ağacın asimetri parametresinden , Kelly ölçütünü kullanırken iflas etme olasılığı, kumarbazın iflas ettiği para miktarına ve kumarbazın başladığı para miktarına eşittir. ile. On dolar ve 1 cent için bu Kelly kriterini kullanırken 1: 1000 iflas etme olasılığıdır.b

Simülasyonlar

Aşağıdaki simülasyonlar, farklı kumar stratejileri için farklı simüle edilmiş yörüngeleri gösterir. Kırmızı yörüngeler iflasla sonuçlanan yörüngelerdir ( satırına ).Yt=2

simülasyonları

Karın zamandan sonraki dağılımıt

Para ağacıyla kumarın olası sonuçlarını daha fazla göstermek için, dağılımını homojen bir kuvvet alanında ve (kumarbazın iflas ettiği yerde) emici bir sınırla tek boyutlu bir difüzyon işlemi olarak . Bu duruma çözüm Smoluchowski tarafından verilmiştir.Yt

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. (çevrimiçi olarak şu adresten ulaşılabilir: https://www.physik.uni-augsburg.de/theo1/hanggi/History/BM-History.html )

Denklem 8:

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

Bu difüzyon denklemi biz hız set ağaç sorunu ile ilgilidir beklenen artış için eşit , set tek basamaklar değişimin varyans eşit , olduğu başlangıç ​​para miktarı ve adım sayısıdır.cE[Yt]DVar(Xt)x0t

Aşağıdaki görüntü ve kod denklemi göstermektedir:

  • Histogram bir simülasyonun sonucunu gösterir.

  • Kesik çizgi , dağılımı yaklaşıklaştırmak için normal bir normal dağılım kullandığımızda bir model gösterir (bu, emici 'iflas' bariyerinin yokluğuna karşılık gelir). Bu yanlıştır, çünkü iflas seviyesinin üzerindeki bazı sonuçlar, iflas seviyesini daha önce geçmiş olan yörüngeleri içerir.

  • Sürekli çizgi Smoluchowski'nin formülünü kullanan yaklaşımdır.

kuvvet alanında difüzyon olarak örnekleme

Kodlar

#
## 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))

}

"Yani, sihirli ağacın asimetri parametresinden bağımsız olarak, Kelly ölçütünü kullanırken iflas etme olasılığı, kumarbazın iflas ettiği para miktarına ve kumarbazın yaptığı para miktarına eşittir. On dolar ve 1 cent için bu iflas etme olasılığı 1: 1000 olasılıktır "Bu konuda biraz şaşırdım. Yani bu, ödeme tur başına teklif edilen paranın 10 katı olsa bile iflas etme olasılığının 1: 1000 olacağı anlamına mı geliyor? Paranız büyüdükçe iflas etme ihtimali azaldığında bu nasıl mümkün olabilir?
ElectronicToothpick

1
@ElectronicToothpick Ödeme daha büyükse ve kumar oynadığınız bölümü değiştirmezseniz, iflas etme olasılığı daha küçük olur. Ancak, kumar oynadığınız kesri artırdığınızda, bu artık doğru olmayabilir. Kelly kriteri ile, ödeme daha yüksek olduğunda kumar oranını artıracaksınız. Bu, paranın logaritmasının beklenen değerini artıracak, ancak sonuç olarak, iflas etme olasılığı aynı kalacaktır.
Sextus Empiricus

1
E[logMt]E[Mt]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.