多種貨幣書籍和課程
1)什麼是「多元貨幣書籍」
書籍(ledger)是同時以多種貨幣運行的雙記錄(雙向布線)交易leder:- 錢包書:玩家帳戶(遊戲貨幣/貨幣)。
- Settlement Book:使用PSP/equairer(settlement貨幣)進行計算。
- 國債:銀行賬戶,轉換,對沖交易。
- Reporting Book:報告貨幣(例如EUR)庫存,無需回顧性重新評估產品指標。
每本書都記錄了認可時的交易貨幣,表示貨幣和匯率。
2)貨幣和政策等級
1.Base/Reporting Currency是單一報告貨幣(例如EUR)。
2.錢包貨幣-錢包貨幣(USD/EUR/TRY/UAH等)。
3.Settlement Currencies-PSP發送的內容(例如USD)。
4.Bank Currencies是商人/國庫帳戶的貨幣。
- 產品指標(ND/NGR/ARPPU)是根據事件的歷史過程(通常為「定位_at」)進行的。
- 財務/曲線-還記錄了「funded_at」和「payout_at」的課程。
- 禁止在雜貨店櫥窗進行「隱藏」重估。
3)課程及其來源
Intraday reference (tick/minute): Refinitiv/ECB/bank-用於事件正常化。
EOD(一天結束):用於重新評估余額(未實現的外匯)。
Effective FX:來自PSP/bank文件(轉換事實)。
Triangulation:在沒有直接報價的情況下通過錨點(EUR或USD)。
Quote policy: `mid` либо `bid/ask` → `mid ± spread_bps`.傳播是分開存儲的。
存儲:「fx_source」,「fx_pair」,「fx_rate」,「fx_timestamp」,「quote_type」,「spread_bps」和三角路線。
4)認可點和課程層
「authorize_at」-課程不固定(沒有捕獲沒有識別)。
「captured/settled_at」是食品層和ND的歷史課程。
「funded_at」是銀行的收益率(FI/treasury的FX實行)。
「payout_at」是支付給玩家的課程。
'eod'是重新評估殘差(未實現的FX)的一天結束課程。
5)精度,四舍五入,最小單位
金錢是貨幣目錄中的整個小單位(int)+「規模」。
課程-分號後至少8-10個符號。
四舍五入:銀行(半場報告);在UI中-本地規則。
保持不同的字段:'amount_original'、'amount_wallet'、'amount_reporting'、'amount_effective'。
6)雙重記錄和GL卡(簡化)
布線示例:6.1.DEPOSIT_CAPTURED(GBP,報告-EUR)
Dt: AR: PSP (GBP)
Ct: 玩家平衡(錢包GBP/EUR)
並行捕獲「fx_rate_settle (GBP→EUR)」和「amount_reporting」。
6.2.FUNDING_RECEIVED(每銀行美元)
Dt: Bank USD
Ct:AR:PSP GBP(等效關閉;差值→ Realized FX)。
6.3.WITHDRAWAL_PAID (TRY)
Дт: Liability: Player (TRY)
Ct:銀行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.Ingest原料→ PSP狀態正常化。
2.從「fx_rates_intraday」在「settled_at」上分配歷史課程。
3.將雙線寫入所需書籍(wallet/settlement)。
4.單獨導入funding和effective FX。
5.「fx_rates_eod」(寶藏)上的每日殘差。
6.無需復古重新評估即可構建店面(ND/NGR/LTV)。
9)核對與一致性
Tx→File:所有captured/settled都已進入PSP文件(按金額/貨幣/日期)。
File→Tx:文件中的所有內容都反映在書籍/布線中。
FX Reference vs Effective:計數「slippage_bps」;超出門檻的警報。
Triangulation檢查:bps-tolerance內的'A→B B→C' ≈ 'A→C'。
相似性:「event_id」和「idempotency_key」是雙倍保護。
10)頻繁的場景以及如何運行它們
多錢包:玩家的錢包可以是存款以外的貨幣-根據您的匯率進行內部轉換(政策「conversion_owner='MERCHANT」)。
PSP轉換:存儲「fx_effective」、「fx_reference」和「spread_bps」以分析PSP保證金。
加密:VWAP窗口得分;Stables中的funding是FX的第二層。
跨墻轉移:平臺內部的移動-沒有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利差測量(效果與參考)
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重估(未實現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和dashbords
PSP/方法/MID的FX Slippage(bps)。
Realized FX P&L (funding/payout) и Unrealized FX (EOD/EOM).
按貨幣計算的Open FX Position vs政策限制。
「按時接收」課程的命中率(等級事件)。
PSP轉換與商用轉換及其TCO的份額。
四舍五入的準確性(1小單位≥和的偏差-標誌)。
13)Alerta和急流
Stale rate:事件發生時沒有課程→後退源/後退。
Triangulation mismatch:分歧>X bps。
Spread spike:「spread_bps」高於專業/主機的閾值。
開放位置突破:超過任何貨幣的上限。
Reval shock:白天重新評估<− X σ或>+X σ-評論。
14)最佳實踐(簡稱)
1.嚴格分離產品層(歷史FX)和FI/treasury (funding/payout/reval)。
2.使用小單位並以高精度存儲課程。
3.繪制conversion_owner並測量PSP(效果與參考)的利潤率。
4.實現事件的等效性和雙向對賬(Tx→File和File→Tx)。
5.保存anchor貨幣以進行triangulation,並驗證bps中的差異。
6.通過單獨的GL進行EOD程序來重新評估殘留物。
7.將課程分配到settle/funding時考慮到DST/時間段。
8.定期測試四舍五入(在尺度邊界上基於屬性的測試)。
15)實施支票
- 定義了報告貨幣和歷史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 Dashbords和與PSP/銀行的對賬行為。
- realized/unrealized FX的reval程序和GL分離。
- 四舍五入和存儲精度測試集。
總結
多種貨幣書籍是分層學科:產品的歷史性FX,信標的實際值,資產負債表的EOD重估值。借助透明的課程來源、精確的數據模型、雙記錄和自動對賬,您可以從分析中消除「貨幣噪音」,提供審計,並在全球貨幣化過程中獲得可管理的FX風險。