GH GambleHub

Livros e cursos multivaltos

1) O que são os «livros multivaltos»

O livro (ledger) é um candeeiro de transação duplo (fios de dois lados) em várias moedas ao mesmo tempo:
  • Livro Wallet: conta do jogador (moeda de jogo/moeda).
  • Livro Senslement: cálculos com PSP/Equire (moeda de setlment).
  • Treasury book, contas bancárias, conversões, transações de hedge.
  • Reporting Book: conjunto em moeda relatada (EUR, por exemplo) sem revalidação retrospectiva de métricas alimentares.

Cada livro registra a moeda da transação, a moeda da representação e a taxa de câmbio no momento do reconhecimento.

2) Hierarquia de moedas e políticas

1. Base/Reporting Currency é uma moeda única (EUR, por exemplo).
2. Wallet Currencies - moedas (USD/EUR/TRY/UAH etc.).
3. Senslement Currencies - O que o PSP envia (por exemplo, USD).
4. O Banco Currencies é a moeda da conta Merchant/Tesouro.

Regras:
  • Métricas de alimentos (ND/NGR/ARPU) - através do curso histórico do evento (normalmente 'sensled _ at').
  • Finanças/Trejeri - Adicionalmente registram o curso para 'funded _ at' e 'payout _ at'.
  • É proibida a reavaliação «oculta» nas vitrines de alimentos.

3) Cursos e suas fontes

Intraday reference (tick/minuto): Refinitiv/ECB/bancos - para normalizar os eventos.
EOD (fim do dia): para reavaliação de resíduos (unrealized FX).
Efetive FX: a partir de um arquivo PSP/banco (fato de conversão).
Triangulation: por meio de âncora (EUR ou USD) sem cotação direta.
Quote policy: `mid` либо `bid/ask` → `mid ± spread_bps`. O spread está separado.

Guarde «fx _ fonte», «fx _ pair», «fx _ rate», «fx _ timestamp», «quete _ tipo», «spread _ bps», e a trilha de triangulação.

4) Pontos de reconhecimento e camadas de cursos

'autorize _ at' - O curso não é fixado (sem a captura, não há reconhecimento).
'captured/setled _ at' é um curso histórico para camada de alimentos e ND.
'funded _ at' é um curso de entrada bancária (realizador FX para FI/treasury).
'payout _ at' é um curso para pagar ao jogador.
'eod' é o curso final do dia para reavaliação de sobras (unrealizável FX).

5) Precisão, arredondados, unidades mínimas

Dinheiro - minor units inteiros (int) + 'scale' no guia de moedas.
Os cursos são de 8 a 10 caracteres após a vírgula.
Arredondamentos: bancário (half-even) para relatórios; em UI - regras locais.
Manter os campos separados: 'amount _ original', 'amount _ wallet', 'amount _ reporting', 'amount _ efetive'.

6) Duplo registro e cartão GL (simplificado)

Exemplos de fio:

6. 1. DEPOSIT _ CAPTURED (GBP, EUR)

DT: AR: PSP (GBP)

KT: Player Balanço (GBP/EUR por carteira)

Paralelamente, registramos 'fx _ rate _ setle (GBP→EUR)' e 'amount _ reporting'.

6. 2. FUNDING _ RECEIVED (USD por banco)

Dt: Bank USD

T: AR: PSP GBP (fechando por equivalente; diferença → Realized FX).

6. 3. WITHDRAWAL_PAID (TRY)

Дт: Liability: Player (TRY)

TC: Bank TRY (ou Bank EUR + Conversão; diferença - realização FX).

7) Arquitetura de dados (modelo mínimo)


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) Fluxo de normalização (ETL/ELT)

1. Ingest matéria-prima → normalização de estatais PSP.
2. Atribuir o curso histórico a 'massled _ at' de 'fx _ rates _ intraday'.
3. Gravar duplamente para o livro que deseja.
4. Importação separada de funding e efetiva FX.
5. Revalidação diária de sobras de 'fx _ rates _ eod' (treasury-book).
6. Construção de vitrines (ND/NGR/LTV) sem reavaliação retrô.

