Dostrajanie środków zwalczania nadużyć finansowych i przepisów
TL; DR
Antyfraud nie „łapie intruzów”, ale optymalizuje zyski: minimalizujemy oczekiwaną stratę (EL) z oszustw i obciążeń zwrotnych przy ograniczaniu kosztów tarcia (CoF) i AR_net. Podstawowy schemat: punktacja (ML) → próg/drabina krok-up → zasady (polityka i prędkość) → ręczna weryfikacja. Sukces daje: czyste etykiety, stabilne funkcje, ekonomicznie skalibrowany próg, wydania kanaryjskie, ścisła idempotencja i możliwość zarządzania zasadami.
1) Ustawienie ekonomiczne
Oczekiwana strata:- „EL = P_fraud (tx) × ekspozycja (tx)”; Zazwyczaj 'ekspozycja = captured_amount'.
- "CoF = (Abandon_on_Friction × LTV_new/ret) + Opex_review + Fees_stepup'.
- „Zysk = GGR − Cost_payments − EL − CoF”.
Optymalny próg '': wybierz wynik-cutoff tak, aby 'd (Zysk )/d „= 0”, lub według siatki min (' EL + CoF '). W praktyce, wrażliwe na koszty ROC/PR z wagami: 'w _ fraud = Exposure', 'w _ fp = LTV_loss + opex'.
2) Drabina uwierzytelniająca (drabina stopniowa)
1. Automatyczna aprobata (niskie ryzyko): błyskawiczna przepustka, bezkrólewia 3DS w miarę możliwości.
2. Krok-up A: 3DS challenge/SCA/device-challenge/reCAPTCHA.
3. Krok-up B: лебкий KYC (doc selfie/face-match, liness).
4. Ręczna recenzja: przypadek u analityka (SLA, kody uzasadnienia).
5. Automatyczny spadek: wysokie ryzyko/sankcje/muły/anomalie bonu.
Próg/oddział zależy od punktacji, kwoty („ticket _ size”), kraju, BIN/emitenta, funkcji behawioralnych i kontekstu (kampanie bonusowe, okna nocne, prędkość).
3) Sygnały i cechy (minimalna podstawa)
Płatność: BIN/IIN, issuer_country, przepływ ECI/3DS, dopasowanie AVS/CVV, kody miękkiego spadku, zwroty/spory w historii.
Zachowanie: prędkość zdarzeń (prędkość: 'karty/urządzenie/ip/e-mail'), pora dnia, pierwszy widziany/ostatni widziany, „topologia” kont (łącza graficzne: urządzenia udostępnione/karty/portfele).
Urządzenie/sieć: odcisk palca urządzenia, emulatory/więzienie/korzeń, proxy/VPN/TOR, ASN/hosting.
Anty-bonus: polecenia-syndykaty, „pompowanie” bonusy, nienormalne wzory depozit → vyvod bez grania.
Płatności/portfele/kupony: powtórzenia PIN, niedopasowanie geograficzne, „szybkie” redims, kaskady mulingowe.
KYC/KYB: poziom, walidacje, flagi SoF/SoW.
Sankcje/POP/listy blokowe: mecze listowe, rozmyta nazwa/adresy.
4) Stosy: ML + reguły
5) Wskaźniki jakości (z przezroczystymi podstawami)
AR_clean = „Auth _ Approved/( Auth_Attempted − Fraud_preblocked − Abandon_3DS)”
Wskaźnik oszustw = "Oszustwo _ przechwycone _ kwota/ Captured_amount'
Stawka obciążenia zwrotnego = 'Obciążenie zwrotne _ count/ Captured_Tx' (lub według kwoty)
False Positive Rate (FP) = 'Legit _ declined/ Legit_attempted'
Szybkość przyspieszenia = 'StepUp _ tx/ Auth_Attempted', Abandon_on_StepUp
Automatyczne zatwierdzanie%, ręczna ocena%, Przegląd SLA/TtA
Wzrost zysku netto po dostrajaniu (różnica AB EL + CoF vs kontrola).
Poziomy odniesienia: PR dla nowych użytkowników ≤ 1-2% (według wolumenu), oszustwo (według kwoty) - w korytarzu docelowym licencji/systemów.
6) Progi i zasady polityki
6. 1 Kalibracja progowa
Budujemy krzywą kosztową: dla każdej z nich rozważamy 'EL (na) + CoF (na)'.
Wybierz 'na' z minimum. W przypadku biletów wysokich - osobny '_ hi'.
6. 2 Reguły typowe (pseudokoda)
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 Limity dynamiczne
Limit kwoty i liczby transakcji według poziomu ryzyka (poziom ryzyka): „R1/R2/R3”.
Limity adaptacyjne dla nowych kont, ocieplenie z dobrą historią.
7) Cykl życia zasady (zarządzanie)
Rejestr DSL/reguły z wersjami, właścicielem i opisem efektu.
Tryb cienia → kanaryjski (5-10%) → pełny wałek.
RACI: właściciel (ryzyko płatności), zatwierdzający (zgodność/prawo), konsultowany (wsparcie/skarb państwa), informowany (operacje).
Dziennik audytu: kto/kiedy zmienił który metrykę/AB, rollback.
Okres ważności i aktualizacja wyceny (na przykład 30/60 dni).
8) Dane modelowe i szkolenia
Dzieli się w czasie, bez wycieku (funkcje tylko z poprzedniego okna).
Etykieta docelowa: potwierdzone oszustwo/obciążenie zwrotne; indywidualne etykiety nadużyć bonusowych.
Ponowne obciążenie klas według kwoty (strata ważona kwotą).
Monitorowanie dryfu: PSI dla kluczowych funkcji, KS dla prędkości, stabilność wyjściowa.
Wyzwalacze przekwalifikowania: PSI> 0. 25, spadek KS, ruch/zmiana jurysdykcji.
9) Wyjaśnienie i wsparcie
Dla każdego rozwiązania, generujemy reason_codes (do 5 powodów) z ludzkich słów czytelnych.
Krok-up/awaria wsparcie makr (3DS, KYC, obrót).
Spory: informacje zwrotne trafiają do rurociągu etykietowania (zamknij pętlę).
10) Zgodność i prywatność
RODO/DSAR: prawo do wyjaśnienia decyzji; minimalizacja PII; identyfikatory hashing (solone) (email/phone/PAN token).
PCI-DSS: strumienie PAN-safe, tokenizacja.
Sankcje/AML: Oddzielne badanie przesiewowe MLRO + pętla eskalacyjna.
Zachowanie: polityka w zakresie przechowywania sygnałów i uzasadniania decyzji.
11) Monitorowanie i wpisy (co godzinę/dziennie)
AR_clean, oszustwa (amt%), FP (ważone zatrzymaniem), Step-up/Abandon, Przegląd SLA, Wskaźnik obciążenia zwrotnego (opóźniony).
Przyczepność prędkości, wzrost hostingu TOR/Proxy/ASN, degradacja BIN, pochodne bonów.
Wpisy pod adresem: FP> corridor, Fraud> target, Abandon> base + X pp, PSI/KS drift.
12) plasterki SQL (przykład)
12. 1 Metryka wyjściowa
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 Udział awarii przyspieszenia i awarii prędkości
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) Tuning playbooks
Wzrost oszustw (amt%) ze stabilnym FP → podnieść „na”, zwiększyć prędkość przez urządzenia/ASN, włączyć 3DS-challenge na wrażliwych BIN.
Wysoki FP w nowych → złagodzić '"dla niskiego biletu, przenieść część do kroku A zamiast odchylenia.
Zrezygnuj z 3DS → uzgodnić z PSP parametry 3DS2, poprawić UX, wąski krok w mobilnym dla niskiego ryzyka.
Konsorcjalne sieci bonusowe → funkcje wykresu, ograniczenie „równoległych” płatności, zasady obracania.
Anomalie voucher → prędkość przez PIN/detalista/geo, urządzenie wiążące, przytrzymaj przed weryfikacją.
14) Wdrożenie: lista kontrolna
- Kalibracja progowa ekonomiczna („EL + CoF”), indywidualna „na segment”.
- Rejestr reguł (DSL), cień → kanaryjski → rollout, audyt, i rollback.
- Kody uzasadnienia i szablony komunikacyjne.
- Monitorowanie PSI/KS, dryfowanie pasujące/szybkie, regularne przekwalifikowanie.
- Kanał zwrotny (spór → leybly).
- KYC/step-up, przegląd SLA i polityka TtA/TtR.
- Prywatność: hashing ID, minimalizacja PII.
15) Podsumowanie
Anty-fraud tuning to system optymalizacji zysków z kontrolowanym tarciem: ML punktacja + przemyślana drabina step-up, ścisłe zasady prawne i schludne ograniczenia prędkości. Ekonomiczna kalibracja progu, czyste etykiety, wyświetlacze kanaryjskie i ścisła kontrola dają niskie oszustwa pod względem ilości, niski FP w nowych, wysokie AR_net - bez niespodzianek dla zgodności i UX.