Skip to main content

Pool Architecture

1. Single-Sided Pool Design

Ratio uses single-sided stablecoin pools — each pool holds exactly one stablecoin (USDT, IDRX, MYRC, or tnSGD). This is fundamentally different from AMM-style paired pools (e.g., USDT/IDRX in a single pool).

When a user swaps USDT for IDRX, the Active USDT Pool receives USDT and the Active IDRX Pool sends IDRX. Each pool is debited or credited independently. This design means there is no impermanent loss from paired-pool rebalancing, pool depth per stablecoin is independently managed and monitored, and the inventory skew system operates cleanly on per-pool balance ratios.

Each stablecoin has three pool tiers (Active, Reserve, Yield), giving the system a total of 12 pools at Phase 1 launch (4 stablecoins × 3 tiers).

2. Three-Tier Architecture

100% · Ctrl+Scroll to zoom · Drag to pan

Tier 1 — Active Pool

The execution pool. Every FX swap debits and credits the Active Pool directly. This is the only pool that user transactions touch.

PropertyDetail
PurposeLive FX execution — serves all user swap requests
Funded byPhase 1 internal settlement from Reserve Pool (never by direct LP deposits)
Debited byUser swaps only
LP withdrawalsNever — Active Pool is completely isolated from withdrawals
Inventory riskTransient. Imbalances exist between user swaps and the next Phase 1 rebalance cycle. Inventory Skew operates on this transient deviation.
Min Balance40% of target (admin-configurable)
Active Pool Isolation

The Active Pool is NEVER directly debited by LP withdrawals, and NEVER directly credited by LP deposits. All capital enters via Reserve Pool rebalancing; all capital exits via user swaps. This keeps State Engine signals, inventory skew readings, and FX execution clean and predictable.

Tier 2 — Reserve Pool

The internal counterparty and buffer layer. Absorbs inventory risk from the Active Pool during Phase 1 settlement. Serves as the primary source for standard LP withdrawals.

PropertyDetail
PurposeInternal counterparty for Phase 1 settlement; LP withdrawal source (standard tier)
Funded byLP deposits (Class A: 100%, Class B: per admin ratio); Phase 2 buy-back proceeds
Debited byPhase 1 settlement (sends deficit stablecoin to Active); LP withdrawals (standard tier)
Inventory riskActual market risk ("The Bag") after Phase 1 settlement. VaR limits govern maximum accumulation.
Health gates> 80% Healthy, 60–80% Mild, 30–60% Significant, < 30% Critical
Min Balance80% of target (admin-configurable)

Tier 3 — Yield Pool

The yield-generation layer. Only receives Class B LP capital. Deploys into external yield strategies. Recalled to Reserve during deficit recovery.

PropertyDetail
PurposeGenerate yield for Class B LPs; fallback liquidity source for large withdrawals and deficit recovery
Funded byClass B LP deposits (Yield portion per admin ratio); Class B Reserve overflow (tagged for priority recall)
Debited byYield Pool recall (Smart Rebalancing deficit recovery); large/whale LP withdrawals
Yield distribution100% to kXXX-full Liquidity Index. kXXX-fx (Class A) is never updated by yield events.
Loss firewallYield losses absorbed entirely by Class B index. Class A sees zero impact. Reserve Pool health is firewalled from Yield Pool losses.

3. kToken Model

LPs receive rebasing kTokens when they deposit, representing their share of a pool. Two variants exist per stablecoin to enforce clean economic separation between intent classes:

VariantExampleIndex FeedsHolder
kXXX-fxkUSD-fx, kIDR-fxFX swap fees only (custom tier per partner)Class A LPs
kXXX-fullkUSD-full, kIDR-fullFX swap fees (30% standard) + Yield profitsClass B LPs

Both variants use the Vault Contract's Liquidity Index — a dynamic multiplier that increases over time as fees and yield accrue. kToken balances auto-compound; LPs never need to claim rewards.

Fee Distribution Flow

When an FX swap generates the 30% LP share:

  1. Calculate total TVL: TVL_total = TVL_classA + TVL_classB
  2. Class A share: (TVL_classA / TVL_total) × fee × ClassA_multiplier
  3. Class B share: (TVL_classB / TVL_total) × fee × 1.0
  4. updateIndex(classA_share) → kXXX-fx Vault
  5. updateIndex(classB_share) → kXXX-full Vault

The ClassA_multiplier is a configurable per-partner parameter (e.g., 0.3× for strategic issuers, 0.8× for institutional, 1.0× standard).

4. Pool Configuration (Phase 1)

ParameterUSDTIDRXtnSGDMYRC
Active Pool Max$1,000,000$500,000 eq$500,000 eq$300,000 eq
Active Pool Min %40%40%40%40%
Reserve Pool Max$5,000,000$2,000,000 eq$2,000,000 eq$1,000,000 eq
Reserve Pool Min %80%80%80%80%
Yield Pool Max$10,000,000$3,000,000 eq$3,000,000 eq$2,000,000 eq
Class B Reserve/Yield Ratio50/5060/4050/5060/40