Мультивалюталық кітаптар мен курстар
1) «Мультивалюталық кітаптар» дегеніміз не?
Кітап (ledger) - бір мезгілде бірнеше валютада жүргізілетін қосарланған жазбасы бар транзакциялық леджер (екі жақты өткізу):- Wallet кітабы: ойыншының шоты (ойын валютасы/валютасы).
- Settlement кітабы: PSP/эквайрермен есеп айырысу (сеттлмент валютасы).
- Treasury-кітабы: банк шоттары, айырбастау, хедж-мәмілелер.
- Есеп беру кітабы: есепті валютадағы жиынтық (мысалы, EUR) азық-түлік өлшемдерін ретроспективті қайта бағалаусыз.
Әрбір кітап операция валютасын, ұсыну валютасын және тану сәтіндегі бағамды белгілейді.
2) Валюталар иерархиясы және саясаткерлер
1. Base/Reporting Currency - бірыңғай есептік валюта (мысалы, EUR).
2. Wallet Currencies - әмияндардың валюталары (USD/EUR/TRY/UAH және т.б.).
3. Settlement Currencies - PSP не жібереді (мысалы, USD).
4. Bank Currencies - мерчант/қазынашылық шотының валютасы.
- Азық-түлік өлшемдері (ND/NGR/ARPPU) - оқиғаның тарихи бағамы бойынша (әдетте 'settled _ at').
- Қаржы/бухгалтерлер - бағамды 'funded _ at' және 'payout _ at' деп қосымша белгілейді.
- Азық-түлік витриналарында «жасырын» қайта бағалауға тыйым салынады.
3) Курстар және олардың көздері
Intraday reference (tick/minute): Refinitiv/ECB/банктер - оқиғаларды қалыпқа келтіру үшін.
EOD (күннің соңы): қалдықтарды қайта бағалау үшін (unrealized FX).
Effective FX: PSP/банк файлынан (айырбастау фактісі).
Triangulation: зәкір арқылы (EUR немесе USD) тікелей баға белгілеу болмаған кезде.
Quote policy: `mid` либо `bid/ask` → `mid ± spread_bps`. Спред жеке сақталады.
'fx _ source', 'fx _ pair', 'fx _ rate', 'fx _ timestamp', 'quote _ type', 'spread _ bps' және triangulation бағытын сақтаңыз.
4) Тану нүктелері және курстардың қабаттары
'authorize _ at' - бағамды бекітпейміз (басып алусыз тану жоқ).
'captured/settled _ at' - азық-түлік қабаты мен ND үшін тарихи курс.
'funded _ at' - банкке түсу бағамы (FI/treasury үшін realized FX).
'payout _ at' - ойыншыға төлеу кезіндегі бағам.
'eod' - қалдықтарды қайта бағалау үшін күннің соңғы бағамы (unrealized FX).
5) Дәлдік, дөңгелектеу, ең аз бірліктер
Ақша - валюта анықтамалығында тұтас minor units (int) + 'scale'.
Курстар - үтірден кейін кемінде 8-10 таңба.
Дөңгелектеу: есептілік үшін банктік (half-even); UI - жергілікті ережелер.
'amount _ original', 'amount _ wallet', 'amount _ reporting', 'amount _ effective' деген бөлек өрістерді жүргізу.
6) Қос жазба және GL-карта (оңайлатылған)
Сымдар мысалдары:6. 1. DEPOSIT_CAPTURED (GBP, есептік - EUR)
Дт: AR: PSP (GBP)
Кт: Player Balance (әмиян бойынша GBP/EUR)
Сонымен қатар 'fx _ rate _ settle (GBP → EUR)' және 'amount _ reporting' тіркейді.
6. 2. FUNDING_RECEIVED (банкке USD)
Дт: Bank USD
Кт: AR: PSP GBP (баламасы бойынша жабамыз; айырмасы → Realized FX).
6. 3. WITHDRAWAL_PAID (TRY)
Дт: Liability: Player (TRY)
Кт: Bank TRY (немесе Bank EUR + айырбастау; айырма - realized FX).
7) Деректер архитектурасы (ең аз модель)
ref. currencies (
code PK, scale, symbol, is_crypto, is_active
)
ref. fx_rates_intraday (
pair PK, ts PK, rate, quote_type, source, spread_bps, triangulation_meta
)
ref. fx_rates_eod (
pair PK, date PK, rate, source
)
ledger. entries (
entry_id PK, book, -- WALLET SETTLEMENT TREASURY REPORTING debit_account, credit_account,
amount_original, currency_original,
amount_reporting, reporting_currency,
fx_rate_at_settle, fx_source, fx_pair, fx_timestamp,
event_type, event_id, user_id, provider, method,
occurred_at, created_at, meta
)
treasury. funding_receipts (
funding_id PK, provider, bank_account,
currency, amount, fx_to_reporting, amount_reporting,
received_at, value_date, meta
)
treasury. balances (
date PK, account PK, currency PK, amount
)
dw. transactions_flat (
tx_id PK, user_id, provider, method, type, status,
amount_original, currency_original,
amount_reporting, reporting_currency, fx_rate_at_settle,
settled_at, funded_at, conversion_owner, meta
)
8) Қалыпқа келтіру ағыны (ETL/ELT)
1. Шикізат ингесті → PSP мәртебесін қалыпқа келтіру.
2. 'fx _ rates _ intraday' -ден 'settled _ at' -ке тарихи курсты тағайындау.
3. Қос сымды қажетті кітапқа жазу (wallet/settlement).
4. Жеке импорт funding және effective FX.
5. 'fx _ rates _ eod' (treasury-кітап) бойынша күнделікті reval қалдықтары.
6. Витриналарды ретро-қайта бағалаусыз құру (ND/NGR/LTV).
9) Салыстыру және консистенттілік
Tx → File: барлық captured/settled PSP файлына түсті (сома/валюта/күн бойынша).
File → Tx: файлдағы барлық нәрсе кітаптарда/сымдарда көрсетілген.
FX Reference vs Effective: 'slippage _ bps' санау; табалдырықтан шығуға алерт.
triangulation тексеру: 'A → B → C' ≈ 'A → C' bps-толеранс шегінде.
Сәйкестік: 'event _ id' және 'idempotency _ key' - қосарланудан қорғау.
10) Жиі сценарийлер және оларды қалай жүргізу керек
Multi-wallet: ойыншының әмияны депозиттен басқа валютада болуы мүмкін - бағамыңыз бойынша ішкі айырбастауды жасаңыз ('conversion _ owner =' MERCHANT 'саясаты).
PSP-conversion: PSP маржасын талдау үшін 'fx _ effective', 'fx _ reference' және 'spread _ bps' сақтаңыз.
Крипто: VWAP-терезе бойынша бағалау; стейблдердегі funding - FX екінші қабаты.
Cross-wallet transfer: платформа ішіндегі қозғалыс - FX кірісі жоқ, жай ғана кітаптар арасында тасымалдау.
11) SQL үлгілері
11. 1. Тарихи бағам бойынша есепті валютадағы соманы қалыпқа келтіру
sql
SELECT t. tx_id,
t. amount_original,
t. currency_original,
r. rate AS fx_rate_at_settle,
ROUND(t. amount_original r. rate, rep. scale) AS amount_reporting
FROM raw. transactions t
JOIN ref. fx_rates_intraday r
ON r. pair = CONCAT(t. currency_original, '/',:reporting_ccy)
AND r. ts = (
SELECT MAX(ts) FROM ref. fx_rates_intraday
WHERE pair = r. pair AND ts <= t. settled_at
)
JOIN ref. currencies rep ON rep. code =:reporting_ccy
WHERE t. settled_at BETWEEN:from AND:to;
11. 2. PSP (effective vs reference) спредін өлшеу
sql
SELECT provider, method, DATE(settled_at) AS d,
SUM(original_amount fx_reference_rate) AS ref_in_reporting,
SUM(settlement_amount_in_reporting) AS eff_in_reporting,
10000 (SUM(settlement_amount_in_reporting) /
NULLIF(SUM(original_amount fx_reference_rate),0) - 1) AS spread_bps
FROM dw. fx_settlement_view
WHERE settled_at BETWEEN:from AND:to
GROUP BY 1,2,3;
11. 3. EOD-қалдықтарды қайта бағалау (unrealized FX)
sql
INSERT INTO treasury. fx_reval_ledger (date, currency, position_amount, rate_eod, amount_reporting_eod, reval_diff, type)
SELECT
:eod AS date, b. currency, b. amount,
e. rate AS rate_eod,
b. amount e. rate AS amount_reporting_eod,
b. amount (e. rate - COALESCE(l. rate_eod, e. rate)) AS reval_diff,
'UNREALIZED'
FROM treasury. balances b
JOIN ref. fx_rates_eod e
ON e. pair = CONCAT(b. currency, '/',:reporting_ccy) AND e. date =:eod
LEFT JOIN LATERAL (
SELECT rate_eod FROM treasury. fx_reval_ledger
WHERE currency=b. currency AND date=:eod - INTERVAL '1 day'
ORDER BY date DESC LIMIT 1
) l ON TRUE;
12) KPI және дашбордтар
FX Slippage (bps) PSP/әдісі/MID бойынша.
Realized FX P&L (funding/payout) и Unrealized FX (EOD/EOM).
Валюталар бойынша Open FX Position vs саясат лимиттері.
Hit-rate «уақытында алынған» курстар (stale-rates инциденттер).
PSP-conversion vs Merchant-conversion және оның TCO үлесі.
Дөңгелектеу дәлдігі (сомалардың ауытқуы ≥ 1 minor unit - жалау).
13) Алерттар мен табалдырықтар
Stale rate: оқиға кезінде курс жоқ → fallback-дереккөз/ретрай.
Triangulation mismatch: сәйкессіздік> X bps.
Spread spike: 'spread _ bps' мажорлар/мейнерлер шегінен жоғары.
Open position breach: кез келген валюта бойынша шектен асып кету.
Reval shock: күндізгі қайта бағалау <− X σ немесе> + X σ - ревю.
14) Best practices (қысқаша)
1. Азық-түлік қабатын (тарихи FX) және FI/treasury (funding/payout/reval) қатаң бөліңіз.
2. minor units пайдаланыңыз және курстарды жоғары дәлдікпен сақтаңыз.
3. conversion_owner логин жасап, PSP (effective vs reference) маржасын өлшеңіз.
4. Оқиғаның үйлесімділігін және екі жақты салыстыруды жүзеге асырыңыз (Tx → File және File → Tx).
5. triangulation үшін anchor-валютасын сақтаңыз және айырмашылықтарды bps-де валидациялаңыз.
6. Қалдықтарды жеке GL-мен EOD-процедурамен қайта бағалаңыз.
7. settle/funding курстарын тағайындау кезінде DST/таймзондтарды ескеріңіз.
8. Дөңгелектеуді үнемі тестілеңіз (property-based tests scale шегінде).
15) Енгізу чек-парағы
- Reporting currency және тарихи FX саясаты анықталған.
- Курстардың көздері: intraday + EOD, fallback және SLA жаңартулары.
- Модельдер 'ledger. entries`, `fx_rates_`, `funding_receipts`, `balances`, витрина `transactions_flat`.
- triangulation механизмі және бағыт.
- Алерты: stale-rates, spread spike, triangulation mismatch, open position breach.
- KPI дашбордтары және PSP/банкпен салыстыру актілері.
- realized/unrealized FX үшін reval және бөлек GL рәсімдері.
- Дөңгелектеу және сақтау дәлдігінің тест-жинақтары.
Түйіндеме
Мультивалюталық кітаптар - бұл қабаттарды бөлу пәні: өнім үшін тарихи FX, трежери үшін нақты, баланс үшін EOD-қайта бағалау. Ашық бағам көздері, нақты деректер моделі, қосарлы жазба және автоматтандырылған салыстыру арқылы сіз «валюталық шуды» талдаудан алып тастап, аудитті қамтамасыз етіп, жаһандық монетизация кезінде басқарылатын FX тәуекелін аласыз.