[{"data":1,"prerenderedAt":1148},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Fgaming\u002Fbayesian-iap-optimizasyonu":11},{"i18nKey":4,"paths":5},"gaming-002-2026-05",{"en":6,"es":7,"fr":8,"it":9,"ru":10},"\u002Fen\u002Fgaming\u002Fmobile-f2p-bayesian-price-optimization","\u002Fes\u002Fgaming\u002Foptimizacion-bayesiana-precios-f2p-movil","\u002Ffr\u002Fgaming\u002Foptimisasi-harga-bayesian-f2p-mobile","\u002Fit\u002Fgaming\u002Fottimizzazione-prezzo-bayesian-f2p-mobile","\u002Fru\u002Fgaming\u002Fbayesian-iap-optimizasyonu",{"_path":10,"_dir":12,"_draft":13,"_partial":13,"_locale":14,"title":15,"description":16,"publishedAt":17,"modifiedAt":17,"category":12,"i18nKey":4,"tags":18,"readingTime":24,"author":25,"body":26,"_type":1142,"_id":1143,"_source":1144,"_file":1145,"_stem":1146,"_extension":1147},"gaming",false,"","Mobile F2P'де Bayesian IAP Price Optimization","Posterior estimation и segmentная оптимизация для IAP тестирования: probabilistic модель для баланса конверсии, revenue и LTV.","2026-05-26",[19,20,21,22,23],"f2p-monetization","bayesian-testing","iap-optimization","price-ladder","mobile-gaming",8,"Roibase",{"type":27,"children":28,"toc":1133},"root",[29,37,44,49,69,74,79,85,90,101,111,121,362,367,373,378,508,513,523,528,538,561,577,583,588,593,789,794,799,805,810,815,1013,1018,1026,1065,1070,1076,1081,1091,1101,1111,1116,1122,1127],{"type":30,"tag":31,"props":32,"children":33},"element","p",{},[34],{"type":35,"value":36},"text","В мобильных F2P играх ценообразование IAP до сих пор работает по интуиции: копируют ladder $0.99, $4.99, $9.99, снижают цену если конверсия упала, повышают если выросла. Но один и тот же пакет за $4.99 может показать 2.1% конверсии на органических пользователях, 1.4% на UA когортах и 8.7% на whale-сегменте D30+. Классический A\u002FB тест здесь недостаточен: либо sample size взрывается, либо ожидание достигает 6 недель, либо остаётся неясно, по какой метрике оптимизировать — по конверсии или доходу. Байесовская оптимизация цены решает все три проблемы одновременно: posterior distribution собирает ранние сигналы, моделирует влияние LTV на уровне сегментов, управляет балансом revenue-конверсия в probabilistic рамках.",{"type":30,"tag":38,"props":39,"children":41},"h2",{"id":40},"ограничения-frequentist-ab-в-iap-ценообразовании",[42],{"type":35,"value":43},"Ограничения Frequentist A\u002FB в IAP ценообразовании",{"type":30,"tag":31,"props":45,"children":46},{},[47],{"type":35,"value":48},"Стандартный A\u002FB тест требует sample size, рассчитанный на достижение p\u003C0.05 между двумя ценовыми точками. При baseline 2% конверсии и целевом росте на 10% с power 80% нужно ~15.000 exposure. Для mid-tier IAP это 4-6 недель. За это время:",{"type":30,"tag":50,"props":51,"children":52},"ul",{},[53,59,64],{"type":30,"tag":54,"props":55,"children":56},"li",{},[57],{"type":35,"value":58},"CPI в Meta кампаниях растёт (creative fatigue)",{"type":30,"tag":54,"props":60,"children":61},{},[62],{"type":35,"value":63},"Меняется состав органических когорт (holiday effect, сдвиги в ASO рейтинге)",{"type":30,"tag":54,"props":65,"children":66},{},[67],{"type":35,"value":68},"Конкурент запускает новое событие, elasticity рушится",{"type":30,"tag":31,"props":70,"children":71},{},[72],{"type":35,"value":73},"Ещё критичнее проблема revenue-конверсия split: переход $2.99 → $4.99 снижает конверсию с 2.1% до 1.7%, но revenue per mille растёт на 42%. По какой метрике считать p-value? Большинство студий говорят \"выиграли в revenue\" и идут дальше, но при моделировании D7 LTV оказывается, что whale-сегмент чурнится на 31%, новая цена ударяет по retention.",{"type":30,"tag":31,"props":75,"children":76},{},[77],{"type":35,"value":78},"Байесовский подход держит конверсию и revenue в одной posterior модели: prior belief (beta распределение из предыдущих тестов) + observations (новые данные) → posterior (обновлённое верование). На 3-й день тест может сказать \"на данный момент с 73% вероятностью $4.99 лучше\", на 7-й день это 89%, на 10-й день regret падает ниже 1% — тест можно остановить.",{"type":30,"tag":38,"props":80,"children":82},{"id":81},"построение-prior-distribution-исторические-данные-iap-вместо-benchmark",[83],{"type":35,"value":84},"Построение Prior Distribution: исторические данные IAP вместо benchmark",{"type":30,"tag":31,"props":86,"children":87},{},[88],{"type":35,"value":89},"Качество байесовского теста зависит от правильно построенного prior. Большинство документации советует \"возьми uniform prior, пусть данные говорят\", но если у вас есть 6 месяцев истории IAP, сжигать этот источник неразумно. Процесс построения prior на примере:",{"type":30,"tag":31,"props":91,"children":92},{},[93,99],{"type":30,"tag":94,"props":95,"children":96},"strong",{},[97],{"type":35,"value":98},"Шаг 1:",{"type":35,"value":100}," Извлеки распределение конверсии всех IAP tier'ов за последние 6 месяцев. Для диапазона $0.99–$2.99 конверсия колеблется 1.8–3.2%, median 2.4%. Beta параметры alpha=24, beta=976 отражают это распределение (mean=alpha\u002F(alpha+beta)≈0.024).",{"type":30,"tag":31,"props":102,"children":103},{},[104,109],{"type":30,"tag":94,"props":105,"children":106},{},[107],{"type":35,"value":108},"Шаг 2:",{"type":35,"value":110}," Добавь segment-level variance. Органическая когорта показывает конверсию на 18% выше UA когорты (alpha=28, beta=972). Для whale-сегмента отдельный prior: D30+ paying user, конверсия 6.8%, alpha=68, beta=932.",{"type":30,"tag":31,"props":112,"children":113},{},[114,119],{"type":30,"tag":94,"props":115,"children":116},{},[117],{"type":35,"value":118},"Шаг 3:",{"type":35,"value":120}," Встрой price elasticity curve. В исторических данных переход $1.99 → $2.99 снижал конверсию в среднем на 14%. Если новый тест будет $2.99 → $3.99, закодируй этот slope в prior:",{"type":30,"tag":122,"props":123,"children":127},"pre",{"className":124,"code":125,"language":126,"meta":14,"style":14},"language-python shiki shiki-themes github-dark","def price_elasticity_prior(base_price, new_price, base_conversion):\n    slope = -0.14 \u002F 1.00  # за $1 рост конверсия падает на 14%\n    delta = new_price - base_price\n    expected_drop = slope * delta\n    adjusted_conversion = base_conversion * (1 + expected_drop)\n    alpha = adjusted_conversion * 1000\n    beta = 1000 - alpha\n    return alpha, beta\n","python",[128],{"type":30,"tag":129,"props":130,"children":131},"code",{"__ignoreMap":14},[132,156,197,225,253,295,322,349],{"type":30,"tag":133,"props":134,"children":137},"span",{"class":135,"line":136},"line",1,[138,144,150],{"type":30,"tag":133,"props":139,"children":141},{"style":140},"--shiki-default:#F97583",[142],{"type":35,"value":143},"def",{"type":30,"tag":133,"props":145,"children":147},{"style":146},"--shiki-default:#B392F0",[148],{"type":35,"value":149}," price_elasticity_prior",{"type":30,"tag":133,"props":151,"children":153},{"style":152},"--shiki-default:#E1E4E8",[154],{"type":35,"value":155},"(base_price, new_price, base_conversion):\n",{"type":30,"tag":133,"props":157,"children":159},{"class":135,"line":158},2,[160,165,170,175,181,186,191],{"type":30,"tag":133,"props":161,"children":162},{"style":152},[163],{"type":35,"value":164},"    slope ",{"type":30,"tag":133,"props":166,"children":167},{"style":140},[168],{"type":35,"value":169},"=",{"type":30,"tag":133,"props":171,"children":172},{"style":140},[173],{"type":35,"value":174}," -",{"type":30,"tag":133,"props":176,"children":178},{"style":177},"--shiki-default:#79B8FF",[179],{"type":35,"value":180},"0.14",{"type":30,"tag":133,"props":182,"children":183},{"style":140},[184],{"type":35,"value":185}," \u002F",{"type":30,"tag":133,"props":187,"children":188},{"style":177},[189],{"type":35,"value":190}," 1.00",{"type":30,"tag":133,"props":192,"children":194},{"style":193},"--shiki-default:#6A737D",[195],{"type":35,"value":196},"  # за $1 рост конверсия падает на 14%\n",{"type":30,"tag":133,"props":198,"children":200},{"class":135,"line":199},3,[201,206,210,215,220],{"type":30,"tag":133,"props":202,"children":203},{"style":152},[204],{"type":35,"value":205},"    delta ",{"type":30,"tag":133,"props":207,"children":208},{"style":140},[209],{"type":35,"value":169},{"type":30,"tag":133,"props":211,"children":212},{"style":152},[213],{"type":35,"value":214}," new_price ",{"type":30,"tag":133,"props":216,"children":217},{"style":140},[218],{"type":35,"value":219},"-",{"type":30,"tag":133,"props":221,"children":222},{"style":152},[223],{"type":35,"value":224}," base_price\n",{"type":30,"tag":133,"props":226,"children":228},{"class":135,"line":227},4,[229,234,238,243,248],{"type":30,"tag":133,"props":230,"children":231},{"style":152},[232],{"type":35,"value":233},"    expected_drop ",{"type":30,"tag":133,"props":235,"children":236},{"style":140},[237],{"type":35,"value":169},{"type":30,"tag":133,"props":239,"children":240},{"style":152},[241],{"type":35,"value":242}," slope ",{"type":30,"tag":133,"props":244,"children":245},{"style":140},[246],{"type":35,"value":247},"*",{"type":30,"tag":133,"props":249,"children":250},{"style":152},[251],{"type":35,"value":252}," delta\n",{"type":30,"tag":133,"props":254,"children":256},{"class":135,"line":255},5,[257,262,266,271,275,280,285,290],{"type":30,"tag":133,"props":258,"children":259},{"style":152},[260],{"type":35,"value":261},"    adjusted_conversion ",{"type":30,"tag":133,"props":263,"children":264},{"style":140},[265],{"type":35,"value":169},{"type":30,"tag":133,"props":267,"children":268},{"style":152},[269],{"type":35,"value":270}," base_conversion ",{"type":30,"tag":133,"props":272,"children":273},{"style":140},[274],{"type":35,"value":247},{"type":30,"tag":133,"props":276,"children":277},{"style":152},[278],{"type":35,"value":279}," (",{"type":30,"tag":133,"props":281,"children":282},{"style":177},[283],{"type":35,"value":284},"1",{"type":30,"tag":133,"props":286,"children":287},{"style":140},[288],{"type":35,"value":289}," +",{"type":30,"tag":133,"props":291,"children":292},{"style":152},[293],{"type":35,"value":294}," expected_drop)\n",{"type":30,"tag":133,"props":296,"children":298},{"class":135,"line":297},6,[299,304,308,313,317],{"type":30,"tag":133,"props":300,"children":301},{"style":152},[302],{"type":35,"value":303},"    alpha ",{"type":30,"tag":133,"props":305,"children":306},{"style":140},[307],{"type":35,"value":169},{"type":30,"tag":133,"props":309,"children":310},{"style":152},[311],{"type":35,"value":312}," adjusted_conversion ",{"type":30,"tag":133,"props":314,"children":315},{"style":140},[316],{"type":35,"value":247},{"type":30,"tag":133,"props":318,"children":319},{"style":177},[320],{"type":35,"value":321}," 1000\n",{"type":30,"tag":133,"props":323,"children":325},{"class":135,"line":324},7,[326,331,335,340,344],{"type":30,"tag":133,"props":327,"children":328},{"style":152},[329],{"type":35,"value":330},"    beta ",{"type":30,"tag":133,"props":332,"children":333},{"style":140},[334],{"type":35,"value":169},{"type":30,"tag":133,"props":336,"children":337},{"style":177},[338],{"type":35,"value":339}," 1000",{"type":30,"tag":133,"props":341,"children":342},{"style":140},[343],{"type":35,"value":174},{"type":30,"tag":133,"props":345,"children":346},{"style":152},[347],{"type":35,"value":348}," alpha\n",{"type":30,"tag":133,"props":350,"children":351},{"class":135,"line":24},[352,357],{"type":30,"tag":133,"props":353,"children":354},{"style":140},[355],{"type":35,"value":356},"    return",{"type":30,"tag":133,"props":358,"children":359},{"style":152},[360],{"type":35,"value":361}," alpha, beta\n",{"type":30,"tag":31,"props":363,"children":364},{},[365],{"type":35,"value":366},"Этот подход отражает behaviour когорт твоей игры, а не \"industry benchmark 2.5%\".",{"type":30,"tag":38,"props":368,"children":370},{"id":369},"posterior-estimation-и-многоуровневая-цена",[371],{"type":35,"value":372},"Posterior Estimation и многоуровневая цена",{"type":30,"tag":31,"props":374,"children":375},{},[376],{"type":35,"value":377},"Setup теста: starter pack $2.99 vs $3.99, 7 дней, 50\u002F50 split на UA трафик. Но разделение по сегментам обязательно:",{"type":30,"tag":379,"props":380,"children":381},"table",{},[382,411],{"type":30,"tag":383,"props":384,"children":385},"thead",{},[386],{"type":30,"tag":387,"props":388,"children":389},"tr",{},[390,396,401,406],{"type":30,"tag":391,"props":392,"children":393},"th",{},[394],{"type":35,"value":395},"Сегмент",{"type":30,"tag":391,"props":397,"children":398},{},[399],{"type":35,"value":400},"Prior α",{"type":30,"tag":391,"props":402,"children":403},{},[404],{"type":35,"value":405},"Prior β",{"type":30,"tag":391,"props":407,"children":408},{},[409],{"type":35,"value":410},"Target sample",{"type":30,"tag":412,"props":413,"children":414},"tbody",{},[415,439,462,485],{"type":30,"tag":387,"props":416,"children":417},{},[418,424,429,434],{"type":30,"tag":419,"props":420,"children":421},"td",{},[422],{"type":35,"value":423},"D0–D7 organic",{"type":30,"tag":419,"props":425,"children":426},{},[427],{"type":35,"value":428},"28",{"type":30,"tag":419,"props":430,"children":431},{},[432],{"type":35,"value":433},"972",{"type":30,"tag":419,"props":435,"children":436},{},[437],{"type":35,"value":438},"4000",{"type":30,"tag":387,"props":440,"children":441},{},[442,447,452,457],{"type":30,"tag":419,"props":443,"children":444},{},[445],{"type":35,"value":446},"D0–D7 UA",{"type":30,"tag":419,"props":448,"children":449},{},[450],{"type":35,"value":451},"22",{"type":30,"tag":419,"props":453,"children":454},{},[455],{"type":35,"value":456},"978",{"type":30,"tag":419,"props":458,"children":459},{},[460],{"type":35,"value":461},"6000",{"type":30,"tag":387,"props":463,"children":464},{},[465,470,475,480],{"type":30,"tag":419,"props":466,"children":467},{},[468],{"type":35,"value":469},"D7+ non-payer",{"type":30,"tag":419,"props":471,"children":472},{},[473],{"type":35,"value":474},"18",{"type":30,"tag":419,"props":476,"children":477},{},[478],{"type":35,"value":479},"982",{"type":30,"tag":419,"props":481,"children":482},{},[483],{"type":35,"value":484},"3000",{"type":30,"tag":387,"props":486,"children":487},{},[488,493,498,503],{"type":30,"tag":419,"props":489,"children":490},{},[491],{"type":35,"value":492},"D7+ past buyer",{"type":30,"tag":419,"props":494,"children":495},{},[496],{"type":35,"value":497},"68",{"type":30,"tag":419,"props":499,"children":500},{},[501],{"type":35,"value":502},"932",{"type":30,"tag":419,"props":504,"children":505},{},[506],{"type":35,"value":507},"2000",{"type":30,"tag":31,"props":509,"children":510},{},[511],{"type":35,"value":512},"Posterior обновляется отдельно в каждом сегменте. После 3-го дня:",{"type":30,"tag":31,"props":514,"children":515},{},[516,521],{"type":30,"tag":94,"props":517,"children":518},{},[519],{"type":35,"value":520},"Органический сегмент:",{"type":35,"value":522}," $2.99 → 87 конверсий \u002F 2100 exposure, $3.99 → 71 \u002F 2050. Posterior: α₁=28+87=115, β₁=972+2013=2985 vs α₂=28+71=99, β₂=972+1979=2951. Monte Carlo 10.000 samples даёт P($2.99 лучше) = 78%. По revenue: $2.99 × 87 = $260, $3.99 × 71 = $283. Если моделировать revenue posterior через gamma распределение, то P($3.99 лучше по revenue) = 61%.",{"type":30,"tag":31,"props":524,"children":525},{},[526],{"type":35,"value":527},"На этом этапе решение: если priority конверсия — держи $2.99, если revenue — жди ещё 2 дня. В UA сегменте $3.99 явно лучше (83% posterior probability), тест можно остановить и перенаправить этот сегмент на $3.99.",{"type":30,"tag":31,"props":529,"children":530},{},[531,536],{"type":30,"tag":94,"props":532,"children":533},{},[534],{"type":35,"value":535},"Динамическое построение price ladder по сегментам:",{"type":35,"value":537}," После окончания теста IAP инвентарь выглядит так:",{"type":30,"tag":50,"props":539,"children":540},{},[541,546,551,556],{"type":30,"tag":54,"props":542,"children":543},{},[544],{"type":35,"value":545},"Organic D0–D3: $2.99 starter",{"type":30,"tag":54,"props":547,"children":548},{},[549],{"type":35,"value":550},"UA D0–D3: $3.99 starter",{"type":30,"tag":54,"props":552,"children":553},{},[554],{"type":35,"value":555},"D7+ past buyer: $7.99 booster (из отдельного posterior теста)",{"type":30,"tag":54,"props":557,"children":558},{},[559],{"type":35,"value":560},"Whale (D30+ $50+ LTV): $14.99 premium bundle",{"type":30,"tag":31,"props":562,"children":563},{},[564,566,575],{"type":35,"value":565},"Эта структура оптимизирует 4 разные elasticity curve вместо одной глобальной цены. Если интегрировать с работой по ",{"type":30,"tag":567,"props":568,"children":572},"a",{"href":569,"rel":570},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Fbranding",[571],"nofollow",[573],{"type":35,"value":574},"брендированию",{"type":35,"value":576},", то value proposition в креативе совпадает с IAP tier, и персонализация IAP funnel усиливается.",{"type":30,"tag":38,"props":578,"children":580},{"id":579},"thompson-sampling-и-multi-armed-bandit-расширение",[581],{"type":35,"value":582},"Thompson Sampling и Multi-Armed Bandit расширение",{"type":30,"tag":31,"props":584,"children":585},{},[586],{"type":35,"value":587},"Вместо фиксированного 7-дневного теста используй Thompson sampling: при каждом impression сэмплируй из posterior сегмента, покажи цену с максимальным ожидаемым value. Так exploration\u002Fexploitation баланс строится динамически во время теста.",{"type":30,"tag":31,"props":589,"children":590},{},[591],{"type":35,"value":592},"Псевдокод:",{"type":30,"tag":122,"props":594,"children":596},{"className":124,"code":595,"language":126,"meta":14,"style":14},"def thompson_sampling_price(segment, price_variants):\n    posteriors = {p: get_posterior(segment, p) for p in price_variants}\n    samples = {p: np.random.beta(post['alpha'], post['beta']) \n               for p, post in posteriors.items()}\n    revenue_samples = {p: s * p for p, s in samples.items()}\n    return max(revenue_samples, key=revenue_samples.get)\n",[597],{"type":30,"tag":129,"props":598,"children":599},{"__ignoreMap":14},[600,617,654,692,714,757],{"type":30,"tag":133,"props":601,"children":602},{"class":135,"line":136},[603,607,612],{"type":30,"tag":133,"props":604,"children":605},{"style":140},[606],{"type":35,"value":143},{"type":30,"tag":133,"props":608,"children":609},{"style":146},[610],{"type":35,"value":611}," thompson_sampling_price",{"type":30,"tag":133,"props":613,"children":614},{"style":152},[615],{"type":35,"value":616},"(segment, price_variants):\n",{"type":30,"tag":133,"props":618,"children":619},{"class":135,"line":158},[620,625,629,634,639,644,649],{"type":30,"tag":133,"props":621,"children":622},{"style":152},[623],{"type":35,"value":624},"    posteriors ",{"type":30,"tag":133,"props":626,"children":627},{"style":140},[628],{"type":35,"value":169},{"type":30,"tag":133,"props":630,"children":631},{"style":152},[632],{"type":35,"value":633}," {p: get_posterior(segment, p) ",{"type":30,"tag":133,"props":635,"children":636},{"style":140},[637],{"type":35,"value":638},"for",{"type":30,"tag":133,"props":640,"children":641},{"style":152},[642],{"type":35,"value":643}," p ",{"type":30,"tag":133,"props":645,"children":646},{"style":140},[647],{"type":35,"value":648},"in",{"type":30,"tag":133,"props":650,"children":651},{"style":152},[652],{"type":35,"value":653}," price_variants}\n",{"type":30,"tag":133,"props":655,"children":656},{"class":135,"line":199},[657,662,666,671,677,682,687],{"type":30,"tag":133,"props":658,"children":659},{"style":152},[660],{"type":35,"value":661},"    samples ",{"type":30,"tag":133,"props":663,"children":664},{"style":140},[665],{"type":35,"value":169},{"type":30,"tag":133,"props":667,"children":668},{"style":152},[669],{"type":35,"value":670}," {p: np.random.beta(post[",{"type":30,"tag":133,"props":672,"children":674},{"style":673},"--shiki-default:#9ECBFF",[675],{"type":35,"value":676},"'alpha'",{"type":30,"tag":133,"props":678,"children":679},{"style":152},[680],{"type":35,"value":681},"], post[",{"type":30,"tag":133,"props":683,"children":684},{"style":673},[685],{"type":35,"value":686},"'beta'",{"type":30,"tag":133,"props":688,"children":689},{"style":152},[690],{"type":35,"value":691},"]) \n",{"type":30,"tag":133,"props":693,"children":694},{"class":135,"line":227},[695,700,705,709],{"type":30,"tag":133,"props":696,"children":697},{"style":140},[698],{"type":35,"value":699},"               for",{"type":30,"tag":133,"props":701,"children":702},{"style":152},[703],{"type":35,"value":704}," p, post ",{"type":30,"tag":133,"props":706,"children":707},{"style":140},[708],{"type":35,"value":648},{"type":30,"tag":133,"props":710,"children":711},{"style":152},[712],{"type":35,"value":713}," posteriors.items()}\n",{"type":30,"tag":133,"props":715,"children":716},{"class":135,"line":255},[717,722,726,731,735,739,743,748,752],{"type":30,"tag":133,"props":718,"children":719},{"style":152},[720],{"type":35,"value":721},"    revenue_samples ",{"type":30,"tag":133,"props":723,"children":724},{"style":140},[725],{"type":35,"value":169},{"type":30,"tag":133,"props":727,"children":728},{"style":152},[729],{"type":35,"value":730}," {p: s ",{"type":30,"tag":133,"props":732,"children":733},{"style":140},[734],{"type":35,"value":247},{"type":30,"tag":133,"props":736,"children":737},{"style":152},[738],{"type":35,"value":643},{"type":30,"tag":133,"props":740,"children":741},{"style":140},[742],{"type":35,"value":638},{"type":30,"tag":133,"props":744,"children":745},{"style":152},[746],{"type":35,"value":747}," p, s ",{"type":30,"tag":133,"props":749,"children":750},{"style":140},[751],{"type":35,"value":648},{"type":30,"tag":133,"props":753,"children":754},{"style":152},[755],{"type":35,"value":756}," samples.items()}\n",{"type":30,"tag":133,"props":758,"children":759},{"class":135,"line":297},[760,764,769,774,780,784],{"type":30,"tag":133,"props":761,"children":762},{"style":140},[763],{"type":35,"value":356},{"type":30,"tag":133,"props":765,"children":766},{"style":177},[767],{"type":35,"value":768}," max",{"type":30,"tag":133,"props":770,"children":771},{"style":152},[772],{"type":35,"value":773},"(revenue_samples, ",{"type":30,"tag":133,"props":775,"children":777},{"style":776},"--shiki-default:#FFAB70",[778],{"type":35,"value":779},"key",{"type":30,"tag":133,"props":781,"children":782},{"style":140},[783],{"type":35,"value":169},{"type":30,"tag":133,"props":785,"children":786},{"style":152},[787],{"type":35,"value":788},"revenue_samples.get)\n",{"type":30,"tag":31,"props":790,"children":791},{},[792],{"type":35,"value":793},"Этот подход особенно эффективен при тестировании 3+ цен. Классический A\u002FB требует 3× больше sample size для 3 вариантов, Thompson sampling автоматически обнуляет плохие варианты через posterior. К 10-му дню если posterior $2.99 упал до 9%, его exposure сокращается до 5%, sample waste минимален.",{"type":30,"tag":31,"props":795,"children":796},{},[797],{"type":35,"value":798},"Внимание: если источник UA ограничен, Thompson sampling может исчерпать budget. Если суточный бюджет Meta кампании $5000, а Thompson выбрал цену с низкой конверсией, CPA взрывается и бюджет кончается к полудню. Безопасная схема: первые 3 дня 50\u002F50 split, когда posterior credibility перейдёт 80% — открыть Thompson.",{"type":30,"tag":38,"props":800,"children":802},{"id":801},"revenue-vs-ltv-интеграция-posterior-с-retention-model",[803],{"type":35,"value":804},"Revenue vs LTV: интеграция Posterior с Retention Model",{"type":30,"tag":31,"props":806,"children":807},{},[808],{"type":35,"value":809},"Финальный уровень IAP оптимизации — LTV проекция. $3.99 может показать низкую конверсию, но D7 retention на 8% выше, и 90-дневный LTV этой когорты превысит LTV $2.99 когорты. Классический A\u002FB это не видит, потому что LTV закрепляется через 90 дней. Когда байесовский posterior интегрируется с survival model, ранние сигналы ловятся.",{"type":30,"tag":31,"props":811,"children":812},{},[813],{"type":35,"value":814},"Setup: для каждого ценового варианта на первых 7 днях построи retention curve с Cox proportional hazard model:",{"type":30,"tag":122,"props":816,"children":818},{"className":124,"code":817,"language":126,"meta":14,"style":14},"from lifelines import CoxPHFitter\n\ndf['price_variant'] = df['variant'].map({'2.99': 0, '3.99': 1})\ncph = CoxPHFitter()\ncph.fit(df, duration_col='days_retained', event_col='churned', \n        formula='price_variant + segment + paid_d3')\n",[819],{"type":30,"tag":129,"props":820,"children":821},{"__ignoreMap":14},[822,845,854,929,946,991],{"type":30,"tag":133,"props":823,"children":824},{"class":135,"line":136},[825,830,835,840],{"type":30,"tag":133,"props":826,"children":827},{"style":140},[828],{"type":35,"value":829},"from",{"type":30,"tag":133,"props":831,"children":832},{"style":152},[833],{"type":35,"value":834}," lifelines ",{"type":30,"tag":133,"props":836,"children":837},{"style":140},[838],{"type":35,"value":839},"import",{"type":30,"tag":133,"props":841,"children":842},{"style":152},[843],{"type":35,"value":844}," CoxPHFitter\n",{"type":30,"tag":133,"props":846,"children":847},{"class":135,"line":158},[848],{"type":30,"tag":133,"props":849,"children":851},{"emptyLinePlaceholder":850},true,[852],{"type":35,"value":853},"\n",{"type":30,"tag":133,"props":855,"children":856},{"class":135,"line":199},[857,862,867,872,876,881,886,891,896,901,906,911,916,920,924],{"type":30,"tag":133,"props":858,"children":859},{"style":152},[860],{"type":35,"value":861},"df[",{"type":30,"tag":133,"props":863,"children":864},{"style":673},[865],{"type":35,"value":866},"'price_variant'",{"type":30,"tag":133,"props":868,"children":869},{"style":152},[870],{"type":35,"value":871},"] ",{"type":30,"tag":133,"props":873,"children":874},{"style":140},[875],{"type":35,"value":169},{"type":30,"tag":133,"props":877,"children":878},{"style":152},[879],{"type":35,"value":880}," df[",{"type":30,"tag":133,"props":882,"children":883},{"style":673},[884],{"type":35,"value":885},"'variant'",{"type":30,"tag":133,"props":887,"children":888},{"style":152},[889],{"type":35,"value":890},"].map({",{"type":30,"tag":133,"props":892,"children":893},{"style":673},[894],{"type":35,"value":895},"'2.99'",{"type":30,"tag":133,"props":897,"children":898},{"style":152},[899],{"type":35,"value":900},": ",{"type":30,"tag":133,"props":902,"children":903},{"style":177},[904],{"type":35,"value":905},"0",{"type":30,"tag":133,"props":907,"children":908},{"style":152},[909],{"type":35,"value":910},", ",{"type":30,"tag":133,"props":912,"children":913},{"style":673},[914],{"type":35,"value":915},"'3.99'",{"type":30,"tag":133,"props":917,"children":918},{"style":152},[919],{"type":35,"value":900},{"type":30,"tag":133,"props":921,"children":922},{"style":177},[923],{"type":35,"value":284},{"type":30,"tag":133,"props":925,"children":926},{"style":152},[927],{"type":35,"value":928},"})\n",{"type":30,"tag":133,"props":930,"children":931},{"class":135,"line":227},[932,937,941],{"type":30,"tag":133,"props":933,"children":934},{"style":152},[935],{"type":35,"value":936},"cph ",{"type":30,"tag":133,"props":938,"children":939},{"style":140},[940],{"type":35,"value":169},{"type":30,"tag":133,"props":942,"children":943},{"style":152},[944],{"type":35,"value":945}," CoxPHFitter()\n",{"type":30,"tag":133,"props":947,"children":948},{"class":135,"line":255},[949,954,959,963,968,972,977,981,986],{"type":30,"tag":133,"props":950,"children":951},{"style":152},[952],{"type":35,"value":953},"cph.fit(df, ",{"type":30,"tag":133,"props":955,"children":956},{"style":776},[957],{"type":35,"value":958},"duration_col",{"type":30,"tag":133,"props":960,"children":961},{"style":140},[962],{"type":35,"value":169},{"type":30,"tag":133,"props":964,"children":965},{"style":673},[966],{"type":35,"value":967},"'days_retained'",{"type":30,"tag":133,"props":969,"children":970},{"style":152},[971],{"type":35,"value":910},{"type":30,"tag":133,"props":973,"children":974},{"style":776},[975],{"type":35,"value":976},"event_col",{"type":30,"tag":133,"props":978,"children":979},{"style":140},[980],{"type":35,"value":169},{"type":30,"tag":133,"props":982,"children":983},{"style":673},[984],{"type":35,"value":985},"'churned'",{"type":30,"tag":133,"props":987,"children":988},{"style":152},[989],{"type":35,"value":990},", \n",{"type":30,"tag":133,"props":992,"children":993},{"class":135,"line":297},[994,999,1003,1008],{"type":30,"tag":133,"props":995,"children":996},{"style":776},[997],{"type":35,"value":998},"        formula",{"type":30,"tag":133,"props":1000,"children":1001},{"style":140},[1002],{"type":35,"value":169},{"type":30,"tag":133,"props":1004,"children":1005},{"style":673},[1006],{"type":35,"value":1007},"'price_variant + segment + paid_d3'",{"type":30,"tag":133,"props":1009,"children":1010},{"style":152},[1011],{"type":35,"value":1012},")\n",{"type":30,"tag":31,"props":1014,"children":1015},{},[1016],{"type":35,"value":1017},"Output модели: hazard ratio для $3.99 = 0.88 (churn на 12% ниже, p=0.03). Встрой это в posterior:",{"type":30,"tag":31,"props":1019,"children":1020},{},[1021],{"type":30,"tag":94,"props":1022,"children":1023},{},[1024],{"type":35,"value":1025},"LTV posterior расчёт:",{"type":30,"tag":50,"props":1027,"children":1028},{},[1029,1048],{"type":30,"tag":54,"props":1030,"children":1031},{},[1032,1034,1039,1041,1046],{"type":35,"value":1033},"$2.99: E",{"type":30,"tag":133,"props":1035,"children":1036},{},[1037],{"type":35,"value":1038},"conversion",{"type":35,"value":1040},"=0.024, E",{"type":30,"tag":133,"props":1042,"children":1043},{},[1044],{"type":35,"value":1045},"D90_retention",{"type":35,"value":1047},"=0.34, ARPDAU=$0.12 → LTV=$2.99 × 0.024 + 90 × 0.34 × 0.12 = $3.74",{"type":30,"tag":54,"props":1049,"children":1050},{},[1051,1053,1057,1059,1063],{"type":35,"value":1052},"$3.99: E",{"type":30,"tag":133,"props":1054,"children":1055},{},[1056],{"type":35,"value":1038},{"type":35,"value":1058},"=0.019, E",{"type":30,"tag":133,"props":1060,"children":1061},{},[1062],{"type":35,"value":1045},{"type":35,"value":1064},"=0.38, ARPDAU=$0.15 → LTV=$3.99 × 0.019 + 90 × 0.38 × 0.15 = $5.21",{"type":30,"tag":31,"props":1066,"children":1067},{},[1068],{"type":35,"value":1069},"Monte Carlo 10.000 итераций LTV posterior distribution: P($3.99 LTV выше) = 91%. Эта posterior credibility даёт намного более сильный сигнал, чем анализ только по revenue. Решение: выбираем $3.99, переуравновешиваем IAP stack.",{"type":30,"tag":38,"props":1071,"children":1073},{"id":1072},"компромисс-сложность-модели-vs-скорость-исполнения",[1074],{"type":35,"value":1075},"Компромисс: сложность модели vs скорость исполнения",{"type":30,"tag":31,"props":1077,"children":1078},{},[1079],{"type":35,"value":1080},"Байесовская IAP оптимизация несёт три операционных затраты:",{"type":30,"tag":31,"props":1082,"children":1083},{},[1084,1089],{"type":30,"tag":94,"props":1085,"children":1086},{},[1087],{"type":35,"value":1088},"1. Поддержка Prior:",{"type":35,"value":1090}," каждый новый event, изменение мета, запуск у конкурента меняют prior distribution. Пересчёт требуется раз в 6 месяцев. Если в студии нет data scientist, это неустойчиво.",{"type":30,"tag":31,"props":1092,"children":1093},{},[1094,1099],{"type":30,"tag":94,"props":1095,"children":1096},{},[1097],{"type":35,"value":1098},"2. Гранулярность сегментов:",{"type":35,"value":1100}," 8 сегментов × 3 цены = 24 posterior'а на отслеживание. На малых сегментах (например, whale) posterior variance высока, confidence interval широкий. Практическое решение: whale сегмент вынести отдельно в A\u002FB, остальное держать в Bayesian.",{"type":30,"tag":31,"props":1102,"children":1103},{},[1104,1109],{"type":30,"tag":94,"props":1105,"children":1106},{},[1107],{"type":35,"value":1108},"3. Фрагментация по платформам:",{"type":35,"value":1110}," iOS vs Android цена-sensitivity различается. На App Store конверсия на 23% выше чем на Android (по данным Sensor Tower 2025). Держать posterior отдельно или pooled? Отдельно — sample split, pooled — platform bias. Решение: иерархическая Bayesian модель с platform как random effect.",{"type":30,"tag":31,"props":1112,"children":1113},{},[1114],{"type":35,"value":1115},"Всё же Bayesian быстрее, чем ждать 4+ недели A\u002FB. Тест завершается за 10 дней, revenue impact виден на 2-й неделе, LTV проекция обновляется на 30-й день. Frequentist'ом это занял бы 8–12 недель.",{"type":30,"tag":38,"props":1117,"children":1119},{"id":1118},"вывод-probabilistic-pricing-mindset",[1120],{"type":35,"value":1121},"Вывод: Probabilistic Pricing Mindset",{"type":30,"tag":31,"props":1123,"children":1124},{},[1125],{"type":35,"value":1126},"В мобильном F2P ценовой тест — больше не бинарное событие, а процесс continuous posterior updating. Вместо разделения конверсии и revenue в отдельные p-value'ы, модель обе метрики в probabilistic рамках, сокращает regret, ускоряет тест, даёт segment-level оптимизацию. Байесовский подход требует дисциплины в построении prior, но взамен даёт право на раннее решение, интеграцию LTV projection, dynamic allocation через Thompson sampling. Если ваш IAP stack более 5 tier и UA бюджет свыше $100K в месяц, байесовская тестовая инфраструктура уже не опция, а необходимость.",{"type":30,"tag":1128,"props":1129,"children":1130},"style",{},[1131],{"type":35,"value":1132},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":14,"searchDepth":199,"depth":199,"links":1134},[1135,1136,1137,1138,1139,1140,1141],{"id":40,"depth":158,"text":43},{"id":81,"depth":158,"text":84},{"id":369,"depth":158,"text":372},{"id":579,"depth":158,"text":582},{"id":801,"depth":158,"text":804},{"id":1072,"depth":158,"text":1075},{"id":1118,"depth":158,"text":1121},"markdown","content:ru:gaming:bayesian-iap-optimizasyonu.md","content","ru\u002Fgaming\u002Fbayesian-iap-optimizasyonu.md","ru\u002Fgaming\u002Fbayesian-iap-optimizasyonu","md",1782079502967]