[{"data":1,"prerenderedAt":1149},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fit\u002Fgaming\u002Fottimizzazione-prezzo-bayesian-f2p-mobile":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":9,"_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":1143,"_id":1144,"_source":1145,"_file":1146,"_stem":1147,"_extension":1148},"gaming",false,"","Ottimizzazione Bayesiana dei Prezzi nel Mobile F2P","IAP pricing con posterior estimation e ottimizzazione segmentata: modello probabilistico per bilanciare conversion, revenue e LTV.","2026-05-26",[19,20,21,22,23],"f2p-monetization","bayesian-testing","iap-optimization","price-ladder","mobile-gaming",9,"Roibase",{"type":27,"children":28,"toc":1134},"root",[29,37,44,49,69,74,79,85,90,101,111,121,363,368,374,379,509,514,524,529,539,562,578,584,589,594,790,795,800,806,811,816,1014,1019,1027,1066,1071,1077,1082,1092,1102,1112,1117,1123,1128],{"type":30,"tag":31,"props":32,"children":33},"element","p",{},[34],{"type":35,"value":36},"text","Nei giochi mobile F2P la determinazione dei prezzi IAP funziona ancora per intuizione: la ladder $0.99, $4.99, $9.99 viene copiata, se la conversion cala il prezzo scende, se sale si aggiunge più valore. Eppure lo stesso pacchetto da $4.99 può mostrare una conversion del 2.1% negli utenti organici, dell'1.4% nei cohort UA e dell'8.7% nei whale D30+. Un A\u002FB test classico qui fallisce: o le dimensioni campionarie esplodono, o l'attesa arriva a 6 settimane, oppure il trade-off revenue\u002Fconversion resta irrisolto. L'ottimizzazione bayesiana dei prezzi risolve tutti e tre i problemi simultaneamente: raccoglie segnali precoci via posterior distribution, modella l'impatto LTV a livello di segmento, gestisce l'equilibrio revenue-conversion in un framework probabilistico.",{"type":30,"tag":38,"props":39,"children":41},"h2",{"id":40},"il-collo-di-bottiglia-dellab-test-frequentista-nel-pricing-iap",[42],{"type":35,"value":43},"Il Collo di Bottiglia dell'A\u002FB Test Frequentista nel Pricing IAP",{"type":30,"tag":31,"props":45,"children":46},{},[47],{"type":35,"value":48},"Un test A\u002FB standard calcola la dimensione campionaria per rilevare una differenza p\u003C0.05 tra due prezzi sulla base della conversion rate. Con una baseline del 2%, un lift relativo del 10% e una potenza dell'80%, servono circa 15.000 esposizioni. Per un IAP di fascia media significa 4-6 settimane di test. Man mano che il test si allunga:",{"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},"I CPI delle campagne Meta aumentano (creative fatigue)",{"type":30,"tag":54,"props":60,"children":61},{},[62],{"type":35,"value":63},"Il mix dei cohort organici si modifica (effetti stagionali, cambiamenti di ranking su ASO)",{"type":30,"tag":54,"props":65,"children":66},{},[67],{"type":35,"value":68},"I competitor lanciano nuovi eventi, l'elasticità della domanda si rompe",{"type":30,"tag":31,"props":70,"children":71},{},[72],{"type":35,"value":73},"Il problema ancora più critico è lo split revenue-conversion: passare da $2.99 a $4.99 fa scendere la conversion dal 2.1% all'1.7%, ma il revenue per mille sale del 42%. Su quale metrica calcolare il p-value? La maggior parte degli studio dice \"abbiamo guadagnato revenue\" e passa oltre, ma se si modella la LTV a D7 emerge che il segmento whale ha un churn del 31% in più e il nuovo prezzo danneggia la retention.",{"type":30,"tag":31,"props":75,"children":76},{},[77],{"type":35,"value":78},"L'approccio bayesiano mantiene conversion e revenue nello stesso modello posterior: prior belief (distribuzione beta dai test precedenti) + osservazioni (nuovi dati) → posterior (credenza aggiornata). Dal giorno 3 il test può già dire \"con probabilità del 73%, $4.99 è migliore\", al giorno 7 sale all'89%, al giorno 10 il regret scende sotto l'1% e il test si arresta.",{"type":30,"tag":38,"props":80,"children":82},{"id":81},"costruire-la-prior-distribution-dati-storici-iap-anziché-benchmark",[83],{"type":35,"value":84},"Costruire la Prior Distribution: Dati Storici IAP Anziché Benchmark",{"type":30,"tag":31,"props":86,"children":87},{},[88],{"type":35,"value":89},"La qualità del test bayesiano dipende da come si costruisce la prior. La maggior parte della documentazione dice \"usa una prior uniforme, lascia che parlino i dati\", ma se avete 6 mesi di storico IAP è irrazionale sprecare questa risorsa. Un processo di costruzione della 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},"Passo 1:",{"type":35,"value":100}," Estrarre la distribuzione delle conversion rate di tutti i tier IAP degli ultimi 6 mesi. Tra $0.99 e $2.99 le conversion variano dal 1.8% al 3.2%, con mediana al 2.4%. I parametri della distribuzione beta che riflettono questa distribuzione sono alpha=24, beta=976 (media = 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},"Passo 2:",{"type":35,"value":110}," Aggiungere la varianza a livello di segmento. Il cohort organico ha una prior di conversion superiore di circa il 18% rispetto al cohort UA (alpha=28, beta=972). Per il segmento whale, i D30+ paying user mostrano una conversion dell'6.8%, quindi 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},"Passo 3:",{"type":35,"value":120}," Codificare nella prior la curva di elasticità del prezzo. Nei dati storici, il passaggio da $1.99 a $2.99 ha ridotto la conversion in media del 14%. Se il nuovo test riguarda $2.99 → $3.99, si incorpora questo slope nella 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  # riduzione del 14% per $1 di aumento\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},"  # riduzione del 14% per $1 di aumento\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":352},{"class":135,"line":351},8,[353,358],{"type":30,"tag":133,"props":354,"children":355},{"style":140},[356],{"type":35,"value":357},"    return",{"type":30,"tag":133,"props":359,"children":360},{"style":152},[361],{"type":35,"value":362}," alpha, beta\n",{"type":30,"tag":31,"props":364,"children":365},{},[366],{"type":35,"value":367},"Questo approccio riflette il comportamento specifico del vostro gioco e cohort, non un \"benchmark di industria del 2.5%\".",{"type":30,"tag":38,"props":369,"children":371},{"id":370},"stima-posterior-e-ladder-di-prezzo-segmentato",[372],{"type":35,"value":373},"Stima Posterior e Ladder di Prezzo Segmentato",{"type":30,"tag":31,"props":375,"children":376},{},[377],{"type":35,"value":378},"Setup del test: starter pack $2.99 vs $3.99, 7 giorni, distribuito al 50\u002F50 sul traffico UA. Ma la segmentazione è obbligatoria:",{"type":30,"tag":380,"props":381,"children":382},"table",{},[383,412],{"type":30,"tag":384,"props":385,"children":386},"thead",{},[387],{"type":30,"tag":388,"props":389,"children":390},"tr",{},[391,397,402,407],{"type":30,"tag":392,"props":393,"children":394},"th",{},[395],{"type":35,"value":396},"Segmento",{"type":30,"tag":392,"props":398,"children":399},{},[400],{"type":35,"value":401},"Prior α",{"type":30,"tag":392,"props":403,"children":404},{},[405],{"type":35,"value":406},"Prior β",{"type":30,"tag":392,"props":408,"children":409},{},[410],{"type":35,"value":411},"Dimensione campionaria target",{"type":30,"tag":413,"props":414,"children":415},"tbody",{},[416,440,463,486],{"type":30,"tag":388,"props":417,"children":418},{},[419,425,430,435],{"type":30,"tag":420,"props":421,"children":422},"td",{},[423],{"type":35,"value":424},"D0-D7 organico",{"type":30,"tag":420,"props":426,"children":427},{},[428],{"type":35,"value":429},"28",{"type":30,"tag":420,"props":431,"children":432},{},[433],{"type":35,"value":434},"972",{"type":30,"tag":420,"props":436,"children":437},{},[438],{"type":35,"value":439},"4000",{"type":30,"tag":388,"props":441,"children":442},{},[443,448,453,458],{"type":30,"tag":420,"props":444,"children":445},{},[446],{"type":35,"value":447},"D0-D7 UA",{"type":30,"tag":420,"props":449,"children":450},{},[451],{"type":35,"value":452},"22",{"type":30,"tag":420,"props":454,"children":455},{},[456],{"type":35,"value":457},"978",{"type":30,"tag":420,"props":459,"children":460},{},[461],{"type":35,"value":462},"6000",{"type":30,"tag":388,"props":464,"children":465},{},[466,471,476,481],{"type":30,"tag":420,"props":467,"children":468},{},[469],{"type":35,"value":470},"D7+ non-pagatore",{"type":30,"tag":420,"props":472,"children":473},{},[474],{"type":35,"value":475},"18",{"type":30,"tag":420,"props":477,"children":478},{},[479],{"type":35,"value":480},"982",{"type":30,"tag":420,"props":482,"children":483},{},[484],{"type":35,"value":485},"3000",{"type":30,"tag":388,"props":487,"children":488},{},[489,494,499,504],{"type":30,"tag":420,"props":490,"children":491},{},[492],{"type":35,"value":493},"D7+ acquirente precedente",{"type":30,"tag":420,"props":495,"children":496},{},[497],{"type":35,"value":498},"68",{"type":30,"tag":420,"props":500,"children":501},{},[502],{"type":35,"value":503},"932",{"type":30,"tag":420,"props":505,"children":506},{},[507],{"type":35,"value":508},"2000",{"type":30,"tag":31,"props":510,"children":511},{},[512],{"type":35,"value":513},"Ogni segmento aggiorna il suo posterior indipendentemente. Al giorno 3 i risultati sono:",{"type":30,"tag":31,"props":515,"children":516},{},[517,522],{"type":30,"tag":94,"props":518,"children":519},{},[520],{"type":35,"value":521},"Segmento organico:",{"type":35,"value":523}," $2.99 → 87 conversion \u002F 2100 esposizioni, $3.99 → 71 \u002F 2050. Posterior: α₁=28+87=115, β₁=972+2013=2985 vs α₂=28+71=99, β₂=972+1979=2951. Con Monte Carlo su 10.000 campioni: P($2.99 migliore) = 78%. Dal lato revenue: $2.99 × 87 = $260, $3.99 × 71 = $283. Se il posterior del revenue è modellato con una distribuzione gamma, P($3.99 revenue superiore) = 61%.",{"type":30,"tag":31,"props":525,"children":526},{},[527],{"type":35,"value":528},"A questo punto la decisione: se la priorità nel segmento organico è la conversion, mantieni $2.99; se è il revenue, aspetta 2 giorni. Nel segmento UA invece $3.99 è chiaramente superiore (83% posterior probability), quindi il test si arresta per quel segmento e il traffico passa a $3.99.",{"type":30,"tag":31,"props":530,"children":531},{},[532,537],{"type":30,"tag":94,"props":533,"children":534},{},[535],{"type":35,"value":536},"Costruzione dinamica della ladder di prezzo per segmento:",{"type":35,"value":538}," Alla fine del test l'inventario IAP diventa:",{"type":30,"tag":50,"props":540,"children":541},{},[542,547,552,557],{"type":30,"tag":54,"props":543,"children":544},{},[545],{"type":35,"value":546},"Organico D0-D3: starter $2.99",{"type":30,"tag":54,"props":548,"children":549},{},[550],{"type":35,"value":551},"UA D0-D3: starter $3.99",{"type":30,"tag":54,"props":553,"children":554},{},[555],{"type":35,"value":556},"D7+ acquirente precedente: booster $7.99 (da posterior di test separato)",{"type":30,"tag":54,"props":558,"children":559},{},[560],{"type":35,"value":561},"Whale (D30+ LTV $50+): premium bundle $14.99",{"type":30,"tag":31,"props":563,"children":564},{},[565,567,576],{"type":35,"value":566},"Questa struttura ottimizza 4 curve di elasticità diverse invece di un singolo prezzo globale. Quando questa segmentazione si combina con la strategia ",{"type":30,"tag":568,"props":569,"children":573},"a",{"href":570,"rel":571},"https:\u002F\u002Fwww.roibase.com.tr\u002Fit\u002Faso",[572],"nofollow",[574],{"type":35,"value":575},"App Store Optimization",{"type":35,"value":577},", il funnel IAP diventa ancora più personalizzato: la value proposition mostrata nel creative si allinea con il tier IAP.",{"type":30,"tag":38,"props":579,"children":581},{"id":580},"thompson-sampling-come-estensione-multi-armed-bandit",[582],{"type":35,"value":583},"Thompson Sampling come Estensione Multi-Armed Bandit",{"type":30,"tag":31,"props":585,"children":586},{},[587],{"type":35,"value":588},"Anziché un test fisso di 7 giorni, usare Thompson sampling: a ogni impression, campionare il posterior di ogni segmento, mostrare il prezzo con il valore atteso più alto. Così durante il test l'equilibrio exploration\u002Fexploitation si regola dinamicamente.",{"type":30,"tag":31,"props":590,"children":591},{},[592],{"type":35,"value":593},"Pseudo-codice:",{"type":30,"tag":122,"props":595,"children":597},{"className":124,"code":596,"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",[598],{"type":30,"tag":129,"props":599,"children":600},{"__ignoreMap":14},[601,618,655,693,715,758],{"type":30,"tag":133,"props":602,"children":603},{"class":135,"line":136},[604,608,613],{"type":30,"tag":133,"props":605,"children":606},{"style":140},[607],{"type":35,"value":143},{"type":30,"tag":133,"props":609,"children":610},{"style":146},[611],{"type":35,"value":612}," thompson_sampling_price",{"type":30,"tag":133,"props":614,"children":615},{"style":152},[616],{"type":35,"value":617},"(segment, price_variants):\n",{"type":30,"tag":133,"props":619,"children":620},{"class":135,"line":158},[621,626,630,635,640,645,650],{"type":30,"tag":133,"props":622,"children":623},{"style":152},[624],{"type":35,"value":625},"    posteriors ",{"type":30,"tag":133,"props":627,"children":628},{"style":140},[629],{"type":35,"value":169},{"type":30,"tag":133,"props":631,"children":632},{"style":152},[633],{"type":35,"value":634}," {p: get_posterior(segment, p) ",{"type":30,"tag":133,"props":636,"children":637},{"style":140},[638],{"type":35,"value":639},"for",{"type":30,"tag":133,"props":641,"children":642},{"style":152},[643],{"type":35,"value":644}," p ",{"type":30,"tag":133,"props":646,"children":647},{"style":140},[648],{"type":35,"value":649},"in",{"type":30,"tag":133,"props":651,"children":652},{"style":152},[653],{"type":35,"value":654}," price_variants}\n",{"type":30,"tag":133,"props":656,"children":657},{"class":135,"line":199},[658,663,667,672,678,683,688],{"type":30,"tag":133,"props":659,"children":660},{"style":152},[661],{"type":35,"value":662},"    samples ",{"type":30,"tag":133,"props":664,"children":665},{"style":140},[666],{"type":35,"value":169},{"type":30,"tag":133,"props":668,"children":669},{"style":152},[670],{"type":35,"value":671}," {p: np.random.beta(post[",{"type":30,"tag":133,"props":673,"children":675},{"style":674},"--shiki-default:#9ECBFF",[676],{"type":35,"value":677},"'alpha'",{"type":30,"tag":133,"props":679,"children":680},{"style":152},[681],{"type":35,"value":682},"], post[",{"type":30,"tag":133,"props":684,"children":685},{"style":674},[686],{"type":35,"value":687},"'beta'",{"type":30,"tag":133,"props":689,"children":690},{"style":152},[691],{"type":35,"value":692},"]) \n",{"type":30,"tag":133,"props":694,"children":695},{"class":135,"line":227},[696,701,706,710],{"type":30,"tag":133,"props":697,"children":698},{"style":140},[699],{"type":35,"value":700},"               for",{"type":30,"tag":133,"props":702,"children":703},{"style":152},[704],{"type":35,"value":705}," p, post ",{"type":30,"tag":133,"props":707,"children":708},{"style":140},[709],{"type":35,"value":649},{"type":30,"tag":133,"props":711,"children":712},{"style":152},[713],{"type":35,"value":714}," posteriors.items()}\n",{"type":30,"tag":133,"props":716,"children":717},{"class":135,"line":255},[718,723,727,732,736,740,744,749,753],{"type":30,"tag":133,"props":719,"children":720},{"style":152},[721],{"type":35,"value":722},"    revenue_samples ",{"type":30,"tag":133,"props":724,"children":725},{"style":140},[726],{"type":35,"value":169},{"type":30,"tag":133,"props":728,"children":729},{"style":152},[730],{"type":35,"value":731}," {p: s ",{"type":30,"tag":133,"props":733,"children":734},{"style":140},[735],{"type":35,"value":247},{"type":30,"tag":133,"props":737,"children":738},{"style":152},[739],{"type":35,"value":644},{"type":30,"tag":133,"props":741,"children":742},{"style":140},[743],{"type":35,"value":639},{"type":30,"tag":133,"props":745,"children":746},{"style":152},[747],{"type":35,"value":748}," p, s ",{"type":30,"tag":133,"props":750,"children":751},{"style":140},[752],{"type":35,"value":649},{"type":30,"tag":133,"props":754,"children":755},{"style":152},[756],{"type":35,"value":757}," samples.items()}\n",{"type":30,"tag":133,"props":759,"children":760},{"class":135,"line":297},[761,765,770,775,781,785],{"type":30,"tag":133,"props":762,"children":763},{"style":140},[764],{"type":35,"value":357},{"type":30,"tag":133,"props":766,"children":767},{"style":177},[768],{"type":35,"value":769}," max",{"type":30,"tag":133,"props":771,"children":772},{"style":152},[773],{"type":35,"value":774},"(revenue_samples, ",{"type":30,"tag":133,"props":776,"children":778},{"style":777},"--shiki-default:#FFAB70",[779],{"type":35,"value":780},"key",{"type":30,"tag":133,"props":782,"children":783},{"style":140},[784],{"type":35,"value":169},{"type":30,"tag":133,"props":786,"children":787},{"style":152},[788],{"type":35,"value":789},"revenue_samples.get)\n",{"type":30,"tag":31,"props":791,"children":792},{},[793],{"type":35,"value":794},"Questo metodo è particolarmente efficace quando si testano 3+ varianti di prezzo: un test A\u002FB classico su 3 prezzi richiede 3× la dimensione campionaria, mentre Thompson sampling con aggiornamento posterior azzera automaticamente le varianti peggiori. Al giorno 10, se il posterior di $2.99 è sceso al 9%, la percentuale di esposizioni a quel prezzo crolla al 5%, senza spreco di campioni.",{"type":30,"tag":31,"props":796,"children":797},{},[798],{"type":35,"value":799},"Attenzione: se il traffico UA è limitato, Thompson sampling comporta rischio di esaurimento budget. Se una campagna Meta ha $5000 di budget giornaliero e Thompson sceglie un prezzo con conversion bassa, il CPA esplode e il budget finisce a mezzogiorno. Setup sicuro: primi 3 giorni split 50\u002F50, quando la credibilità posterior supera l'80%, attivare Thompson.",{"type":30,"tag":38,"props":801,"children":803},{"id":802},"revenue-vs-ltv-integrare-il-posterior-con-modelli-di-retention",[804],{"type":35,"value":805},"Revenue vs LTV: Integrare il Posterior con Modelli di Retention",{"type":30,"tag":31,"props":807,"children":808},{},[809],{"type":35,"value":810},"L'ultimo livello dell'ottimizzazione dei prezzi IAP è la proiezione LTV. Se $3.99 ha una conversion inferiore ma una retention a D7 superiore dell'8%, l'LTV a 90 giorni di quel cohort potrebbe superare quello a $2.99. Un A\u002FB classico non lo vede perché l'LTV si consolida in 90 giorni. Integrando il posterior bayesiano con un modello di sopravvivenza il segnale precoce emerge.",{"type":30,"tag":31,"props":812,"children":813},{},[814],{"type":35,"value":815},"Setup: per ogni variante di prezzo, durante i primi 7 giorni, fit della curva di retention con un modello Cox proportional hazard:",{"type":30,"tag":122,"props":817,"children":819},{"className":124,"code":818,"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",[820],{"type":30,"tag":129,"props":821,"children":822},{"__ignoreMap":14},[823,846,855,930,947,992],{"type":30,"tag":133,"props":824,"children":825},{"class":135,"line":136},[826,831,836,841],{"type":30,"tag":133,"props":827,"children":828},{"style":140},[829],{"type":35,"value":830},"from",{"type":30,"tag":133,"props":832,"children":833},{"style":152},[834],{"type":35,"value":835}," lifelines ",{"type":30,"tag":133,"props":837,"children":838},{"style":140},[839],{"type":35,"value":840},"import",{"type":30,"tag":133,"props":842,"children":843},{"style":152},[844],{"type":35,"value":845}," CoxPHFitter\n",{"type":30,"tag":133,"props":847,"children":848},{"class":135,"line":158},[849],{"type":30,"tag":133,"props":850,"children":852},{"emptyLinePlaceholder":851},true,[853],{"type":35,"value":854},"\n",{"type":30,"tag":133,"props":856,"children":857},{"class":135,"line":199},[858,863,868,873,877,882,887,892,897,902,907,912,917,921,925],{"type":30,"tag":133,"props":859,"children":860},{"style":152},[861],{"type":35,"value":862},"df[",{"type":30,"tag":133,"props":864,"children":865},{"style":674},[866],{"type":35,"value":867},"'price_variant'",{"type":30,"tag":133,"props":869,"children":870},{"style":152},[871],{"type":35,"value":872},"] ",{"type":30,"tag":133,"props":874,"children":875},{"style":140},[876],{"type":35,"value":169},{"type":30,"tag":133,"props":878,"children":879},{"style":152},[880],{"type":35,"value":881}," df[",{"type":30,"tag":133,"props":883,"children":884},{"style":674},[885],{"type":35,"value":886},"'variant'",{"type":30,"tag":133,"props":888,"children":889},{"style":152},[890],{"type":35,"value":891},"].map({",{"type":30,"tag":133,"props":893,"children":894},{"style":674},[895],{"type":35,"value":896},"'2.99'",{"type":30,"tag":133,"props":898,"children":899},{"style":152},[900],{"type":35,"value":901},": ",{"type":30,"tag":133,"props":903,"children":904},{"style":177},[905],{"type":35,"value":906},"0",{"type":30,"tag":133,"props":908,"children":909},{"style":152},[910],{"type":35,"value":911},", ",{"type":30,"tag":133,"props":913,"children":914},{"style":674},[915],{"type":35,"value":916},"'3.99'",{"type":30,"tag":133,"props":918,"children":919},{"style":152},[920],{"type":35,"value":901},{"type":30,"tag":133,"props":922,"children":923},{"style":177},[924],{"type":35,"value":284},{"type":30,"tag":133,"props":926,"children":927},{"style":152},[928],{"type":35,"value":929},"})\n",{"type":30,"tag":133,"props":931,"children":932},{"class":135,"line":227},[933,938,942],{"type":30,"tag":133,"props":934,"children":935},{"style":152},[936],{"type":35,"value":937},"cph ",{"type":30,"tag":133,"props":939,"children":940},{"style":140},[941],{"type":35,"value":169},{"type":30,"tag":133,"props":943,"children":944},{"style":152},[945],{"type":35,"value":946}," CoxPHFitter()\n",{"type":30,"tag":133,"props":948,"children":949},{"class":135,"line":255},[950,955,960,964,969,973,978,982,987],{"type":30,"tag":133,"props":951,"children":952},{"style":152},[953],{"type":35,"value":954},"cph.fit(df, ",{"type":30,"tag":133,"props":956,"children":957},{"style":777},[958],{"type":35,"value":959},"duration_col",{"type":30,"tag":133,"props":961,"children":962},{"style":140},[963],{"type":35,"value":169},{"type":30,"tag":133,"props":965,"children":966},{"style":674},[967],{"type":35,"value":968},"'days_retained'",{"type":30,"tag":133,"props":970,"children":971},{"style":152},[972],{"type":35,"value":911},{"type":30,"tag":133,"props":974,"children":975},{"style":777},[976],{"type":35,"value":977},"event_col",{"type":30,"tag":133,"props":979,"children":980},{"style":140},[981],{"type":35,"value":169},{"type":30,"tag":133,"props":983,"children":984},{"style":674},[985],{"type":35,"value":986},"'churned'",{"type":30,"tag":133,"props":988,"children":989},{"style":152},[990],{"type":35,"value":991},", \n",{"type":30,"tag":133,"props":993,"children":994},{"class":135,"line":297},[995,1000,1004,1009],{"type":30,"tag":133,"props":996,"children":997},{"style":777},[998],{"type":35,"value":999},"        formula",{"type":30,"tag":133,"props":1001,"children":1002},{"style":140},[1003],{"type":35,"value":169},{"type":30,"tag":133,"props":1005,"children":1006},{"style":674},[1007],{"type":35,"value":1008},"'price_variant + segment + paid_d3'",{"type":30,"tag":133,"props":1010,"children":1011},{"style":152},[1012],{"type":35,"value":1013},")\n",{"type":30,"tag":31,"props":1015,"children":1016},{},[1017],{"type":35,"value":1018},"Output del modello: la variante $3.99 ha un hazard ratio di 0.88 (churn inferiore del 12%, p=0.03). Si integra questo nel posterior:",{"type":30,"tag":31,"props":1020,"children":1021},{},[1022],{"type":30,"tag":94,"props":1023,"children":1024},{},[1025],{"type":35,"value":1026},"Calcolo posterior LTV:",{"type":30,"tag":50,"props":1028,"children":1029},{},[1030,1049],{"type":30,"tag":54,"props":1031,"children":1032},{},[1033,1035,1040,1042,1047],{"type":35,"value":1034},"$2.99: E",{"type":30,"tag":133,"props":1036,"children":1037},{},[1038],{"type":35,"value":1039},"conversion",{"type":35,"value":1041},"=0.024, E",{"type":30,"tag":133,"props":1043,"children":1044},{},[1045],{"type":35,"value":1046},"D90_retention",{"type":35,"value":1048},"=0.34, ARPDAU=$0.12 → LTV=$2.99 × 0.024 + 90 × 0.34 × 0.12 = $3.74",{"type":30,"tag":54,"props":1050,"children":1051},{},[1052,1054,1058,1060,1064],{"type":35,"value":1053},"$3.99: E",{"type":30,"tag":133,"props":1055,"children":1056},{},[1057],{"type":35,"value":1039},{"type":35,"value":1059},"=0.019, E",{"type":30,"tag":133,"props":1061,"children":1062},{},[1063],{"type":35,"value":1046},{"type":35,"value":1065},"=0.38, ARPDAU=$0.15 → LTV=$3.99 × 0.019 + 90 × 0.38 × 0.15 = $5.21",{"type":30,"tag":31,"props":1067,"children":1068},{},[1069],{"type":35,"value":1070},"Con Monte Carlo su 10.000 iterazioni la distribuzione posterior dell'LTV: P(LTV $3.99 superiore) = 91%. Questa credibilità posterior è un segnale molto più forte rispetto a una valutazione basata solo su revenue. Decisione: scegli $3.99 e ribilancia lo stack IAP.",{"type":30,"tag":38,"props":1072,"children":1074},{"id":1073},"trade-off-complessità-del-modello-vs-velocità-di-esecuzione",[1075],{"type":35,"value":1076},"Trade-off: Complessità del Modello vs Velocità di Esecuzione",{"type":30,"tag":31,"props":1078,"children":1079},{},[1080],{"type":35,"value":1081},"L'ottimizzazione bayesiana dei prezzi IAP comporta tre costi operazionali:",{"type":30,"tag":31,"props":1083,"children":1084},{},[1085,1090],{"type":30,"tag":94,"props":1086,"children":1087},{},[1088],{"type":35,"value":1089},"1. Manutenzione della prior:",{"type":35,"value":1091}," Ogni nuovo evento, cambiamento meta, lancio di competitor modifica le distribuzioni della prior. La ricalibratura ogni 6 mesi è obbligatoria. In studi piccoli senza data scientist questo diventa insostenibile.",{"type":30,"tag":31,"props":1093,"children":1094},{},[1095,1100],{"type":30,"tag":94,"props":1096,"children":1097},{},[1098],{"type":35,"value":1099},"2. Granularità del segmento:",{"type":35,"value":1101}," 8 segmenti × 3 prezzi = 24 posterior da tracciare. In segmenti piccoli (ad es. whale) la varianza posterior rimane alta e gli intervalli di confidenza ampi. Soluzione pratica: estrapolate il segmento whale, mantenetevi un A\u002FB test classico, applicate il bayesiano agli altri.",{"type":30,"tag":31,"props":1103,"children":1104},{},[1105,1110],{"type":30,"tag":94,"props":1106,"children":1107},{},[1108],{"type":35,"value":1109},"3. Frammentazione di piattaforma:",{"type":35,"value":1111}," iOS vs Android hanno sensibilità al prezzo diverse. Su Apple App Store la conversion a $2.99 è il 23% più alta che su Android (App Annie 2025). Due posterior separate per piattaforma o una pooled? Separate e il campione si riduce, pooled e entra il bias di piattaforma. Soluzione: modello bayesiano gerarchico — platform come random effect.",{"type":30,"tag":31,"props":1113,"children":1114},{},[1115],{"type":35,"value":1116},"Comunque il bayesiano è più veloce del fermo attesa in A\u002FB. Il test finisce in 10 giorni, l'impatto revenue è visibile in 2 settimane, la proiezione LTV si aggiorna a giorno 30. In frequentista questa timeline è 8-12 settimane.",{"type":30,"tag":38,"props":1118,"children":1120},{"id":1119},"conclusione-mentalità-probabilistica-del-pricing",[1121],{"type":35,"value":1122},"Conclusione: Mentalità Probabilistica del Pricing",{"type":30,"tag":31,"props":1124,"children":1125},{},[1126],{"type":35,"value":1127},"Nel F2P mobile il pricing non è più binario, è un processo continuo di aggiornamento posterior. Anziché risolvere conversion e revenue con p-value separati, modellarli insieme in un framework probabilistico minimizza il regret, accorcia i tempi di test, consente l'ottimizzazione a livello di segmento. L'approccio bayesiano richiede disciplina nel costruire la prior, ma in cambio offre il diritto a decisioni precoci, integrazione della proiezione LTV e allocazione dinamica con Thompson sampling. Se lo stack IAP ha 5+ tier e il budget UA mensile supera i $100K, l'infrastruttura di test bayesiano non è più opzionale.",{"type":30,"tag":1129,"props":1130,"children":1131},"style",{},[1132],{"type":35,"value":1133},"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":1135},[1136,1137,1138,1139,1140,1141,1142],{"id":40,"depth":158,"text":43},{"id":81,"depth":158,"text":84},{"id":370,"depth":158,"text":373},{"id":580,"depth":158,"text":583},{"id":802,"depth":158,"text":805},{"id":1073,"depth":158,"text":1076},{"id":1119,"depth":158,"text":1122},"markdown","content:it:gaming:ottimizzazione-prezzo-bayesian-f2p-mobile.md","content","it\u002Fgaming\u002Fottimizzazione-prezzo-bayesian-f2p-mobile.md","it\u002Fgaming\u002Fottimizzazione-prezzo-bayesian-f2p-mobile","md",1782079500264]