A/B-упай эрежелери тесттер
Упай - ар кандай оюндун жүрөгү. оюнчулардын жүрүм-туруму, катышуу түзүмү жана экономика (ARPPU, Bonus-сөөктөр) көз каранды, так ойлор болуп эсептелет. Төмөндө - практикалык рецепт, жаңы көз айнек эрежесин текшерип, метриктердин өсүшү артефакт эмес, реалдуу экенине ынануу.
1) Биз так эмнени сынап жатабыз
Эрежелердин мисалдары:- Коюмдардын суммасы боюнча: ар бир €1 коюм үчүн 1 упай.
- win/bet мультипликатору боюнча: көз айнек = × көбөйткүч, ар бир коюм үчүн капка менен.
- Гибрид: айлануу үчүн упай + "сериясы" үчүн күчөтүү (катары менен спин N), мүнөт/саат боюнча капка.
- Миссиялары: тапшырмаларды аткаруу үчүн фикс-упай (T1...Tn) барган сайын татаалдыкта.
Гипотеза (мисал): "Модель "мультипликатор + капка" Net ARPPU начарлоосуз participation_net жана completion rate жогорулатат (байгелерден/бонустардан кийин) ".
2) Эксперименталдык бирдиги жана рандомизация
Бирдик: колдонуучу (сессия эмес, аппарат эмес).
Бөлүштүрүү: туруктуу туздары менен статикалык хэш (user_id → bucket); A/B/C үчүн 50/50 же 33/33/33 үлүшү.
стратификация (сунушталат): payer-status (жаңы төлөгөн/кайра төлөгөн/төлөбөгөн), платформа, гео.
Sticky-assignment: колдонуучу дайыма сыноо учурунда бир эрежени көрөт.
SRM текшерүү (Sample Ratio Mismatch): күн сайын күтүлгөн топтордун иш жүзүндөгү үлүшүн салыштырып (hi-square). SRM - жол агып сигнал, туура эмес чыпкалоо, мүчүлүштүктөр.
3) Метрика жана "көз айнек"
Активдүүлүк жана катышуу
Reach: үлүш, ким иш-чараны көргөн.
Participation_gross: кирген/eligible.
Participation_net: прогресс/eligible баштады.
Completion: аяктады/башталды.
Сапат жана акча
Δ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: (кошумча киреше) − (сыйлыктар + бонустар + операциялык + фрод-агып чыгуулар).
Гардероб
1000 колдонуучуларга даттануулар/техникалык колдоо, KYC боюнча мүчүлүштүктөр, анормалдуу коюм үлгүлөрү, RG желектери (лимиттер, өзүн-өзү жоюу).
4) узактыгы, сезондук жана жаңылык
жок дегенде 2 толук бизнес-цикл (мисалы, 2 жума дем алыш күндөрүн басып алуу үчүн).
novelty-эффектти эске алыңыз: биринчи 48-72 саат. Фиксация жана анализдөө фазалары (D0-D2, D3-D7, D8 +).
чоң промо менен кесип эмес, же топтор боюнча "бирдей ызы-чуу" пландаштыруу.
5) Тандоо кубаттуулугу жана көлөмү (эсептөө мисалы)
Максаты: орточо "колдонуучуга көз айнек" (же Net ARPPU) боюнча Δ айырмасын аныктоо.
Эки тандалган t-тест үчүн формула (топтордо бирдей):[
n_{\text{на group}} =\frac {2, (z_{1-\alpha/2}+z_{1-\beta}) ^ 2 ,\sigma ^ 2} {\Delta ^ 2}
]
Мисалы: Δ = 5 упай кармагыбыз келет, σ = 120, α = 0,05 (эки тараптуу), кубаттуулугу 80% (β = 0,2).
(z_{1-α/2}=1{,}96), (z_{1-β}=0{,}84) → суммасы 2,8 → чарчы 7,84.
(\sigma^2 = 14,400).
(n =\frac {2\times 7 {,} 84\times 14,400} {25 }\approx\frac {225,792} {25 }\approx 9,032).
6) Дисперсияны азайтуу: тестти "арзан" кылуу
CUPED: предтестик ковариаттарга регрессиялык корректировка (мисалы, өткөн жумадагы көз айнек/коюмдар).
Ковариаттар: payer-желеги, жүгүртүү лог-трансформдери, активдүүлүк, платформа, гео.
Каталарды кластерлөө: колдонуучунун деңгээлинде (ичинде кайталанган сессиялар).
7) Интерференция жана "кысыктар"
Упай эрежеси тесттин катышуучуларына гана таасир этпейт:- Коомдук салыштыруу (leadboard жалпы) → "spillover".
- Жалпы Jackpots/биргелешкен миссиялар → cross таасири.
- топ же жашыруун нормалдаштыруу боюнча өзүнчө лидерлик такталары.
- Трафик/гео кластерлери боюнча кластердик рандомизация (кымбатыраак, бирок таза).
- Per-протокол (ITT) + сезгич анализдер.
8) Antifrod жана Cap эрежелери
Көз айнектин ар кандай өзгөрүшү оптималдаштырууга түрткү берет: микроставкалар, бот өстүрүү, "көз айнек фермасы".
Минималдуу коргоо:- Бир мүнөттө/саатта/суткада жана бир коюм үчүн көз айнек.
- Коюмдардын минималдуу туруксуздугу ("идеалдуу" ырааттуулукка тыюу салуу).
- headless/кайталанма fingerprints детекция, прокси.
- Ири байгелерди кечиктирилген текшерүү + KYC.
- Аналитика: салыштыруу "көз айнек/коюм" жана "көз айнек/мин" бөлүштүрүү, куйруктарын издеп.
9) Окуялар жана маалыматтар схемасы (минималдуу)
Окуялар:- `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) SQL-талдоо эскиздери
SRM-текшерүү (топтор боюнча бөлүштүрүү):sql
SELECT group, COUNT() AS users
FROM assignments
WHERE test_id =:test
GROUP BY group;
-- андан ары күтүлгөн үлүштөргө каршы хи-квадрат
Participation/Completion топтору боюнча:
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 жана сыйлыктардын/бонустардын наркы:
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 (мисал):
sql
-- pre_value: көз айнек/тестке чейинки киреше; value: тест учурунда
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) Жеке таасирлер жана гетерогендик
HET эффекттерин текшерүү:- Жаңы келгендер vs core, low-value vs high-value, ар кандай платформалар/гео.
- Кээде көз айнектин жаңы формуласы киттерди өзгөртпөстөн mid-core "күйгүзөт" - бул туура жыйынтык.
- "p-hacking" кармоо үчүн эмес, сегменттерди алдын ала каттоо.
12) Тез-тез тузак
1. Бардык топтор үчүн жалпы leadboard → кийлигишүү.
2. Сыноо учурунда сыйлыктардын түзүмүн өзгөртүү → теңдешсиздик.
3. Pharm көз айнек microparts → Эмес uplift.
4. SRM жана "сүзүүчү чыпкалар" ETL → которулган баа.
5. "ыплас" АРППУга таянуу, сыйлыктарды/бонустарды кошпогондо.
6. Туура ырааттуу статистикасыз флюктуациядан улам эрте токтоо.
13) Байес vs жыштык жана ырааттуу чечимдер
Фреймворк: Байес ыкмасын колдонсо болот (метриканын постериалдык айырмасы, "В жакшы А" ыктымалдыгы), өзгөчө убакыттын өтүшү менен мониторинг жүргүзүүдө.
Абайлаңыз: көз айнек эрежелери үчүн бендиттер тастыкталган uplift кийин ылайыктуу - баштапкы валидацияда эмес, иштөө стадиясында.
14) жоопкерчиликтүү оюн жана комплаенс
Ачык эрежелер жана капкалар: оюнчу упай кантип табаарын түшүнүшү керек.
Активдүүлүктүн жана депозиттердин лимиттери, "тыныгуулар" жана RG-кеңештер.
Оюндун стили үчүн эч кандай жашыруун "айып".
15) Mini Case (синтетикалык)
Контекст: жумалык иш-чара, A = "€1 коюм үчүн упай", B = "win/bet мультипликатор боюнча упай, cap = 50/коюм".
Өлчөмү: 2 × 10 000 колдонуучулар, payer статусу боюнча катмарлаштыруу. SRM - оку.
Натыйжалары:- Participation_net: A 17,3% → B 22,1% (+4,8 п.п.).
- Completion: A 38,9% → B 44,0% (+5,1 п.п.).
- Net ARPPU: €41,2 → €43,5 (+ €2,3) менен Prize + Bonus per payer ≈ €6,4 (өзгөргөн жок).
- Даттануулар/1k: өзгөрүүсүз; фрод-желектери ↓ 0,3 п.п. каптарга.
- Жыйынтык: В эрежеси - жеңүүчү; "узун куйругу" менен масштабдайбыз жана каптарды сактайбыз.
16) Чек-тизме ишке киргизүү A/B көз айнек
- бирдик = колдонуучу, sticky-assignment, стратификация.
- Өзүнчө Leaderboard/нормалдаштыруу интерференцияны алып салуу.
- Көз айнек, antibot сигналдар, KYC негизги байге үчүн так капка.
- Гипотезаларды жана метриктерди кайра каттоо (primary/secondary/guardrails).
- кубаттуулугу жана узактыгы планы, сезондук эске алынган.
- CUPED/ковариаттар туташтырылган, SRM-alertov пайплайн.
- Дашборд «Reach → Participation → Progress → Completion → Value».
- Отчет: сыйлыктар/бонустар кийин акча менен инкремент, post-effect куйругу.
Упай чегерүү эрежеси - жүрүм-турумдун рычагы. Туура иштелип чыккан A/B-тест (жок SRM, antifrod жана тымызын менен) коопсуз катышуусун көбөйтүүгө мүмкүндүк берет, completion жана Net ARPPU, оюнчулар жана өнөктүк экономиканын ишенимин сактоо.