Sintonizzando antifrode e regole
TL; DR
L'antifrode non è una «cattura di intrusi», ma un'ottimizzazione dei profitti: minimizziamo gli Expected Loss (EL) da frode e charjbeek con la limitazione di Cost of Friction (CoF) e AR _ net. Schema base: schema (ML) la soglia/foresta step-up della regola (policy & velocity) per la verifica manuale. Il successo è dato da etichette pulite, feci stabili, soglia calibrata economicamente, release canarie, idemoticità rigorosa e governabilità delle regole.
1) Produzione economica
Expected Loss:- `EL = P_fraud(tx) × Exposure(tx)`; Normalmente «Exposure = captured _ amount».
- `CoF = (Abandon_on_Friction × LTV_new/ret) + Opex_review + Fees_stepup`.
- `Profit = GGR − Cost_payments − EL − CoF`.
La soglia ottimale è questa: seleziona il punteggio-cutoff in modo da essere "d (Profit )/d.6 = 0", oppure la griglia min ('EL+CoF "). In pratica, cost-sensitive ROC/PR con pesi: 'w _ fraud = Exposure', 'w _ fp = LTV _ loss + opex'.
2) Foresta di autenticazione (step-up ladder)
1. Auto-approve (a basso rischio) - Passaggio immediato, 3DS frictionless dove possibile.
2. Step-up A: 3DS challenge / SCA / device-challenge / reCAPTCHA.
3. Step-up B: легкий KYC (doc selfie/face-match, liveness).
4. Manuale review: valigetta da analista (SLA, reason-codes).
5. Auto-decline: alto rischio/sanzioni/mule/anomalie voucher.
La soglia/ramo dipende dal punteggio di campionamento, dalla somma ('ticket _ size'), dal paese, da BIN/issuer, dai files comportamentali e dal contesto (bonus campagne, finestre notturne, velocity).
3) Segnali e finocchi (base minima)
Pagamenti: BIN/IIN, issuer _ country, ECI/3DS flow, AVS/CVV match, codici soft-decline, rimborsi/dispute nella storia.
Comportamento: velocità degli eventi (velocity: 'cards/device/ip/email'), ora del giorno, first-seen/last-seen, «topologia» degli account (grafici: dispositivi comuni/carte/portafogli).
Dispositivo/rete: device fingerprint, emulatori/jail/ruth, proxy/VPN/TOR, ASN/hosting.
Anti-bonus: sindacalisti di rifornimento, bonus di pompa, cartelli anomali senza gioco.
Pagamenti/portafogli/voucher: ripetizioni PIN, geo-mismatch, rado «veloce», cascate Mouling.
Livello, validazioni, bandiere SoF/SoW.
Sanzioni/RR/Block List - Corrispondenze di elenchi, partita di fuzzy FIO/indirizzi.
4) Stack: ML + regole
5) Metriche di qualità (con basi chiare)
AR_clean = `Auth_Approved / (Auth_Attempted − Fraud_preblocked − Abandon_3DS)`
Fraud Rate = 'Fraud _ captured _ amount/Captured _ amount'
Marceback Rate'Chargeback _ count/Captured _ Tx '(o in base alla somma)
False Positive Rate (FP) = `Legit_declined / Legit_attempted`
Step-up Rate = `StepUp_tx / Auth_Attempted`, Abandon_on_StepUp
Auto-approve %, Manual review %, Review SLA/TtA
Net Profit uplift dopo il tuning (AB-differenza di controllo vs).
Punti di riferimento: FP per nuovi utenti 1-2% (volume), Fraud (totale) nel corridoio di destinazione licenza/schemi.
6) Soglie e regole
6. 1 Calibrazione soglia
Costruiamo cost-curve. Per ogni «beh», creiamo «EL».
Sceglieremo il minimo. Per l'high-ticket, è una singolare'beh _ hi '.
6. 2 Regole tipiche (pseudocode)
yaml
- name: SANCTIONS_HIT when: sanctions_match==true action: DECLINE reason: "Sanctions/PEP match"
- name: BIN_RISKY_3DS when: bin in RISKY_BINS and score in [τ_low, τ_mid)
action: STEPUP_3DS
- name: DEVICE_VELOCITY_LOCK when: device_id in last_10min.deposits > 3 action: DECLINE_TEMPORARY ttl: 2h
- name: BONUS_ABUSE_GUARD when: (bonus_received and gameplay_turnover < Xdeposit_amount) and payout_request action: HOLD_REVIEW reason: "Turnover not met"
6. 3 Limiti dinamici
Limite di importo e numero di transazioni per livello di rischio (risk-tier): 'R1/R2/R3'.
Limiti adattivi per i nuovi account, riscaldati con una buona storia.
7) Ciclo di vita delle regole (governance)
DSL/Registro regole con le versioni, il proprietario e la descrizione dell'effetto.
Shadow mode → canary (5–10%) → full rollout.
RACI: Owner (Payments Risk), Approver (Compliance/Legal), Consulted (Support/Treasury), Informed (Ops).
Loga di controllo: chi/quando ha modificato quali metriche/AV, ripristinare.
Durata della regola e rivalutazione (ad esempio 30/60 giorni).
8) Dati e formazione dei modelli
Split in base al tempo, senza fuoriuscire (feature solo dalla finestra precedente).
Etichetta di destinazione: confirmed fraud/mandeback; singole etichette bonus abuse.
Reweighing delle classi per importo (amount-weighted loss).
Monitoraggio Draft: PSI per i files chiave, KS per gli scali, baseline stability.
Trigger Retrain: PSI> 0. 25, caduta di KS, cambio di traffico/giurisdizione.
9) Spiegabilità e sapport
Per ogni soluzione generiamo reason _ codes (fino a 5 motivi) con suggerimenti umani.
Zapport macro per step-up/guasti (3DS, KYC, turnover).
Discussioni/display: il feedback entra nel labeling pipeline (chiudiamo il ciclo).
10) Complaence e privacy
GDPR/DSAR: diritto di spiegazione della soluzione; Ridurre al minimo il PII; hash (salted) degli identificatori (email/phone/PAN-token).
Flusso PAN-safe PCI-DSS, tornitura.
Sanzioni/AML - tracciato di screening separato + escalation MLRO.
Retention: regole di conservazione dei segnali e delle giustificazioni delle soluzioni.
11) Monitoraggio e alert (ore/giorno)
AR_clean, Fraud (amt%), FP (retention-weighted), Step-up/Abandon, Review SLA, Chargeback Rate (lagged).
Spiegamenti velocity, crescita TOR/Proxy/ASN-hosting, degrado BIN, voucher-rari.
Alert a: FP> corridoio, Fraud> target, Abandon> basi + X p.p., deriva PSI/KS.
12) Tagli SQL (esempio)
12. 1 Metriche di base
sql
WITH base AS (
SELECT
DATE_TRUNC('day', attempt_ts) d, country, provider, method_code,
COUNT() FILTER (WHERE auth_status='ATTEMPTED') AS attempted,
COUNT() FILTER (WHERE auth_status='APPROVED') AS approved,
COUNT() FILTER (WHERE decision='DECLINE' AND label='LEGIT') AS fp_cnt,
SUM(captured_amount) AS cap_amt,
SUM(CASE WHEN label='FRAUD' THEN captured_amount ELSE 0 END) AS fraud_amt
FROM payments_flat
GROUP BY 1,2,3,4
)
SELECT d, country, provider, method_code,
approved::decimal/NULLIF(attempted,0) AS ar_clean,
fraud_amt::decimal/NULLIF(cap_amt,0) AS fraud_rate_amt,
fp_cnt::decimal/NULLIF(attempted,0) AS fp_rate
FROM base;
12. 2 Quota di step-up e guasti di scorrimento
sql
SELECT
DATE_TRUNC('day', attempt_ts) d,
WIDTH_BUCKET(score, 0, 1, 10) AS bucket,
AVG(CASE WHEN decision='STEPUP' THEN 1 ELSE 0 END) AS stepup_share,
AVG(CASE WHEN decision='DECLINE' THEN 1 ELSE 0 END) AS decline_share,
AVG(CASE WHEN stepup_abandon THEN 1 ELSE 0 END) AS abandon_after_stepup
FROM risk_events
GROUP BY 1,2
ORDER BY d, bucket;
13) Playbook di tuning
La crescita di Fraud (amt%), con FP stabile, solleva «→», rafforza velocity su dispositivi/ASN, abilita 3DS-challenge su BIN vulnerabili.
Un FP alto ha i nuovi → di attenuare il low-ticket, trasferire la parte in Step-up A invece di deviare.
Abandon è in grado di negoziare con PSP i parametri 3DS2, migliorare UX, restringere step-up su mobile per low-risk.
Le reti di bonus sindividuali le grafiche, limitare i pagamenti «paralleli», le regole turnover.
Anomalie voucher di velocity per PIN/retailer/geo, device-binding, hold prima della verifica.
14) Implementazione: foglio di assegno
- Calibrazione economica della soglia («EL+CoF»), singolarmente «beh» per segmenti.
- Registro regole (DSL), shadow→canary→rollout, controllo e ripristino.
- Reason-codes e modelli di comunicazione.
- Monitoraggio PSI/KS, deriva Fic/Scoop, regolare retrain.
- Feedback (disputy→leybly).
- Regole KYC/step-up, SLA review e TtA/TtR.
- Privacy: hash ID, minimizzazione PII.
15) Riepilogo
Il tuning dell'antifrode è l'ottimizzazione sistemica dei profitti con la frizione controllata: ML-screening + step-up foresta elaborata, regole legali rigide e limiti velocity. La calibrazione economica della soglia, le etichette pulite, le etichette canarie e la rigida maneggevolezza danno una bassa Fraud in termini di somma, una bassa FP nelle nuove, un alto AR _ net - senza sorprese per la compilazione e UX.