FX: conversão e riscos cambiais
1) Por que controlar FX em iGaming
Relatórios P&L exatos: onde os lucros FX/perdas (depósitos, conclusões, setlment PSP, reservas) surgem.
Justo ND/GRR/NGR: relatório único currency sem «reavaliações retroativas».
Liquidez e cash flow: funding na moeda A, pagamentos em B - precisa de previsão e hedge.
Complaens/impostos: origem transparente dos cursos e auditoria de vestígios.
2) Os pontos-chave onde FX nasce
1. Carteira de jogo vs moeda de depósito - normalização na moeda de carteira/reportagem.
2. Capture/setle em PSP: Fixa um curso «histórico» para ND.
3. Funding (inscrição no banco): Pode haver uma taxa de câmbio diferente e efeito FX secundário.
4. Withdrawals: conversão no pagamento do jogador.
5. Reserva de rolling e multas de esquema: cancelamentos/lançamentos podem ser em outra moeda.
6. Kripto: avaliação de VWAP/mediana no momento do setle/funding.
3) Fontes de cursos e regras de normalização
Fonte FX: provedores de arbitragem prioritários (como CME/Refinitiv/ECB), banco de reserva/PSP.
Quote policy: `mid`, `bid/ask` или `mid ± spread_bps`. É mais comum aplicar mid + explícito 'spread _ bps' para a contabilidade.
Timestamp: Curso no momento do evento de reconhecimento (normalmente 'sensled _ at' para ND; opcional 'funded _ at' para banco-contabilidade).
No restatement: ND passado não é superestimado quando os cursos são alterados; reval é feito separadamente como unrealizador FX.
Precisão: Armazenamento de 8 a 10 caracteres no curso FX, quantias em dinheiro em minor units (integrers) + scale.
4) Fórmulas e exemplos
4. 1. Conversão básica
Deixe 'amount _ original' em 'ccy _ origg', moeda de relatório 'ccy _ rep', curso 'fx (ccy_orig→ccy_rep)':
amount_reporting = round(amount_original fx, scale_ccy_rep)
4. 2. Taxa de câmbio cruzada (via moeda-âncora, como EUR)
fx(GBP→UAH) = fx(GBP→EUR) fx(EUR→UAH)
É importante armazenar o itinerário do curso em 'meta' para a auditoria.
4. 3. Separação do spread e comissão PSP
Se o PSP converteu ele mesmo:
fx_effective = settlement_amount_in_rep / original_amount spread_bps = (fx_effective / fx_reference - 1) 10_000 fee_fx = settlement_fee_in_rep (если отдельно)
Armazene o efetivo FX e o reference FX para medir a margem implicit PSP.
4. 4. Exemplo (cadeia dupla conversão)
O jogador depõe 100 GBP. Reporting — EUR.
На `settled_at`: `GBP→EUR = 1. 1700` → `ND_dep = 117. 00 EUR`.
O PSP financia o banco no USD amanhã: 'GBP→USD = 1. 3000, o banco mantém a conta em USD.
Para a contabilidade FI, fixe também o curso secundário 'USD→EUR' em 'funded _ at' (por exemplo, 0. 9200) para ver o realizador FX entre setle e funding, se a posição monetária for superestimada.
5) DCC, conversão PSP e «quem decide o curso»
DCC (Dinamic Currency Conversion) para Merchant/PSP: O curso é exibido com antecedência ao jogador, mas a margem é maior.
PSP-conversion: O PSP aceita a moeda do jogador, transforma em moeda o merçante na sua taxa de câmbio. A transparência do spread é crítica.
Merchant-conversion: O merchant aceita multivalência (multi-MID/multi), a conversão é feita por um banco/trigeri no melhor curso (normalmente mais vantajoso, mas mais difícil operacionalmente).
Recomendação: fixe conversion _ owner ('DCC', 'PSP', 'MERCHANT') e compare TCO (spread + fee).
6) Cripto: avaliação e volatilidade
Avaliação de VWAP em uma janela curta em torno de 'sensled _ at' (por exemplo, se for de uns 5 minutos), indicando a origem (bolsa/provedor).
Guarde "price _ usd'," price _ eur "," fonte "," window "," pair "(por exemplo," USDT/USDC/BTC ").
Para funding em bits/fiat - segunda camada FX.
Especificidades: espólios, delistings, fees on-chain - leve em conta «meta» e alertas.
7) Contabilidade de FX em relatórios: realizador vs unrealizável
Realized FX é a diferença «fechada» pelo fluxo de dinheiro (entre a taxa de reconhecimento e a taxa de câmbio real/receita).
Unrealized FX - reavaliação dos saldos nas contas de moedas/reserva no final do dia/mês.
Espalhe em várias contas GL: 'FX _ realizável', 'FX _ unrealizável'.
Para os analistas de ND/alimentos, use o curso histórico do evento (não exagere).
8) Tipos de exposição FX e como fechá-los
Mudança de divisas de entrada/saída (depósito EUR → saída TRY).
Medidas: natural hedge (selecionar o valor da moeda), envelope rápido de acordo com as regras.
Translation exposure: multifunção e reservas em moedas diferentes reval.
Economic exposure: Dependência de longo prazo de margem do curso (micos GEO, fornecedores de jogos).
Medidas: forwards/NDF, opções (collars), equilíbrio GEO e fornecedores.
9) Processos e políticas de traquejo
FX policy: limites para posição aberta em cada moeda (por exemplo, no máximo 20% da circulação semanal).
Execução rulas: volume mínimo de transação, spreads de prata, lista de contêineres.
Forecasting: 7/30/90 dias de previsão de necessidades netas de moedas (depósitos - conclusões - impostos - OREC).
Hedge accounting (se necessário): documentação da relação «posição hedge ↔ risco».
Calendário de feriados afeta funding/rolling reserve e «encerramento» FX.
10) Dados e modelo (simplificado)
payments. transactions (
id, user_id, provider, method, type, status,
amount_original, currency_original, -- event amount and currency amount_wallet, wallet_currency, -- domestic gaming currency (if different)
reporting_currency, amount_reporting, - the sum in reporting currency of fx_source, fx_pair, fx_timestamp, fx_rate, - a course at the time of the event (usually settled_at)
fx_quote_type, fx_spread_bps, fx_reference_rate -- measurement of spread/quotation type settled_at, funded_at, conversion_owner, meta
)
treasury. funding_receipts (
funding_id, provider, bank_account, currency, amount,
received_at, value_date, fx_to_reporting, amount_reporting, meta
)
treasury. fx_reval_ledger (
id, date, currency, position_amount, rate_eod, amount_reporting_eod,
prev_rate_eod, reval_diff, type -- UNREALIZED/REALIZED
)
11) Controle e controle de qualidade
11. 1. Alinhamento dos nossos cursos com o PSP/banco
Mapeie 'fx _ effectiva' (de masslement) com 'fx _ reference' (da sua guia de referência).
Alert se '| spread _ bps |> threshold' (por exemplo,> 80 bps para maiores).
11. 2. Qualidade da origem dos cursos
State-rates: se 'now - fx _ timestamp> X minutos' quando o evento chegar, alert e fonte de emergência.
Discrepâncias de triangulação: 'fx (A→B) fx (B→C)' vs 'fx (A→C)' - alert, logue a discrepância no bps.
12) Exemplos de modelos SQL
12. 1. Normalizar transações em moedas relatadas
sql
INSERT INTO dw. transactions_flat (...)
SELECT t. id, t. user_id, t. provider, t. method, t. type, t. status,
t. amount_original, t. currency_original,
t. reporting_currency,
ROUND(t. amount_original r. fx_rate, c. scale) AS amount_reporting,
r. source AS fx_source, r. pair AS fx_pair, r. fx_rate,
r. quote_type AS fx_quote_type, r. spread_bps,
t. settled_at, t. funded_at, t. conversion_owner, t. meta
FROM raw. transactions t
JOIN ref. fx_rates r
ON r. pair = CONCAT(t. currency_original, '/', t. reporting_currency)
AND r. ts = (SELECT MAX(ts) FROM ref. fx_rates
WHERE pair=r. pair AND ts <= t. settled_at)
JOIN ref. currencies c ON c. code = t. reporting_currency
WHERE t. settled_at BETWEEN:from AND:to;
12. 2. Decomposição do efeito FX PSP (effectiva vs reference)
sql
SELECT provider, method, DATE(settled_at) AS d,
SUM(amount_reporting) AS amount_rep_ref,
SUM(settlement_amount_in_rep) AS amount_rep_eff,
(SUM(settlement_amount_in_rep) - SUM(amount_reporting)) AS fx_slippage,
10000 (SUM(settlement_amount_in_rep) / NULLIF(SUM(original_amountfx_reference_rate),0) - 1) AS spread_bps
FROM dw. fx_settlement_view
WHERE settled_at BETWEEN:from AND:to
GROUP BY 1,2,3
ORDER BY d;
12. 3. Reavaliação diária de sobras de moedas (unrealized FX)
sql
INSERT INTO treasury. fx_reval_ledger (date, currency, position_amount, rate_eod, amount_reporting_eod, prev_rate_eod, reval_diff, type)
SELECT
:eod_date AS date,
bal. currency,
bal. amount AS position_amount,
r_eod. fx_rate AS rate_eod,
bal. amount r_eod. fx_rate AS amount_reporting_eod,
COALESCE(l. prev_rate_eod, r_eod. fx_rate) AS prev_rate_eod,
bal. amount (r_eod. fx_rate - COALESCE(l. prev_rate_eod, r_eod. fx_rate)) AS reval_diff,
'UNREALIZED'::text
FROM treasury. balances bal
JOIN ref. fx_rates_eod r_eod
ON r_eod. pair = CONCAT(bal. currency, '/',:rep_ccy) AND r_eod. date =:eod_date
LEFT JOIN LATERAL (
SELECT rate_eod AS prev_rate_eod
FROM treasury. fx_reval_ledger
WHERE currency = bal. currency AND date =:eod_date - INTERVAL '1 day'
ORDER BY date DESC LIMIT 1
) l ON TRUE;
13) KPI e dashboards
FX Slippage (bps): diferença de efetivo vs reference por PSP/método/MID.
Realized FX P&L (dia/semana/mês) e Unrealized FX (EoD/EoM).
Open FX Position vs limites de política.
Hedge Ratio: proporção de posição coberta (forwards/NDF/opções).
Stale-rate Incidents и Triangulation Mismatch.
Spread% of Volume (quanto custou FX em relação ao volume processado).
14) Alertas e liminares
State rates: nenhum curso relevante> N minutos no pico de tráfego - P1.
Spread spike: 'spread _ bps' acima do limite para maiores/menores - P2.
Open position breach: ultrapassar o limite de qualquer moeda - P1.
FX P&L choque: realizador diurno FX abaixo - X histórico - investigação.
Crypto price gap: salto> Y% da janela VWAP - Alteração da origem/interrupção do envelope.
15) Best pratices (curta)
1. Reconheça o ND e as métricas de alimentos em um curso sensled, sem revalidação retrospectiva.
2. Para FI/Trejeri, guarde o segundo curso no funded _ at - veja o realizador FX.
3. Fixe sempre conversion _ owner, fx _ fonte, cote _ tipo, spread _ bps.
4. Faça a triangulação através da âncora (EUR/USD) com o loging.
5. Divida realizações e unrealizações em nível GL.
6. Em cripto - Use uma janela VWAP em vez de um tique.
7. Automatize as alertas em stale rates e o spread anormal PSP.
8. Preveja a necessidade de moedas netas e use natural hedge + avanços/NDF.
16) Folha de cheque de implementação
- Guia de cursos 'ref. fx _ rates's EOD e intraday, armazenamento de origem e cote tipo.
- Витрины `transactions_flat`, `fx_settlement_view`, `funding_receipts`.
- Triangulação mecânica e registro de itinerário de cursos.
- Contabilidade FX de dois níveis (ND/produto vs FI/trechos).
- Reval diário de sobras de moedas.
- Dashboards KPI (slippage, open position, FX P&L).
- Política FX: limites de posição, lista white, liminares de alertas.
- Processo de hedging (forwards/NDF/opções) e circulação de documentos.
Currículo
O FX no iGaming não é apenas um «curso multiplicar por um valor». Este é um sistema inteiro: pontos claros de reconhecimento, fontes transparentes de cursos, contabilidade dividida de realização/unrealização, controle do spread PSP e posição aberta controlada. Introduzindo o guia padrão FX, a normalização «por setle», os procedimentos reval e a política FX compreensível com ferramentas de hedge, você tira a volatilidade do P&L e torna os fluxos de dinheiro previsíveis.