Bonus-abuse et protections financières
1) Qu'est-ce que bonus-abuse et pourquoi c'est un problème financier
Bonus-abuse - utilisation ciblée des bonus/actions pour obtenir un avantage garanti sans risque de jeu équivalent ou en contournant les règles. Conséquences :- Pertes directes : coût du bonus, spins gratuits, promotions/FX, CB/Refund.
- Distorsion des métriques : AR/MAU surévalué, faux uplift'.
- Risques de paiement : « carrousels » depozit→vyvod, chargeback-farming.
- Risques de licence : violations de RG/KYC/AML, promotions de misleading.
2) Taxonomie des abus (schémas)
1. Stacking - plusieurs bonus par personne/ménage/appareil/token de paiement.
2. Net-deposit loops - dépôt pour un bonus → des taux minimaux → retrait ou charjbek.
3. Hedging/Arbitrage - parier sur des marchés/jeux interconnectés pour « court-circuiter » le risque.
4. High-RTP cherry-picking est un jeu de titres avec une contribution élevée à WR.
5. Method arbitrage est une méthode de dépôt bon marché → un corridor de retrait coûteux/rapide.
6. L'arbitrage FX est la spéculation sur la différence de change entre le dépôt et le retrait.
7. Multi-comptabilité - clones avec réutilisation des appareils/réseaux/moyens de paiement.
8. Chargeback farming est un jeu de bonus, puis le remboursement du dépôt via le contentieux/charjbek.
9. KYC-evasion est un contournement ciblé de SoF/SoW, un remplacement de pays (VPN/Proxy/SIM).
3) Protections financières (policy core)
ND (Net Deposits) -gate : participation/paiements à 'ND ≥ 0' (ou seuil 'ND ≥ θ').
Same-method/Return-to-source : le retrait jusqu'au montant ND est uniquement à la source du dépôt.
Payout-locks : interdiction/restriction de sortie avec un bonus actif avant l'exécution de WR et la vérification des violations.
WR & Contribution %: règles de jeu transparentes (BONUS-ONLY ou BONUS + DÉPÔT) et poids par catégorie de jeu.
Max bet en WR : limite absolue ou part du bonus (par exemple, '≤ 5 EUR' ou '10 % bonus ≤').
One-per constraints: по person/household/device/payment_token.
Exclusivités jeu/risque : interdiction de « acheter des frispins », jackpots, titres RTP anormalement élevés.
Velocity caps : limites sur la fréquence des dépôts/retraits/paiements échoués.
Rolling-reserve/holdbacks : tampon d'assurance sur les partenaires/sous-partenaires et pour les joueurs à risque élevé.
Politique FX : fixer le taux de référence sur le bonus de subvention ; contrôler slippage sur payout.
4) Signaux de risque (payants et comportementaux)
Paiement : BIN-geo ≠ KYC-pays, soft-declines fréquents, nouveaux tokens consécutifs, carte/portefeuille, émetteurs connus « à haut risque ».
Device/Network : device-graph correspond à d'autres comptes partagés IP/ASN/VPN/hosting.
Behavior : jeu haut de gamme uniquement, retrait instantané après un dépôt min, répétition des violations WR.
Geo : KYC≠IP≠SIM, vitesse géo anormale.
Docs : KYC/POA/SoF suspects (mauvaise qualité, modèles, reuse).
FX : dépôts dans une monnaie « faible », conclusions dans un « fort », spread temporairement élevé.
Risque-scoring : modèle linéaire/GBM avec dattes par bloc (Payment/Device/Behavior/Geo/FX), étalonnage des seuils pour step-up (KYC/Liveness/SoF) et deny.
5) Architecture des règles (moteur de politique)
Idempotence : Une subvention unique pour les payment_token/household/device.
Règles « pré-dépôt » : eligibility par GEO/KYC/ND/one-per.
Règles « après dépôt » : activation de la subvention, max bet, WR, game-mix, minuterie.
Règles « en sortie » : same-method, ND-coupure, SoF/SoW step-up, hold/deny.
Audit : version des règles, motifs, evidence (pour les appels et le régulateur).
6) Incident de playbooks
1. Abuse wave (stacking) : subventions immédiates de cette campagne, recalculer WR, sélectif SoF, banding token/households.
2. Chargeback surge : inclure le 3DS-step-up, resserrer la méthode same, augmenter le hold sur les conclusions et la réserve PSP.
3. Arbitrage FX : limiter temporairement les conclusions de change croisée et introduire le spread-guard.
4. Méthode d'arbitrage : fermer les couloirs « chers » pour les ND négatifs, inclure le retour à la source seulement.
7) Droit, RG et vie privée
Terms & Promo T&C : version courte en chèque, complète en profil ; localisé.
RG : self-exclusion/limites - les bonus ne sont pas disponibles ; cooling-off met à zéro les subventions actives.
KYC/SoF : minimisation des données, consentement explicite, politiques de rétention, DPA.
Sanctions/licences : listes blanches de pays, interdictions de types de promos dans des juridictions spécifiques.
8) Données et modèle (minimum)
sql
-- Игрок и атрибуты риска risk.player_signals (
user_id PK, risk_score NUMERIC, nd_total NUMERIC, nd_30d NUMERIC, nd_7d NUMERIC,
kyc_level TEXT, geo_ip TEXT, geo_kyc TEXT, geo_sim TEXT,
device_hash TEXT, household_id TEXT, payment_token_last TEXT,
fx_profile JSONB, updated_at TIMESTAMP
);
-- Гранты бонусов и прогресс/нарушения bonus.grants (
grant_id PK, promo_id, user_id, deposit_tx_id, currency,
bonus_amount NUMERIC, granted_at TIMESTAMP, expires_at TIMESTAMP,
status TEXT -- ACTIVE FORFEITED COMPLETED EXPIRED FROZEN
);
bonus.wr_progress (
grant_id, user_id,
turnover_slots NUMERIC, turnover_tables NUMERIC, turnover_live NUMERIC,
turnover_total NUMERIC, required_total NUMERIC, updated_at TIMESTAMP
);
bonus.violations (
id PK, grant_id, user_id, type TEXT, severity TEXT, details JSONB, occurred_at TIMESTAMP
);
-- Нетто-депозиты и разрез по методам finance.net_deposits (
user_id, currency, nd_total NUMERIC, nd_by_method JSONB, updated_at TIMESTAMP
);
-- Выводы и причины hold/deny payout.requests (
payout_id PK, user_id, method TEXT, currency TEXT, amount NUMERIC,
nd_snapshot NUMERIC, same_method_ok BOOLEAN, risk_score NUMERIC,
status TEXT, reason_code TEXT, created_at TIMESTAMP, decided_at TIMESTAMP
);
9) Pseudo-DSL des règles
yaml policy: "bonus_abuse_v4"
eligibility:
geo_whitelist: [DE, AT, FI]
kyc_min: L1 nd_min: 0 one_per: [person, household, device, payment_token]
deny_if:
- sanctions_hit == true
- risk_score >= 0.85 grant:
max_bet_amount:
EUR: 5 wagering:
base: BONUS_ONLY multiplier: 30 contrib:
slots: 100 tables: 25 live: 10 game_exclusions: [JACKPOT, BUY_BONUS]
controls:
payout_lock: UNTIL_WR_DONE same_method: true allow_nd_withdrawal: true fx_spread_guard_bps: 80 method_arbitrage_block: true escalations:
- if: nd_7d < 0 then: "deny_new_bonus"
- if: device_household_overlap >= 2 then: "manual_review"
- if: cb_rate_30d > 0.8% then: "hold_payout_48h"
audience:
exclude_segments: ["self_excluded", "high_risk_bin"]
10) modèles SQL
10. 1. ND-gate et same-method sur le retrait
sql
SELECT r.payout_id,
(nd.nd_total >= 0) AS nd_non_negative,
(t.method = r.method AND t.payment_token = r.payment_token) AS same_method_ok
FROM payout.requests r
JOIN finance.net_deposits nd ON nd.user_id = r.user_id AND nd.currency = r.currency
JOIN dw.transactions_flat t ON t.tx_id = (
SELECT deposit_tx_id FROM bonus.grants
WHERE user_id = r.user_id AND status IN ('ACTIVE','COMPLETED')
ORDER BY granted_at DESC LIMIT 1
)
WHERE r.status='PENDING' AND r.created_at BETWEEN:from AND:to;
10. 2. Detect household/device overlap
sql
SELECT suspect.user_id, base.user_id AS overlap_with, suspect.device_hash, suspect.household_id
FROM risk.player_signals suspect
JOIN risk.player_signals base
ON suspect.user_id <> base.user_id
AND (suspect.device_hash = base.device_hash OR suspect.household_id = base.household_id)
WHERE suspect.updated_at > now() - INTERVAL '30 days';
10. 3. Violations Max-bet et game-mix
sql
SELECT b.user_id, b.grant_id,
SUM(CASE WHEN b.amount > l.max_bet_amount THEN 1 ELSE 0 END) AS maxbet_viol,
100.0 SUM(CASE WHEN game_category='slots' THEN b.stake ELSE 0 END)
/ NULLIF(SUM(b.stake),0) AS slots_share_pct
FROM dw.bets b
JOIN bonus.session_limits l USING (grant_id, user_id)
WHERE b.placed_at BETWEEN:from AND:to
GROUP BY 1,2
HAVING SUM(CASE WHEN b.amount > l.max_bet_amount THEN 1 ELSE 0 END) > 0
OR 100.0 SUM(CASE WHEN game_category='slots' THEN b.stake ELSE 0 END)
/ NULLIF(SUM(b.stake),0) >:one_game_share_max;
10. 4. Surveillance de chargeback-post-bonus
sql
SELECT method,
10000.0 SUM(is_chargeback::int) / NULLIF(COUNT(),0) AS cb_bps_14d
FROM risk.outcomes o
JOIN dw.transactions_flat t USING (tx_id)
WHERE o.occurred_at BETWEEN (CURRENT_DATE - INTERVAL '14 days') AND CURRENT_DATE
AND EXISTS (SELECT 1 FROM bonus.grants g WHERE g.deposit_tx_id=t.tx_id)
GROUP BY method
ORDER BY cb_bps_14d DESC;
10. 5. FX-slippage en promo
sql
SELECT g.promo_id,
SUM(fx_effective - fx_reference) 10000.0 / NULLIF(SUM(amount_reporting),0) AS fx_slippage_bps
FROM dw.transactions_flat t
JOIN bonus.grants g ON g.deposit_tx_id=t.tx_id
WHERE t.settled_at BETWEEN:from AND:to
GROUP BY 1;
11) KPI et dashboards
Taux d'abus : part des subventions avec des irrégularités/enquêtes.
WR Completion % / Time-to-WR (p50/p95).
ND Gate Hit % et la proportion de ND <0 parmi les participants.
Chargeback After Bonus (bps) par méthodes/PSP/geo.
Payout Hold Share et solution TAT moyenne.
FX Slippage (bps) par promo/devises.
Promo Liability et Breakage %.
Household/Device Overlap Index (clustering).
12) Alertes et seuils
Abuse Spike: рост `violations/100 grants` > X d/d.
CB Surge Post-Bonus : cb_bps_14d selon la méthode/geo> seuil.
ND Negative Share ↑ : proportion de ND <0 parmi les demandes de retrait> Y %.
Max-Bet Burst : sursaut d'irrégularités> seuil par marque/titre.
FX Anonymy : slippage_bps> limite par paire de devises.
Household Bloom : un nouveau grand groupe d'appareils/adresses.
Policy Drift : subventions sans version fixe des règles/consentements.
13) modèles UX (pas de « combustion » de conversion)
Carte de condition courte sur l'écran de dépôt (min bou, WR, max bet, same-method).
WR-progress-bar + debline, contribution par catégorie.
Explication de ND/conclusions : « Jusqu'au montant des dépôts nets, seulement par source ».
Step-ups doux : SoF/selfie par signal ; des délais transparents.
Appels : bouton « contester » avec la feuille de chèque des documents.
14) Tests A/B des protections
Que tester : 'nd _ min', 'max _ bet', 'WR multiplier/base', 'one _ per' -str....', 'fx _ guard'.
Guardrails: CBR bps, Abuse Rate, AR/Take-Rate, Payout TAT.
Technique : stratification par GEO/BIN/méthode, CUPED par pré-comportement, lag par SV/conclusions.
15) Chèque de mise en œuvre
- Modèle ND et coupe par méthode ; same-method/return-to-source в payout.
- Promo DSL + validateur de règles, version et audit.
- Max bet, WR, contrib%, exclusions; limites de velocity.
- Device/household graph; Profils BIN-geo/FX.
- Risque-scoring + step-ups (KYC/SoF) et seuil deny.
- Hold/Reserve mécaniciens sur les conclusions et chez PSP.
- Dashboards KPI et alertes ; les pleybooks des incidents.
- Textes juridiques (locaux), RG-gates, consentements et rétentions.
- Processus d'appel et de décision manuelle avec la SLA.
- A/B avec guardrails stricts et datfrise.
Résumé
Une protection efficace contre le bonus-abuse est un système et non un ensemble d'interdictions : contrôle ND et méthode same sur les paiements, WR/max-bet et contrib % stricts, signaux Payment/Device/Behavior/FX, risque-scoring avec step-ups, UX transparent et pureté juridique. Une telle pile réduit les pertes directes, stabilise P&L et conserve une expérience honnête pour les joueurs de bonne foi - sans trop de friction et de « faux positifs ».