کتاب ها و دوره های چند ارزی
1) «کتاب های چند ارزی» چیست ؟
دفترکل (Ledger) - یک دفترکل تراکنش دو ورودی (پستهای دو طرفه) که به طور همزمان در چندین ارز نگهداری میشود:- کیف پول: حساب بازیکن (ارز بازی/ارز).
- کتاب حل و فصل: حل و فصل با PSP/تحصیل (ارز حل و فصل).
- کتاب خزانه داری: حساب های بانکی، تبدیل، معاملات پرچین.
- دفتر گزارش دهی: خلاصه ای در گزارش ارز (به عنوان مثال، EUR) بدون تجدید نظر گذشته نگر معیارهای محصول.
هر کتاب ارز معامله، ارز ارائه شده و نرخ در زمان شناخت را ثبت می کند.
2) سلسله مراتب ارزها و سیاست ها
1. ارز پایه/گزارشگری - ارز گزارشگری واحد (به عنوان مثال، EUR).
2. ارزهای کیف پول - ارزهای کیف پول (USD/EUR/TRY/UAH، و غیره).
3. ارز حل و فصل - آنچه PSP می فرستد (به عنوان مثال، USD).
4. ارزهای بانکی - ارز حساب بازرگان/خزانه داری.
- معیارهای محصول (ND/NGR/ARPPU) - در نرخ تاریخی رویداد (معمولا «حل و فصل _ at»).
- امور مالی/خزانه داری - همچنین دوره های «funded _ at» و «payout _ at» را اصلاح کنید.
- «پنهان» تجدید ارزیابی در نمایش مواد غذایی ممنوع است.
3) دوره ها و منابع آنها
مرجع روزانه (تیک/دقیقه): Refinitiv/ECB/بانک ها - برای عادی سازی رویدادها.
EOD (پایان روز): برای FX تحقق نیافته.
FX موثر: از فایل PSP/بانک (تبدیل واقعی).
Triangulation: از طریق یک لنگر (EUR یا USD) در صورت عدم نقل قول مستقیم.
سیاست نقل قول: "اواسط" либо "پیشنهاد/درخواست" → "اواسط ± spread_bps'. توزیع به طور جداگانه ذخیره می شود.
فروشگاه: 'fx _ source'، 'fx _ pair'، 'fx _ rate'، 'fx _ timestamp'، 'quote _ type'، 'spread _ bps' و مسیر triangulation.
4) نقاط تشخیص و لایه های دوره
'authorize _ at' - ما مسیر را درست نمیکنیم (بدون دستگیری هیچ شناختی وجود ندارد).
'captered/settled _ at' - دوره تاریخی برای لایه محصول و ND.
'funded _ at' - نرخ ارز در هر بانک (FX تحقق یافته برای FI/خزانه داری).
'payout _ at' - نرخ زمانی که به بازیکن پرداخت می شود.
«eod» نرخ پایان روز برای FX تحقق نیافته است.
5) دقت، گرد کردن، حداقل واحد
پول - کل واحدهای جزئی (int) + «مقیاس» در دایرکتوری ارز.
دوره ها - حداقل 8-10 رقم اعشار.
گرد کردن: بانک (نیمه حتی) برای گزارش ؛ در UI - قوانین محلی.
فیلدهای جداگانه را حفظ کنید: «مقدار _ اصلی»، «مقدار _ کیف پول»، «مقدار _ گزارش»، «مقدار _ موثر».
6) دو ورودی و کارت GL (ساده شده)
نمونه هایی از پست ها:6. 1. DEPOSIT_CAPTURED (GBP، گزارش - EUR)
JT: AR: PSP (GBP)
Ct: تعادل بازیکن (GBP/EUR توسط کیف پول)
به موازات, رفع 'fx _ rate _ settle (GBP → EUR)' و 'مقدار _ گزارش'.
6. 2. FUNDING_RECEIVED (دلار آمریکا در هر بانک)
Dt: بانک USD
Ct: AR: PSP GBP (نزدیک معادل ؛ تفاوت → متوجه FX).
6. 3. WITHDRAWAL_PAID (سعی کنید)
Дт: مسئولیت: بازیکن (TRY)
Ct: بانک TRY (یا بانک EUR + تبدیل ؛ تفاوت - 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. اختصاص نرخ تاریخی به 'setted _ at' از 'fx _ rates _ intraday'.
3. یک معامله دوگانه را به دفتر مورد نظر (کیف پول/حل و فصل) بنویسید.
4. بودجه واردات جداگانه و FX موثر است.
5. بازنگری روزانه تعادل توسط 'fx _ rates _ eod' (کتاب خزانه داری).
6. ساخت پنجره فروشگاه (ND/NGR/LTV) بدون ارزیابی مجدد.
9) سازگاری و سازگاری
Tx → File: همه دستگیر/حل و فصل در فایل PSP بودند (با مقدار/ارز/تاریخ).
File → Tx: همه چیز در فایل در کتابها/معاملات منعکس شده است.
مرجع FX در مقابل موثر: شمارش 'slippage _ bps' ؛ هشدار برای رفتن فراتر از آستانه.
بررسی مثلث بندی: «A → B → C» ≈ «A → C» در یک bps-tolerans.
Idempotency: «event _ id» و «idempotency _ key» - حفاظت در برابر تکراری.
10) سناریوهای مکرر و نحوه انجام آنها
چند کیف پول: کیف پول بازیکن می تواند در یک ارز متفاوت از سپرده باشد - تبدیل داخلی را با نرخ خود انجام دهید (سیاست تبدیل _ مالک = «MERCHANT»).
تبدیل PSP: فروشگاه «fx _ effective»، «fx _ reference» و «spread _ bps» برای تجزیه و تحلیل حاشیه PSP.
رمزنگاری: نمره پنجره VWAP ؛ بودجه در اصطبل لایه دوم 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. 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 لغزش (BPS) توسط PSP/روش/اواسط.
متوجه FX P&L (بودجه/پرداخت) и FX تحقق نیافته (EOD/EOM).
باز کردن موقعیت FX توسط ارز در مقابل محدودیت های سیاست.
دوره های «به موقع» نرخ ضربه (حوادث نرخ ثابت).
سهم تبدیل PSP در مقابل تبدیل Merchant و TCO آن.
دقت گرد کردن (انحراف مقادیر ≥ 1 واحد جزئی - پرچم).
13) هشدار و آستانه
Stale rate: no rate at the time of the event → منبع ذخیره/ذخیره.
عدم تطابق سه ضلعی: واگرایی> X bps.
اسپرد اسپرد: 'spread _ bps' بالاتر از آستانه در رشته های اصلی/رشته.
نقض موقعیت باز: بیش از حد مجاز برای هر ارز.
شوک مجدد: ارزیابی مجدد روزانه <− X σ یا> + X σ - مرور.
14) بهترین شیوه (کوتاه)
1. به شدت جدا لایه محصول (FX تاریخی) و FI/خزانه داری (بودجه/پرداخت/reval).
2. از واحدهای جزئی استفاده کنید و دوره ها را با دقت بالا ذخیره کنید.
3. conversion_owner را وارد کنید و حاشیه PSP را اندازه گیری کنید (موثر در مقابل مرجع).
4. پیادهسازی idempointency رویداد و آشتی دو طرفه (Tx → File و File → Tx).
5. نگه داشتن ارز لنگر برای triangulation و اعتبار اختلاف در bps.
6. تعادل را با یک روش EOD با یک GL جداگانه ارزیابی کنید.
7. DST/timezones در نظر بگیرید هنگام اختصاص دوره به حل و فصل/بودجه.
8. به طور منظم تست های مبتنی بر ملک را در مرزهای مقیاس تست کنید.
15) چک لیست پیاده سازی
- گزارش ارز و سیاست FX تاریخی تعریف شده است.
- منابع دوره: روزانه + EOD، به روز رسانی مجدد و SLA.
- مدل ها. entries ',' fx _ rates _ ',' funding _ receipts ',' balances ', витрина transactions _ flat'.
- مکانیسم Triangulation و مسیر ورود به سیستم.
- Алерты: نرخهای قدیمی، اسپرد اسپرد، عدم تطابق مثلثی، نقض موقعیت باز.
- داشبورد KPI و گزارش های آشتی PSP/بانک.
- رویه های reval و GL های جداگانه برای FX تحقق یافته/تحقق نیافته.
- مجموعه تست دقت گرد و ذخیره سازی.
خلاصه
کتاب های چند ارزی یک رشته جدایی لایه هستند: FX تاریخی برای یک محصول، واقعی برای یک trejerie، تجدید نظر EOD برای ترازنامه. با استفاده از منابع نرخ شفاف، یک مدل داده دقیق، دو ورودی و آشتی خودکار، شما «سر و صدای ارز» را از تجزیه و تحلیل حذف می کنید، حسابرسی را انجام می دهید و خطر FX را در کسب درآمد جهانی مدیریت می کنید.