FX: konvertatsiya va kurs xavflari
1) Nima uchun iGaming’da FXni boshqarish kerak
Aniq P & L-hisobot: FX-foyda/zarar yuzaga keladigan joyda (depozitlar, xulosalar, PSP settlment, zaxiralar).
Adolatli ND/GRR/NGR: «orqaga qarab qayta baholanmagan» yagona reporting currency.
Likvidlik va kesh-flou: A valyutasida funding, B valyutasida to’lovlar - prognoz va xedj kerak.
Komplayens/soliqlar: kurslarning shaffof kelib chiqishi va izlar auditi.
2) FX tug’iladigan asosiy nuqtalar
1. O’yin hamyoni vs depozit valyutasi: hamyon/reporting valyutasida normallashtirish.
2. Capture/settle PSP: ND uchun «tarixiy» kurs belgilanadi.
3. Funding (bankka o’tkazish): boshqa kurs/valyuta va ikkilamchi FX-effekt bo’lishi mumkin.
4. Withdrawals: o’yinchiga to’lashda konvertatsiya.
5. Rolling-rezerv va jarimalar sxemalari: hisobdan chiqarish/relizlar boshqa valyutada bo’lishi mumkin.
6. Kripto: settle/funding vaqtida VWAP/median bo’yicha baholash.
3) Kurslar manbalari va normallashtirish qoidalari
FX source: asosan provayder-referensiyalar (masalan, CME/Refinitiv/ECB), zaxira - bank/PSP.
Quote policy: `mid`, `bid/ask` или `mid ± spread_bps`. Hisobga olish uchun mid + aniq’spread _ bps’qoʻllaniladi.
Timestamp: tan olish davri kursi (odatda ND uchun’settled _ at’; bank-hisob uchun ixtiyoriy’funded _ at’).
No restatement: kurslar o’zgarganda o’tgan NDlar ortiqcha baholanmaydi; reval unrealized FX sifatida alohida amalga oshiriladi.
Aniqlik: 8-10 belgini FX-kursda, pul summasini minor units (integers) + scale-da saqlash.
4) Formulalar va misollar
4. 1. Asosiy konvertatsiya
’amount _ original’ v’ccy _ orig’, hisobot valyutasi’ccy _ rep’, kurs’fx (ccy_orig→ccy_rep)’bo’lsin:
amount_reporting = round(amount_original fx, scale_ccy_rep)
4. 2. Kross-kurs (valyuta-langar orqali, masalan, EUR)
fx(GBP→UAH) = fx(GBP→EUR) fx(EUR→UAH)
Audit uchun triangulation kurslari yo’nalishini’meta’da saqlash muhimdir.
4. 3. Spread va PSP komissiyasini ajratish
Agar PSP o’zi konvertatsiya qilgan bo’lsa:
fx_effective = settlement_amount_in_rep / original_amount spread_bps = (fx_effective / fx_reference - 1) 10_000 fee_fx = settlement_fee_in_rep (если отдельно)
Effective FX va reference FX ni PSP implicit marjasini oʻlchash uchun saqlang.
4. 4. Misol (ikki marta konvertatsiyalangan zanjir)
O’yinchi 100 GBP depozitga qo’yadi. Reporting — EUR.
На `settled_at`: `GBP→EUR = 1. 1700` → `ND_dep = 117. 00 EUR`.
PSP ertaga bankni USD bilan moliyalashtiradi:’GBP → USD = 1. 3000’, bank hisob raqamini USDda saqlaydi.
FI-hisob uchun’USD → EUR’ga’funded _ at’ikkilamchi kursini (masalan, 0. 9200), agar pul pozitsiyasi ortiqcha baholangan bo’lsa, settle va funding o’rtasidagi realized FXni ko’rish uchun.
5) DCC, PSP konvertatsiyasi va «kursni kim hal qiladi»
DCC (Dynamic Currency Conversion) savdo/PSP tomonida: kurs oʻyinchiga oldindan koʻrsatiladi, lekin marja yuqoriroq.
PSP-conversion: PSP o’yinchi valyutasini qabul qiladi, o’z kursi bo’yicha savdogar valyutasiga konvertatsiya qiladi. Spredning shaffofligi juda muhim.
Merchant-conversion: merchant multi-valyutada (multi-MID/multischetlar) qabul qiladi, konvertatsiyani bank/trejeri eng yaxshi kurs bo’yicha bajaradi (odatda foydaliroq, ammo operatsion jihatdan murakkabroq).
Tavsiya: conversion_owner (’DCC’,’PSP’,’MERCHANT’) va TCO (spred + fee) ni solishtiring.
6) Kripto: baholash va o’zgaruvchanlik
’settled _ at’ atrofida qisqa oyna uchun (masalan, 5 daqiqa ±), manba (birja/provayder) ko’rsatilgan holda VWAP bo’yicha baholash.
’price _ usd’,’price _ eur’,’source’,’window’,’pair’(masalan,’USDT/USDC/BTC’).
Steybl/fiatda funding uchun - ikkinchi qatlam FX.
O’ziga xos xususiyati: ziravorlar, delistinglar, on-chain fees -’meta’va alertlarda hisobga oling.
7) Hisobotda FX hisobi: realized vs unrealized
Realized FX - pul oqimi bilan «yopilgan» farq (tan olish kursi va haqiqiy almashtirish/tushum kursi o’rtasidagi).
Unrealized FX - kun/oy oxiridagi multivalyuta hisobvaraqlaridagi qoldiqlarni qayta baholash.
«FX _ realized», «FX _ unrealized» kabi turli GL hisobvaraqlariga tarqating.
ND/oziq-ovqat tahlillari uchun voqeaning tarixiy kursidan foydalaning (ortiqcha baholamang).
8) FX-ekspozitsiya turlari va ularni qanday yopish kerak
Transaction exposure: kirish/chiqish valyutalarining nomuvofiqligi (EUR depoziti → TRY hisobi).
Chora-tadbirlar: natural hedge (to’lovlarning valyutaliligini tanlash), qoidalar bo’yicha tezkor konvert.
Translation exposure: turli valyutalardagi multischetlar va zaxiralar → EoD/EoM reval.
Economic exposure: marjaning kursga uzoq muddatli bog’liqligi (GEO-mikslar, o’yin yetkazib beruvchilar).
Choralar: forwards/NDF, options (collars), GEO va yetkazib beruvchilarni muvozanatlash.
9) Trejeri-jarayonlar va siyosat
FX policy: har bir valyuta bo’yicha ochiq pozitsiyaga limitlar (masalan, haftalik aylanmaning 20 foizidan ko’p bo’lmagan).
Execution rules: bitimning minimal hajmi, praga spredlari, kontragentlar ro’yxati.
Forecasting: valyutalar bo’yicha netto-ehtiyojning 7/30/90 kunlik prognozi (depozitlar − xulosalar − soliqlar − yong’oq).
Hedge accounting (zarurat bo’lganda): munosabatlarni hujjatlashtirish «xedj-pozitsiya tavakkalchilik».
Bayram taqvimi: funding/rolling zaxirasiga va FX «yopilishiga» ta’sir qiladi.
10) Ma’lumotlar va model (soddalashtirilgan holda)
payments. transactions (
id, user_id, provider, method, type, status,
amount_original, currency_original, -- event amount and currency amount_wallet, wallet_currency, -- domestic gaming currency (if different)
reporting_currency, amount_reporting, - the sum in reporting currency of fx_source, fx_pair, fx_timestamp, fx_rate, - a course at the time of the event (usually settled_at)
fx_quote_type, fx_spread_bps, fx_reference_rate -- measurement of spread/quotation type settled_at, funded_at, conversion_owner, meta
)
treasury. funding_receipts (
funding_id, provider, bank_account, currency, amount,
received_at, value_date, fx_to_reporting, amount_reporting, meta
)
treasury. fx_reval_ledger (
id, date, currency, position_amount, rate_eod, amount_reporting_eod,
prev_rate_eod, reval_diff, type -- UNREALIZED/REALIZED
)
11) Sifatni solishtirish va nazorat qilish
11. 1. «Bizning» kurslarimizni PSP/bank bilan kelishish
’fx _ effective’ (settlementdan) ni’fx _ reference’(maʼlumotnomangizdan) bilan solishtiring.
Alert, agar’| spread _ bps |> threshold’(masalan,> 80 bps majorlar uchun).
11. 2. Kurslar manbai sifati
Stale-rates: agar’now - fx_timestamp> X daqiqa’hodisa kelganda - alert va avariya manbai.
Triangulation:’fx (A → B) fx (B → C)’vs’fx (A → C)’- alert.
12) SQL namunalari
12. 1. Hisobot valyutasidagi tranzaksiyalarni normallashtirish
sql
INSERT INTO dw. transactions_flat (...)
SELECT t. id, t. user_id, t. provider, t. method, t. type, t. status,
t. amount_original, t. currency_original,
t. reporting_currency,
ROUND(t. amount_original r. fx_rate, c. scale) AS amount_reporting,
r. source AS fx_source, r. pair AS fx_pair, r. fx_rate,
r. quote_type AS fx_quote_type, r. spread_bps,
t. settled_at, t. funded_at, t. conversion_owner, t. meta
FROM raw. transactions t
JOIN ref. fx_rates r
ON r. pair = CONCAT(t. currency_original, '/', t. reporting_currency)
AND r. ts = (SELECT MAX(ts) FROM ref. fx_rates
WHERE pair=r. pair AND ts <= t. settled_at)
JOIN ref. currencies c ON c. code = t. reporting_currency
WHERE t. settled_at BETWEEN:from AND:to;
12. 2. PSP FX effektining parchalanishi (effective vs reference)
sql
SELECT provider, method, DATE(settled_at) AS d,
SUM(amount_reporting) AS amount_rep_ref,
SUM(settlement_amount_in_rep) AS amount_rep_eff,
(SUM(settlement_amount_in_rep) - SUM(amount_reporting)) AS fx_slippage,
10000 (SUM(settlement_amount_in_rep) / NULLIF(SUM(original_amountfx_reference_rate),0) - 1) AS spread_bps
FROM dw. fx_settlement_view
WHERE settled_at BETWEEN:from AND:to
GROUP BY 1,2,3
ORDER BY d;
12. 3. Multivalyuta qoldiqlarini har kuni qayta baholash (unrealized FX)
sql
INSERT INTO treasury. fx_reval_ledger (date, currency, position_amount, rate_eod, amount_reporting_eod, prev_rate_eod, reval_diff, type)
SELECT
:eod_date AS date,
bal. currency,
bal. amount AS position_amount,
r_eod. fx_rate AS rate_eod,
bal. amount r_eod. fx_rate AS amount_reporting_eod,
COALESCE(l. prev_rate_eod, r_eod. fx_rate) AS prev_rate_eod,
bal. amount (r_eod. fx_rate - COALESCE(l. prev_rate_eod, r_eod. fx_rate)) AS reval_diff,
'UNREALIZED'::text
FROM treasury. balances bal
JOIN ref. fx_rates_eod r_eod
ON r_eod. pair = CONCAT(bal. currency, '/',:rep_ccy) AND r_eod. date =:eod_date
LEFT JOIN LATERAL (
SELECT rate_eod AS prev_rate_eod
FROM treasury. fx_reval_ledger
WHERE currency = bal. currency AND date =:eod_date - INTERVAL '1 day'
ORDER BY date DESC LIMIT 1
) l ON TRUE;
13) KPI va dashbordlar
FX Slippage (bps): PSP/MID usuli boʻyicha effective vs reference farqi.
Realized FX P&L (kun/hafta/oy) va Unrealized FX (EoD/EoM).
Valyuta bo’yicha Open FX Position vs siyosat limitlari.
Hedge Ratio: qoplangan pozitsiya ulushi (forwards/NDF/options).
Stale-rate Incidents и Triangulation Mismatch.
Spread% of Volume (processed volume nisbatan FX qancha turadi).
14) Alerta va ostonalar
Stale rates: joriy kurs yoʻq> Trafikning eng yuqori choʻqqisida N daqiqa - P1.
Spread spike:’spread _ bps’major/minor chegarasidan yuqori - P2.
Open position breach: har qanday valyuta bo’yicha limitning oshishi - P1.
FX P&L shock: kunduzgi realized FX past − X σ tarixiy - tekshirish.
Crypto price gap: VWAP oynasidan sakrash> Y% - konvertni oʻzgartirish/tanaffus.
15) Best practices (qisqacha)
1. ND va oziq-ovqat metriklarini settled-kurs bo’yicha tan oling, retrospektiv qayta baholashsiz.
2. FI/treyderlar uchun funded_at ikkinchi kursini saqlang - realized FX.
3. Har doim conversion_owner, fx_source, quote_type, spread_bps yozib oling.
4. Langar (EUR/USD) orqali triangulation qiling.
5. GL darajasida realized va unrealized.
6. Kriptoda - bitta tik emas, balki VWAP oynasidan foydalaning.
7. Stale rates va anormal PSP spredida alertlarni avtomatlashtiring.
8. Valyutalarga bo’lgan ehtiyojni prognoz qiling va natural hedge + forvard/NDF dan foydalaning.
16) Joriy etish chek-varaqasi
- Kurslar ma’lumotnomasi’ref. EOD va intraday bilan fx_rates', manbani saqlash va quote type.
- Витрины `transactions_flat`, `fx_settlement_view`, `funding_receipts`.
- Triangulation mexanikasi va kurslar yo’nalishi jurnali.
- FX ikki darajali hisobga olish (ND/mahsulot vs FI/trejeri).
- Multivalyuta qoldiqlarining kunlik revali.
- KPI dashbordlari (slippage, open position, FX P&L).
- FX siyosati: pozitsiyalar limitlari, kontragentlar white-list, alertlar chegaralari.
- Xedging protsedurasi (forwards/NDF/options) va hujjat aylanishi.
Xulosa
FX iGaming - bu nafaqat «kursni summaga ko’paytirish». Bu butun tizim: aniq tan olish nuqtalari, kurslarning shaffof manbalari, bo’lingan realized/unrealized hisobi, PSP tarqalishini nazorat qilish va boshqariladigan ochiq pozitsiya. Standart FX ma’lumotnomasini, «settle» ni normallashtirishni, reval-protseduralarni va tushunarli FX xedj-vositalar siyosatini joriy qilish orqali siz P&L o’zgaruvchanligini olib tashlaysiz va pul oqimlarini oldindan aytib bo’ladigan holga keltirasiz.