9) Confecção e consistência

Tx→File: Todos os captured/sensled estão no arquivo PSP (somas/moedas/datas).
File→Tx: Tudo no arquivo está refletido nos livros/cabos.
FX Reference vs Efetive: contar 'slippage _ bps'; Um alert para sair do limiar.
Teste de triangulação: 'A→B B→C' ≈ 'A→C' dentro do bps tolerance.
Idempotidade: 'event _ id' e 'idempotency _ key' - proteção contra suplementos.

10) Cenários frequentes e como conduzi-los

Multi-wallet: a carteira de um jogador pode ser em uma moeda diferente do depósito - faça uma conversão interna no seu curso (política 'conversion _ owner =' MERCHANT ').
PSP-conversion: guarde 'fx _ efetiva', 'fx _ reference' e 'spread _ bps' para analisar a margem PSP.
Kripto: avaliação sobre a janela VWAP; funding em steaebles - segunda camada FX.
Cross-wallet transfer: movimento dentro da plataforma - sem renda FX, apenas transferência entre livros.

11) Modelos SQL

11. 1. Normalização do valor em moeda histórica

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. Medição do spread PSP (effectiva 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. Reavaliação de sobras 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 e dashboards

FX Slippage (bps) por PSP/método/MID.
Realized FX P&L (funding/payout) и Unrealized FX (EOD/EOM).
Open FX Position vs limites de política.
Hit-rate cursos «a tempo» (stale-rates incidentes).
Parte PSP-conversion verss Merchant-conversion e seu TCO.
Precisão arredondada (desvios de quantia ≥ 1 menor unit - bandeira).

13) Alertas e liminares

State rate: nenhum curso no momento do evento → fonte/retrai fallback.
Triangulation mismatch: discrepância> X bps.
Spread spike: 'spread _ bps' acima do limite de maiorias/mainers.
Open position breach: ultrapassar o limite de qualquer moeda.
Choque Reval: Revalidação diária <- Xaely> + Xg- Revezamento.

14) Best pratices (curta)

1. Separe rigorosamente a camada de alimentos (histórico FX) e FI/treasury (funding/payout/reval).
2. Use o menor units e guarde cursos com alta precisão.
3. Logue a conversion _ owner e mede a margem PSP (effectiva vs reference).
4. Execute a idempotação dos eventos e o cruzamento bilateral (Tx→File e File→Tx).
5. Mantenha a moeda anchor para triangulação e valorize as divergências em bps.
6. Reavaliar resíduos faça um procedimento EOD com um GL separado.
7. Leve em conta o DST/temporizons ao atribuir os cursos para o setle/funding.
8. Teste regularmente o arredondamento (property-based tests nas fronteiras scale).

15) Folha de cheque de implementação

  • Definida a relating currency e política histórica FX.
  • Fontes de cursos: intraday + EOD, fallback e SLA atualizações.
  • Modelos 'ledger. entries`, `fx_rates_`, `funding_receipts`, `balances`, витрина `transactions_flat`.
  • Mecanismo de triangulação e logs de rota.
  • Алерты: stale-rates, spread spike, triangulation mismatch, open position breach.
  • Dashboards KPI e acertos de acerto com PSP/banco.
  • Procedimentos reval e GL separados para realização/unrealização FX.
  • Conjuntos de testes de arredondamento e precisão de armazenamento.

Currículo

Os livros multivalentes são uma disciplina de separação de camadas: histórico FX para o produto, real para os trechos, reavaliação EOD para os balanços. Com fontes de cursos transparentes, um modelo de dados exato, um registro duplo e um cruzamento automatizado, você excluirá o «ruído de moeda» dos analistas, fornecerá uma auditoria e terá um risco FX gerenciado na monetização global.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Telegram
@Gamble_GC
Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.