Test A/B delle regole per l'assegnazione dei punti
Guadagnare punti è il cuore di qualsiasi gioco. Da come si contano esattamente i punti dipende il comportamento dei giocatori, la struttura partecipativa e l'economia (ARPPU, bonus-costa). Di seguito è una ricetta pratica per testare correttamente la nuova regola degli occhiali e assicurarsi che la crescita delle metriche è reale e non artefatto.
1) Cosa testiamo esattamente
Esempi di regole:- L'importo delle scommesse è 1 punto ogni 1 €.
- Per il multiplicatore win/bet: punti = moltiplicatore x k , con cappa a puntata.
- Ibrido: punti per giro + bust per «serie» (N spin di fila), caps per minuto/ora.
- Missioni: punti fix per attività (T1... Tn) con complessità crescente.
Ipotesi (esempio): «Il modello del multiplicatore + cap aumenterà la partecipazione _ net e la complettività rate senza peggiorare Net ARPPU (dopo premi/bonus)».
2) Unità sperimentale e randomizzazione
Unità utente (non sessione, non periferica).
Distribuzione: hash statico (user _ id → bucket) con sali fissi; quote di 50/50 o di 33/33/33 per A/B/C.
Stratificazione (consigliata): payer-status (nuovi paganti/ripagati/non paganti), piattaforma, geo.
Sticky-assignment: l'utente vede sempre la stessa regola durante il test.
Controllo SRM (Sample Ratio Mismatch) - Controllare ogni giorno le quote effettive dei gruppi con le attese (hi-quadrato). SRM - Segnale di fuga di traffico, filtraggio errato, bagagli.
3) Metriche e «vortice di occhiali»
Attività e partecipazione
Reach, la parte che ha visto l'ivent.
Partecipazione _ gross: connessi/elegibili.
Partition _ net - Iniziano i progressi/elegibili.
Completati/iniziati.
Qualità e denaro
ΔDAU/WAU и stickiness (DAU/WAU).
Avg Bets per Session, Avg Bet Size.
ARPPU (net) = ARPPU − (Prize + Bonus Cost per payer).
Avg Deposit, Paying Share.
Net Uplift: (ricavato) - (premi + bonus + operativo + fuoriuscita).
Gardereily
Lamentele/supporto tecnico per 1.000 user, disdette KYC, pattern di scommesse anomale, bandiere RG (limiti, auto-esclusione).
4) Durata, stagionalità e novità
Almeno 2 cicli di business completi (ad esempio, 2 settimane per prendere il weekend).
Tenere presente novelty-effect: picco delle prime 48-72 ore Fissa e analizza le fasi (D0-D2, D3-D7, D8 +).
Non attraversare i grandi promo o pianificare «rumore uguale» per gruppo.
5) Potenza e volume del campione (esempio di calcolo)
L'obiettivo è di rilevare la differenza per punto medio per utente (o Net ARPPU).
Formula per il test T a due velocità (uguale nei gruppi):[
n _ {\text {per gruppo}} =\frac {2, (z _ {1-\alpha/2} + z _ {1-\beta}) ^ 2 ,\sigma ^ 2} {{Delta ^ 2}
]
Esempio: vogliamo catturare un = 5 punti, = 120, © = 0,05 (bidirezionale), con una potenza dell '80% (file= 0,2).
(z _ {1- /2} = 1 {,} 96), (z _ {1-©} = 0 {,} 84) è la somma di 2,8 del 7,84.
(\sigma^2 = 14,400).
(n =\frac {2\times 7 {,} 84\times 14,400} {25 }\approx {225,792} {25 }\approx 9,032) per gruppo.
6) Riduzione della dispersione: rendiamo il test più economico
CUPED: regolazione di regressione per i covariati precursori (ad esempio, punti/scommesse della scorsa settimana).
Cowariati: flag payer, loga-trasformazione, attività, piattaforma, geo.
Clustering degli errori a livello utente (ripetute sessioni all'interno).
7) Interferenza e «stretti»
La regola degli occhiali può influire non solo sui partecipanti al test:- Il confronto sociale (liderbord generale) è «spillover».
- Jackpot/missioni congiunte comuni, effetto crociato.
- Liderboard separati per gruppo o normalizzazione nascosta degli occhiali.
- Randomizzazione cluster per cluster di traffico/geo (più costoso ma pulito).
- Per protocollo (ITT) + test sensibili.
8) Antifrode e gap di regole
Qualsiasi cambiamento degli occhiali stimola l'ottimizzazione: microspie, botomotori, fattorie di occhiali.
Protezione minima:- Punti al minuto/ora/giorno e in una puntata.
- Volatilità minima dei tassi (proibizione delle sequenze «perfette»).
- Rilevamento di headless/fingerprint ripetuti, proxy.
- Verifica accantonata dei premi più importanti + KYC.
- Analisi: confrontare punti/scommesse con punti/min di distribuzione, cercare le code.
9) Eventi e diagramma di dati (minimo)
Eventi:- `session_start {user_id, ts, platform}`
- `event_view {user_id, event_id, ts}`
- `event_join {user_id, event_id, ts}`
- `points_awarded {user_id, event_id, rule_id, amount, source, ts}`
- `mission_progress {user_id, mission_id, step, value, ts}`
- `mission_complete {user_id, mission_id, ts}`
- `bet {user_id, game_id, bet, win, ts}`
- `deposit {user_id, amount, ts}`
- `rules {rule_id, name, params, caps_minute, caps_hour, caps_day, version}`
- `assignments {user_id, test_id, group, assigned_at}`
10) sketch SQL per l'analisi
Controllo SRM (distribuzione per gruppo):sql
SELECT group, COUNT() AS users
FROM assignments
WHERE test_id =:test
GROUP BY group;
-hi-quadrato successivo contro le quote previste
Partecipazione/Complection per gruppo:
sql
WITH eligible AS (
SELECT user_id FROM users
WHERE last_active_at >=:start - INTERVAL '14 day'
), joined AS (
SELECT DISTINCT user_id FROM event_join
WHERE event_id =:event AND ts BETWEEN:start AND:end
), started AS (
SELECT DISTINCT user_id FROM mission_progress
WHERE ts BETWEEN:start AND:end AND mission_id IN (:missions)
), completed AS (
SELECT DISTINCT user_id FROM mission_complete
WHERE ts BETWEEN:start AND:end AND mission_id IN (:missions)
)
SELECT a. group, COUNT(DISTINCT j. user_id)::float/COUNT(DISTINCT e. user_id) AS participation_gross, COUNT(DISTINCT s. user_id)::float/COUNT(DISTINCT e. user_id) AS participation_net, COUNT(DISTINCT c. user_id)::float/NULLIF(COUNT(DISTINCT s. user_id),0) AS completion
FROM eligible e
JOIN assignments a USING (user_id)
LEFT JOIN joined j USING (user_id)
LEFT JOIN started s USING (user_id)
LEFT JOIN completed c USING (user_id)
WHERE a. test_id =:test
GROUP BY a. group;
Net ARPPU e il prezzo dei premi/bonus:
sql
WITH payors AS (
SELECT DISTINCT user_id FROM payments
WHERE ts BETWEEN:start AND:end
), rev AS (
SELECT user_id, SUM(ggr) AS ggr
FROM revenue
WHERE ts BETWEEN:start AND:end
GROUP BY user_id
), costs AS (
SELECT user_id, SUM(prize + bonus) AS cost
FROM promo_costs
WHERE ts BETWEEN:start AND:end
GROUP BY user_id
)
SELECT a. group, AVG(COALESCE(r. ggr,0) - COALESCE(c. cost,0)) FILTER (WHERE p. user_id IS NOT NULL) AS net_arppu
FROM assignments a
LEFT JOIN payors p USING (user_id)
LEFT JOIN rev r USING (user_id)
LEFT JOIN costs c USING (user_id)
WHERE a. test_id =:test
GROUP BY a. group;
CUPED (esempio):
sql
-pre _ value: punti/ricavato prima del test value durante il test
SELECT group, AVG(value - theta pre_value) AS cuped_mean
FROM (
SELECT a. group, x.user_id, x.value, x.pre_value, (SELECT COVAR_SAMP(value, pre_value)/VAR_SAMP(pre_value)
FROM x) AS theta
FROM assignments a
JOIN x ON x.user_id = a. user_id
WHERE a. test_id =:test
) t
GROUP BY group;
11) Effetti privati e eterogeneità
Controlla gli effetti HET:- Principianti vs core, low-value vs high-value, piattaforme/geo diverse.
- A volte una nuova formula di occhiali «accende» mid-core senza cambiare le balene è il risultato giusto.
- Prima di registrare i segmenti, non catturare «p-hacking».
12) Trappole frequenti
1. Il liderborde comune per tutti i gruppi è interferenza.
2. La modifica della struttura dei premi durante il test è ineguagliabile.
3. Gli occhiali farm con le microspie sono uplift nefalidico.
4. La SRM e i filtri fluttuanti nell'ETL sono stati spostati.
5. Supporto per ARPPU «rigoglioso» senza la detrazione di premi/bonus.
6. Uno stop precoce a causa di fluttuazioni senza una statistica corretta e coerente.
13) Bayes vs frequenza e soluzioni sequenziali
Framework: è possibile utilizzare l'approccio bayesiano (differenza posteriale delle metriche, probabilità di B migliore di A), soprattutto nel monitoraggio temporale.
Attenzione: i bendit per le regole degli occhiali sono appropriati dopo l'uplift confermato - in fase di funzionamento, non alla convalida primaria.
14) Gioco responsabile e compilazione
Regole e gap trasparenti: il giocatore deve capire come guadagna punti.
Limiti di attività e depositi, «pausa» e suggerimenti RG.
Niente multe per lo stile di gioco.
15) Mini valigetta (sintetico)
Contesto: una settimana di ivent, A = «punti per €1 puntata», B = «punti per multiplicatore win/bet, cap = 50/puntata».
Dimensioni: 2 x 10.000 utenti, strattonamento per stato payer. SRM - oc.
Risultati:- Participation_net: A 17,3% → B 22,1% (+4,8 п.п.).
- Completion: A 38,9% → B 44,0% (+5,1 п.п.).
- Net ARPPU: A €41,2 € B €43,5 (+ €2,3) a Prize + Bonus per payer €6,4 (non cambiato).
- Reclami/1k: nessuna modifica; Le bandiere di frod sono a spese dei caps.
- Conclusione: regola B vincitrice; ridimensioniamo con una lunga coda di premi e conserviamo i caps.
16) Assegno foglio di avvio A/B per punti
- Unità = utente, sticky-assignment, strazione.
- Liderbord separati/normalizzazione per rimuovere interferenza.
- Gocce nitide per punti, segnali antibot, KYC ai grandi vincitori.
- Preregistrazione di ipotesi e metriche (primary/secondary/guardrail).
- Piano di potenza e durata, stagionale preso in considerazione.
- CUPED/Covariati connessi, pipline SRM-alert.
- Дашборд «Reach → Participation → Progress → Completion → Value».
- Rapporto: accredito in denaro dopo premi/bonus, coda post-effect.
La regola dei punti è la leva del comportamento. Il test A/B correttamente progettato (senza SRM, antifrode e covariati) consente di aumentare in modo sicuro la partecipazione, la complettività e Net ARPU, mantenendo la fiducia dei giocatori e l'economia delle campagne.