Çok para birimli kitaplar ve kurslar
1) "Çok para birimli kitaplar'nedir?
Ledger - aynı anda birkaç para biriminde tutulan çift girişli bir işlem defteri (iki yönlü gönderiler):- Cüzdan-kitap: oyuncunun hesabı (oyun para birimi/para birimleri).
- Settlement-book: PSP/acquirer (settlement para birimi) ile yapılan anlaşmalar.
- Hazine defteri: banka hesapları, dönüşümler, hedge anlaşmaları.
- Raporlama defteri: Ürün metriklerinin geriye dönük yeniden değerlemesi olmadan raporlama para biriminde (örneğin EUR) özet.
Her kitap, işlem para birimini, sunum para birimini ve tanıma sırasındaki oranı kaydeder.
2) Para birimleri ve politikaların hiyerarşisi
1. Baz/Raporlama Para Birimi - tek raporlama para birimi (örneğin, EUR).
2. Cüzdan Para Birimleri - cüzdan para birimleri (USD/EUR/TRY/UAH, vb.).
3. Yerleşim Para Birimleri - PSP'nin gönderdiği (örneğin, USD).
4. Banka Para Birimleri - Tüccar/Hazine hesabı para birimi.
- Ürün metrikleri (ND/NGR/ARPPU) - olayın tarihsel hızında (genellikle 'yerleşmiş _ at').
- Finans/hazine - ayrıca kursu 'funded _ at've' payout _ at 'üzerine sabitleyin.
- Gıda gösterilerinde "gizli" yeniden değerleme yasaktır.
3) Kurslar ve kaynakları
Gün içi referans (onay/dakika): Refinitiv/ECB/bankalar - olayları normalleştirmek için.
EOD (gün sonu): gerçekleşmemiş FX için.
Etkili FX: PSP/banka dosyasından (gerçek dönüşüm).
Nirengi: Doğrudan bir teklifin yokluğunda bir çapa (EUR veya USD) aracılığıyla.
Teklif politikası: 'Mid' либо 'bid/ask' - 'mid ± spread_bps'. Spread ayrı olarak depolanır.
Mağaza: 'fx _ source', 'fx _ pair', 'fx _ rate', 'fx _ timestamp', 'quote _ type', 'spread _ bps've nirengi yolu.
4) Tanıma noktaları ve kurs katmanları
'authorize _ at' - kursu düzeltmiyoruz (yakalama olmadan tanıma yoktur).
'yakalanmış/yerleşmiş _ at' - ürün katmanı ve ND için tarihsel kurs.
'funded _ at' - banka başına döviz kuru (FI/hazine için gerçekleşen FX).
'poout _ at' - oyuncuya ödendiğinde oran.
'eod' gerçekleşmemiş FX için gün sonu oranıdır.
5) Hassas, yuvarlama, minimum birimler
Para - para birimi dizininde tüm küçük birimler (int) + 'ölçek'.
Kurslar - en az 8-10 ondalık basamak.
Yuvarlama: raporlama için banka (yarım çift); UI'de - yerel kurallar.
Ayrı alanları koruyun: 'Tutar _ orijinal', 'tutar _ cüzdan', 'tutar _ raporlama', 'tutar _ etkili'.
6) Çift giriş ve GL kartı (basitleştirilmiş)
İlanlara örnekler:6. 1. DEPOSIT_CAPTURED (GBP, raporlama - EUR)
JT: AR: PSP (GBP)
Ct: Oyuncu Bakiyesi (GBP/EUR cüzdanla)
Buna paralel olarak, fix 'fx _ rate _ settle (GBP - EUR)'ve' amount _ reporting '.
6. 2. FUNDING_RECEIVED (banka başına USD)
Dt: Banka USD
Ct: AR: PSP GBP (eşdeğer yakın; Fark - Realized FX).
6. 3. WITHDRAWAL_PAID (TRY)
Дт: Sorumluluk: Oyuncu (TRY)
Ct: Banka TRY (veya Banka EUR + dönüşüm; Fark - gerçekleşen FX).
7) Veri mimarisi (minimal model)
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) Normalizasyon akışı (ETL/ELT)
1. Hammadde alımı PSP durum normalizasyonu.
2. Tarihsel oranın 'fx _ rates _ intraday'den' settled _ at'a atanması.
3. İstediğiniz deftere çift işlem yazın (cüzdan/yerleşim).
4. Ayrı ithalat finansmanı ve efektif FX.
5. 'Fx _ rates _ eod' (hazine-kitap) tarafından bakiyelerin günlük reval.
6. Vitrin yapımı (ND/NGR/LTV) retro yeniden değerlendirme olmadan.
9) Uzlaşma ve tutarlılık
Tx - Dosya: Yakalanan/yerleşenlerin tümü PSP dosyasındaydı (miktarlara/para birimlerine/tarihlere göre).
File Tx: Dosyadaki her şey kitaplara/işlemlere yansıtılır.
FX Reference vs Effective: 'sliplage _ bps' sayısını sayın; eşiğin ötesine geçmek için tetikte olun.
Nirengi kontrolü: Bir bps-tolerans içinde 'A' B 'B' C '≈' A 'C'.
Idempotency: 'event _ id've' idempotency _ key '- kopyalara karşı koruma.
10) Sık senaryolar ve bunların nasıl yürütüleceği
Çoklu cüzdan: Oyuncunun cüzdanı depozitodan farklı bir para biriminde olabilir - oranınıza göre dahili bir dönüşüm yapın ('conversion _ owner =' MERCHANT 'politikası).
PSP dönüşümü: PSP marj analizi için 'fx _ effective', 'fx _ reference've' spread _ bps 'depolar.
Kripto: VWAP pencere puanı; Ahırlarda finansman FX'in ikinci katmanıdır.
Çapraz cüzdan transferi: platform içindeki hareket - FX geliri olmadan, sadece kitaplar arasında transfer.
11) SQL şablonları
11. 1. Miktarın raporlama para birimine tarihsel oranda normalleştirilmesi
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 yayılma ölçümü (referansa karşı etkili)
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. gerçekleşmemiş 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 ve gösterge panoları
PSP/Method/MID ile FX Kayma (bps).
Gerçekleştirilmiş FX P&L (fonlama/ödeme) и Gerçekleştirilmemiş FX (EOD/EOM).
Para birimi ve politika limitlerine göre Açık FX Pozisyonu.
Hit-rate "zamanında" kursları (bayat oranları olayları).
PSP-dönüşüm vs Merchant-dönüşüm ve onun TCO payı.
Yuvarlama doğruluğu (miktarların sapması ≥ 1 küçük birim - bayrak).
13) Uyarılar ve eşikler
Bayatlama oranı: olay anında hiçbir oran - geri dönüş kaynağı/geri ödeme.
Üçgenleme uyuşmazlığı: ıraksama> X bps.
Spike spike: 'Spread _ bps' majör/majörlerde eşiğin üzerinde.
Açık pozisyon ihlali: Herhangi bir para birimi için limiti aşmak.
Reval şok: günlük yeniden değerleme <− X σ veya> + X σ - inceleme.
14) En iyi uygulamalar (kısa)
1. Ürün katmanını (tarihsel FX) ve FI/hazineyi (finansman/ödeme/devir) kesinlikle ayırın.
2. Küçük üniteler kullanın ve kursları yüksek doğrulukla saklayın.
3. conversion_owner kaydedin ve PSP marjını ölçün (etkili ve referans).
4. Olay idempotensi ve iki yönlü mutabakat (Tx, Dosya ve Dosya, Tx) uygulayın.
5. Nirengi için çapa para birimini tutun ve bps'deki tutarsızlıkları doğrulayın.
6. Ayrı bir GL ile bir EOD prosedürü ile dengeleri yeniden değerlendirin.
7. Yerleşmek/finanse etmek için kurslar atarken DST/zaman dilimlerini düşünün.
8. Ölçek sınırları üzerinde özellik tabanlı testleri düzenli olarak test edin.
15) Uygulama kontrol listesi
- Raporlama para birimi ve tarihsel FX politikası tanımlanmıştır.
- Ders kaynakları: gün içi + EOD, fallback ve SLA güncellemeleri.
- Models 'ledger. Girişler ',' fx _ rates _ ',' funding _ receipts ',' balances ', витрина' transactions _ flat '.
- Üçgenleme mekanizması ve rota günlüğü.
- Алерты: bayat oranlar, spread spike, nirengi uyumsuzluğu, açık pozisyon ihlali.
- KPI panoları ve PSP/banka mutabakat raporları.
- gerçekleşen/gerçekleşmeyen FX için reval prosedürler ve ayrı GL'ler.
- Yuvarlama ve depolama doğruluğu test setleri.
Özet
Çok para birimli kitaplar katman ayrımı disiplinidir: Bir ürün için tarihsel FX, bir trejerie için gerçek, bilançolarda EOD yeniden değerleme. Şeffaf oran kaynakları, doğru bir veri modeli, çift giriş ve otomatik mutabakat ile, analitikten "para birimi gürültüsünü" ortadan kaldıracak, denetim sağlayacak ve küresel para kazanma konusunda yönetilen FX riski elde edeceksiniz.