Testes A/B das regras de pontuação
Os óculos são o coração de qualquer gamificação. Da forma como os pontos são considerados, depende o comportamento dos jogadores, estrutura de participação e economia (ARPPU, bônus-costa). Abaixo é uma receita prática para testar validamente a nova regra de óculos e garantir que o crescimento das métricas é real e não artefato.
1) O que estamos testando exatamente
Exemplos de regras:- Apostas: 1 ponto para cada €1 aposta.
- Por desenho animado win/bet: óculos = multiplicador ⌊ x k ⌋, com capt por aposta.
- Híbrido: pontos por volta + bust por «série» (N spin em sequência), caps por minuto/hora.
- Missões: pontos de fix para tarefas (T1... Tn) com complexidade crescente.
«O modelo «multiplicador + capá» aumentará a participação _ net e a completição rate sem deterioração do Net ARPU (após prêmios/bônus) «.
2) Unidade experimental e randomização
Unidade: usuário (não sessão ou dispositivo).
Distribuição: hash estático (user _ id → bucket) com soles fixos; 50/50 ou 33/33/33 para A/B/C.
Rateio (recomendado): payer-status (novos pagantes/reaproveitados/não pagos), plataforma, geo.
Sticky-assignment: O usuário sempre vê a mesma regra durante o teste.
Verificação SRM (Sample Ratio Mismatch): verifique a fatia real dos grupos com a expectativa (hi-quadrado). SRM - sinal de fuga de tráfego, filtragem errada, bags.
3) Métricas e «vórtice de óculos»
Atividade e participação
Reach, a parte que viu o Ivent.
Participation _ gross: entraram/elegível.
Participation _ net: Iniciando o progresso/eligível.
Complition: concluído/iniciado.
Qualidade e dinheiro
Δ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: (receita extra) - (prêmios + bônus + operações + vazamento de frod).
Garderiles
Queixas/suporte técnico para 1 000 de useiros, recusas para KYC, pattern de apostas anormais, bandeiras RG (limites, auto-exclusão).
4) Duração, sazonalidade e novidade
Pelo menos 2 ciclos de negócios completos (por exemplo, 2 semanas para capturar o fim de semana).
Leve em conta novelty-effect: Bits dos primeiros 48-72 h. Capture e analise as fases (D0-D2, D3-D7, D8 +).
Não atravessar com grandes promoções ou planear «barulho igual» em grupos.
5) Potência e volume de amostra (exemplo de cálculo)
O objetivo é detectar a diferença em «ponto por usuário» médio (ou Net ARPU).
Fórmula para o teste T de dois pés (igual em grupos):[
n _
]
Exemplo: queremos capturar o = 5 pontos, o = 120, o = 0,05 (bilateral), a potência é de 80% (£ = 0,2).
(z _\1- /2 f. = 1, 93 96), (z _\1- ) = 0, 350) o valor de 2,8 quadrado 7,84.
(\sigma^2 = 14,400).
(n =\frac\2\times 7 SE), a.84\times 14,400 por grupo
6) Redução da dispersão: fazemos o teste «mais barato»
CUPED: correção de regressão para os cobiçados pré-eleitorais (por exemplo, pontos/apostas da semana passada).
Cowariates: bandeira payer, logs transformes de circulação, actividade, plataforma, geo.
Clusterização de erros: ao nível do usuário (sessões repetidas no interior).
7) Interdição e «estreitos»
A regra de pontos pode não afetar apenas os participantes:- Comparação social (liderbord geral) com «spillover».
- Jackpots/missões compartilhadas → efeito cruzado.
- Liderbordes separados por grupo ou normalização oculta de óculos.
- Randomização cluster por clusters/geo (mais caro, mas limpo).
- Para-protocolo (ITT) + análises sensíveis.
8) Antifrode e regras capas
Qualquer alteração nos óculos estimula a otimização, como microspetores, botobicagem, fazendas de óculos.
Proteção mínima:- Kap pontos por minuto/hora/dia e por aposta.
- Volatilidade mínima das taxas (proibição de sequências «perfeitas»).
- Detecção de headless/fingerprints repetidos, proxy.
- Verificação adiada de grandes prêmios + KYC.
- Analista: compare «pontos/apostas» e «pontos/min» de distribuição, procure as caudas.
9) Eventos e esquema de dados (mínimo)
Eventos:- `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) Sketches SQL para análise
Verificação SRM (distribuição por grupo):sql
SELECT group, COUNT() AS users
FROM assignments
WHERE test_id =:test
GROUP BY group;
-- a seguir, o xi-quadrado contra a participação esperada
Participation/Complition por grupo:
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 ARPU e valor de prémios/bônus:
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 (exemplo):
sql
-- pré _ vale: pontos/receita antes da prova; value: durante o teste
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) Efeitos privados e heterogêneo
Verifique os efeitos HET:- Novatos vs core, low-value vs high-value, diferentes plataformas/geo.
- Às vezes, uma nova fórmula de óculos «acende» mid-core sem alterar as baleias é o resultado certo.
- Faça pré-registro de segmentos para não capturar «p-hacking».
12) Armadilhas frequentes
1. Liderbord comum para todos os grupos → interdição.
2. Alterar a estrutura dos prêmios durante o teste → inigualável.
3. Farm óculos com microspectores → uplift nevalida.
4. O SRM e os «filtros flutuantes» no ETL → as notas deslocadas.
5. Apoio para ARPU «aquecido» sem descontar prêmios/bónus.
6. Paragem precoce devido a flutuações sem estatísticas consistentes corretas.
13) Baies vs frequência e soluções sequenciais
Quadro: Você pode usar a abordagem bayesa (diferença posterial de métricas, probabilidade de «B melhor A»), especialmente no monitoramento no tempo.
Cuidado: Os bendits para as regras de óculos são apropriados depois do uplift confirmado - durante a operação, não na validação primária.
14) Jogo responsável e complacência
Regras e caps transparentes: o jogador precisa entender como ganha pontos.
Limites de atividade e depósitos, «pausas» e dicas RG.
Sem «multas» ocultas por estilo de jogo.
15) Mini-mala (sintético)
Contexto: Ivent semanal, A = «pontos por €1 aposta», B = «pontos de desenho animado win/bet, kap = 50/aposta».
Tamanho: 2 x 10 000 usuários, por status payer. SRM - oc.
Resultados:- 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) com Prize + Bónus per payer ≈ €6,4 (não alterado).
- Queixas/1k: sem alterações; bandeiras de frod ↓0,3 p.p. por conta dos caps.
- Conclusão: regra B - vencedor; Escalamos com a «cauda longa» dos prêmios e salvamos os caps.
16) Folha de cheque de lançamento A/B por pontos
- Unidade = usuário, sticky-assignment, esticamento.
- Liderbordes separados/normalização para remover a interdição.
- Caps nítidos para pontos, sinais anti-bot, KYC para grandes vencedores.
- Pressurização de hipóteses e métricas (primary/secundary/guardrails).
- Plano de potência e duração, sazonalidade levada em conta.
- CUPED/Covariates estão ligados, Pipeline SRM Alerts.
- Дашборд «Reach → Participation → Progress → Completion → Value».
- Relatório: Acréscimo em dinheiro após prêmios/bónus, cauda post-effect.
A regra de pontos é uma alavanca de comportamento. O teste A/B (sem SRM, antifrode e cobiçados), projetado corretamente, permite aumentar a participação, a completição e a Net ARPU de forma segura, mantendo a confiança dos jogadores e a economia das campanhas.