← Blog
 · 16 min read

An Effective On-Chain FX Market could Flip the 99.8% Dominance of USD Stables

"Nobody wants non-USD stablecoins." Critics of non-USD stables on CTs are too dogmatic in their provincial ideology of sitting in their US-centric world. Yes, there is no doubt for the continued dominance of USD stables, but the expectation of overwhelming dominance of 99.8% on-chain over the next few years is both illusory and unrealistic.

According to BIS Report in 2025, non-USD FX spot is $324B/day ($84T/year). USD stablecoins captured 6.3-7.1% of USD FX spot. If non-USD stables achieve the same penetration, daily trading volume is ~$20.4B-$23B per day. So why do non-USD stables have almost no presence on blockchains?

Artemis@artemis ·
nobody wants non-USD stablecoins Five years, dozens of new issuers, every major currency tried, and none have made any progress in dethroning the dollar.
Artemis chart of stablecoin supply by currency, Oct 2025: USD 303.7B (99.79%), EUR 555.7M (0.18%), BRL 39.2M (0.01%), every other currency rounding to 0%.

shafu @shafu0x

nobody wants non-USD stablecoins

View on X ↗

Instead of saying people don't want non-USD stables, I would argue that, it's because non-USD stables do not have an effective on-chain market with algorithms tailor-made for FX trading, so that non-USD stables can be swapped efficiently.

Take a look at this post by @0xAishwary as an example. Even a senior management level on @0xpolygon was got seriously hit by the impermanent loss when he tried to create a pool of $USDC v $XSGD (by @StraitsX) using the current design of AMM. In my opinion, to be exact, he was in fact got hit by the toxic flow of AMM.

Aishwary@0xAishwary ·
One of the biggest challenge for non-USD stablecoins is not that that their demand doesn’t exist, it’s that they are volatile in nature. As someone who has been constantly working on fx on chain this entire year, and keeps deploying multiple currencies on chain daily, it is a genuine issue. For example: 2 days back I’d deployed a XSGD @StraitsX and USDC @circle pool with a range of 1: 1.3045-1.3065 (A 20 wick) pool. A day later I saw the entire pool drained out of XSGD because the price of XSGD moved out of the range and arb bots swapped out the entire XSGD and left USDC in the pool. I got hit with IL. This means either I need to correlate the pool with live rates or I will keep losing to IL and on the other hand keep generating fees but this is the same classic issues where if IL> Fees generated I keep losing money. The other issue is, you are not able to estimate the actual returns for yourself because of the price fluctuations. There is a big pool deployed for Polymarket enabling them to still receive USDC.e against USDC deposit and there I can easily estimate the returns because the pair is a stable one and IL is negligible. So the fees and returns can be calculated. This triggered a conversation last night with a good old friend who helps us deploy liquidity on chain for the non USD Stablecoins. I mean @0xPolygon captures more than 50% of non USD volumes so it’s kind of important for us to solve for it. Spent the night trying to solve for it and I feel I am pretty close to a point where: You can deploy a non USD stable pair and still can get a stable yield, you are hit with IL but the mechanism enables to get back that IL and hence brings a stable estimated yield and makes it possible for everyone to start deploying more liquidity on-chain. You are not ready for non-USD currencies coming on chain at the quantum they would come if we are able to solve it for everyone.

Artemis @artemis

nobody wants non-USD stablecoins Five years, dozens of new issuers, every major currency tried, and none have made any progress in dethroning the dollar.

View on X ↗

What is toxic flow? Toxic flow is when the price marked to the future is worse than the execution price after accounting for fees and price impact. Toxicity is the result of adverse selection of passive market makers (e.g. on @Uniswap) by market takers. Traditional constant-product AMMs rely on external arbitrageurs to update the pool price to match market price, which can cause huge impermanent loss for LPs and potentially drain liquidity pools in volatile market conditions. The incident above speaks for itself.

Liquidity bootstrapping for exotic assets (including exotic currencies) could be easier with AMMs, as passive liquidity lowers the threshold of liquidity provision. Anyone without market-making capacity can still provide their idle capital to liquidity pools in return for yields. However, since LPs are not actively managing the positions, they always suffer from adverse selection being on the wrong end of trades with informed traders or arbitrageurs. Hence, among many defects of existing designs of AMMs, I would like to focus on one main issue in this article - arbitrage (toxic flow) prevention & fair pricing.

The same issue is exhibited in perpetuals on equity which @izebel_eth explored and shared a paper a month ago. What @izebel_eth has shared about arbitrage prevention and fair pricing can also be dealt with in the context of on-chain FX market as well.

jez (equity perps era)@izebel_eth ·
First page of the paper “Non-Arbitrage Conditions for Perpetual Forwards” by Jez, dated 10/28/2025.View on X ↗

Non-Arbitrage Conditions for Perpetual on Equity

(can skip directly to the next section of "How to Guard LPs of an On-chain FX Market against Toxic Flows" if you want to)

While investors like @tomhschmidt and @KyleSamani are very bullish on perpetuals on equity, there is, inter alia, one particular issue, which is huge arbitrage opportunities (i.e. free lunch) presented in perpetuals on equity for known events happening to stocks (e.g. dividend payout), when there is no mechanism for price adjustments accordingly.

The no-arbitrage pricing formula for a stock paying a continuous dividend yield d (with risk-free rate r) are:

F=Se(r−d)TF=Se^{(r−d)T}

In traditional finance, futures have expiration dates, and their prices incorporate all known information (e.g. interest rates and dividends) to avoid arbitrage opportunities; but perpetual futures have no expiration date, there is no time T to adjust forward prices for an event at expiry.

In other words, unlike in traditional forwards/futures with expiry after T where the upcoming dividend would already be reflected in the forward’s price, as a perpetual future doesn’t expire or physically settle, it needs a new mechanism to factor in the expected dividend of a stock, or else short traders can simply capture pitfalls from the downward price adjustment after ex-dividend date, since perpetual's internal oracle price will be suddenly adjusted downward as the oracle “rolls” from the expiring future to the next quarterly future. This presents arbitrage opportunities for shorts at the expense of the longs, as a trader could short the perp just before T (when its price is still higher) and buy the next-quarter futures contract (which has factored in the dividend).

Consider a stock trading at $100 that will pay a $2 dividend at a known future date. On the ex-dividend date, the stock’s price is expected to drop by $2 as the company is transferring $2 per share to shareholders. The question is, how should a perpetual future’s price respond to known future events in the underlying to ensure fair pricing; or alternatively, how should a discount curve look like to exactly offset the coming price drop and eliminate arbitrage, so as to achieve an effect where short sellers on the perp will pay an amount in funding to the longs that precisely equals the price drop caused by the ex-date, leaving no pitfalls.

@izebel_eth has shared his thoughts on the question of how a perpetual future’s price should respond if we know the underlying asset’s price will change by a certain amount in the future. There solution should be a mechanism that allows perpetual’s mark price gradually adjusts ahead of the event, such that short traders pay the equivalent of the dividend to long traders via funding payments - first calculate the fair ‘mark price’ discount of the perp before the event, and then derive the proper perpetual pricing adjustment (discount) using a backward induction approach that compensates for the known event.

PT−1=o(1+d)−o(PT−1−oo+clamp(0.0001−PT−1−oo,−0.0005,0.0005))P_{T-1} = o(1 + d) - o\left(\frac{P_{T-1} - o}{o} + \text{clamp}\left(0.0001 - \frac{P_{T-1} - o}{o}, -0.0005, 0.0005\right)\right)

There are two types of prices: oracle price & mark price:

Oracle Price (Index Price, o): current price of the underlying asset; often an index or average of spot prices – in the example, it's $100 at time T-1 (just before the dividend), which is gonna drop to $98 at T due to dividend payout.

Mark Price (Perpetual’s Price, P_T-1): the price of the perpetual futures contract itself at a given time. It can diverge from the oracle price when traders anticipate a move or due to funding effects. In the example, based on the above formula, the mark price at T-1 was $98.975, slightly below the oracle $100. By time T, the mark price will converge to $98 (same as the underlying after the drop).

The reason of having a separate Mark Price is to calculate funding and PnL:

  • Price move profit: without mark price adjustment, if traders short at $100 and the perp drops to $98 at T, they gain $2; with mark price adjustment, if they short at $98.975 and the perp drops to $98 at T, they gain $0.975 instead, far less than $2.
  • Funding payment: as the perp was below the oracle at T-1, shorts will pay funding to longs during that hour. The funding formula looks at the percentage difference between perp and oracle. Here, the perp is $1.025 below the oracle, which is –1.025% in relative terms. The exchange’s rule was to adjust funding by 0.01%−(–1.025%)=1.035 to favor longs. But since it’s capped at a max of 0.05% per hour, the effective funding paid by shorts is about +0.05% (to longs). If you look at it from the short’s perspective, they paid $0.05, which on a $100 notional is 0.05%, and relative to the 1.025% price gap, that 0.05% funding covers a small portion of it.
  • Net gain for the shorts: Price profit $0.975 – funding $0.05 = $0.925 net gain.

As a short seller, a $0.925 profit on a $100 position for a sure $2 drop might still sound like free money, but the mark price adjustment has already reduced the amount dramatically (>50%) smaller than $2, given the 0.05% per hour funding limit. If the drop were further away (several funding periods), funding could continue to aggregate values and the mark price could gradually adjust, squeezing that net profit even closer to zero by the time of the event.

Why not simply charge the shorts the entire arbitrage profits by giving longs all $2 via funding instead of moving the price? If the perp stayed at $100, the required funding rate to transfer $2 in one hour would be 2%. Such a great spike on funding rates can cause instability to exchanges. Thus, the only way to bridge a large expected gap is to let the perpetual’s price itself drop ahead of the event through the mark price adjustment, so that the remaining gap is small enough for funding to handle. I will elaborate much more on this in the next section.

In essence, the mark price fell from $100 to $98.975 before the event, and funding took care of a tiny bit more, so that shorting wasn’t wildly profiting from pitfalls. It is because the mark price falling being below the oracle price pre-pays a chunk of the drop to the long side as Long traders can enter at a cheaper price ($98.975 instead of $100). When the drop happens, they don’t lose the full $2 relative to their entry, but $0.975 on the price, plus $0.05 received in funding from shorts. A long who held from $98.975 through the $98 drop loses $0.975 on the price move but gains $0.05 via funding, net –$0.925. That’s exactly the opposite of the short’s +$0.925, so the books balance out.

How to Guard LPs of an On-chain FX Market against Toxic Flows

Since AMM does not rely on oracles, arbitrage orders are essential to AMM price discovery process to make it efficient, but these toxic flow would take profit from LPs. Thus, it begs the question of whether there is a way not to update the pool price by relying purely on arbitrage orders. Some may suggest to rely on external price oracles (e.g. @chainlink, @redstone_defi, @APRO_Oracle), but this exposes AMMs to the single point of failure - external oracle manipulation - which is not uncommon in the DeFi space. (Note: for the issue of when it makes sense for LPs to provide liquidity in the AMM, check out my thread below)

DeFi Cheetah - e/acc@DeFi_Cheetah ·
This 🧵is about the most fundamental and important question of DeFi: when does it make economic sense to be an LP for AMM (i.e. benefit > cost)? @a16z Head of Research @Tim_Roughgarden propose a solution by introducing a new concept called Loss versus Rebalancing (LVR) 👇👇
View on X ↗

Well, how to optimise the on-chain FX pools by further removing the toxicity of the flows? We can introduce two more types of prices, with a mechanism of liquidity reallocation:

Chart: AMM price mechanism over 100 simulated swaps. A noisy spot price is tracked by a smooth internal oracle; the mark price moves in steps, re-pegging to the oracle whenever it leaves a ±8% band, with each step labelled “Liquidity Reallocation Triggered”.
  • Internal oracle price: just as what was mentioned in the perp on equity section above, there should be an internal oracle price that tracks the market price of the local currency in the real world. To avoid oracle manipulation and smooth out fluctuations, the AMM can simply calculate the internal oracle price with respect to the exponential moving average of the spot price from actual swaps happening in the AMM pools, instead of relying on external price feed. Indeed, the 11 Oct incident in CEXs reminds us of the potential instability of relying on external sources, especially when there is a huge centralised risk.
  • Mark price of local currency stablecoins: this represents the AMM’s notion of that local-currency stablecoin’s price relative to a numéraire (say $USDT or $USDC). This has to be embedded in AMM's invariant function, so that if the conditions of adjusting the mark price are triggered, the AMM's invariant function would be changed accordingly.
  • Liquidity Reallocation: this is analogous to “re-centering” the AMM. Over time, if the deviation between the mark price and the internal oracle price of the local currency stablecoin becomes large enough, the mark price is forced to move towards the current internal oracle price to avoid large imbalances. Liquidity of the AMM pools is then reallocated: as the mark price has changed with the internal oracle price, the invariant function will also change, so that LP funds are more efficiently used around the current market price. Hence, the AMM price of the local currency stablecoins in this tailor-made AMM pool will be able to converge to their real world market prices, without relying on arbitrage orders to update the pool price! Andtoxicity of flows will be hugely removed, since there would be significantly less arbitrage opportunities of these AMM pools if the liquidity in the AMM pools can be reallocated.

Under such a design, as the internal oracle price is embedded directly into its AMM curve, the pool’s pricing of, say, EUR vs USD stablecoin is anchored to the true EUR/USD rate. This means an informed trader can’t simply swoop in and buy “cheap euros” on-chain or sell “expensive euros” unless the pool is significantly out of balance. Any deviation between the mark price and oracle price creates a funding-like effect: traders swapping against the imbalance effectively reallocate value in the pool (shifting liquidity toward the undervalued asset) similar to how funding payments incentivize closing the gap between perp and index prices. The result is that on-chain FX prices remain fair relative to the real world, and arbitrage opportunities are minimized. This makes sure one currency isn’t grossly mispriced against another — very much in spirit of how a perp’s funding keeps its price tethered to the index.

In other words, as the pool automatically adjusts its quote when the mark price move to the oracle price, there isn’t a long window of stale prices where arbitragers can trade at outdated rates (as seen in the graph above). The heavy lifting of price discovery is handled by the oracle feed rather than by arbitrage trades, and LPs don’t consistently quote wrong prices and get picked off. By cutting down the lag, LPs leak less value to arbitrageurs. It’s as if the AMM has its own internal “funding rate” mechanism: when the pool and oracle price diverge, the next traders pay a kind of implicit fee (or get a discount) that compensates the pool for rebalancing towards the correct price.

To implement this design effectively, one must avoiding over-rebalancing. If one side of the FX pair is in high demand (say everyone is buying EUR stable with USD stable), the pool’s price will move toward the oracle’s direction (EUR becoming a bit more expensive in USD terms), but the move has to be controlled and smooth. The deeper the imbalance, the more slippage you encounter, which naturally throttles massive rebalances. This is also the reason why the internal oracle price is adjusted with the exponential moving average of the spot price, instead of the actual spot price. In practice, this means the pool finds a new equilibrium close to the oracle price without completely emptying one side or overshooting the fair rate.

This is akin to the “partial rebalancing” idea: just as our perp example left a small basis (98.975 vs 98.00) to avoid instantaneous readjustment, the AMM should allow a slight divergence from the oracle price if it would otherwise run the pool out of an asset. That divergence is small enough to pose no arbitrage incentive beyond normal trading fees, and it will correct itself as users trade naturally. LPs are protected because the pool isn’t forcefully selling off all of one currency at a fire-sale price; rebalancing happens incrementally. If the AMM pool is over-rebalanced, i.e. the liquidity keeps being reallocated for even a slight price divergence between the mark price and the internal oracle price, this means LPs keep realising impermanent loss which is equally not ideal.

Core Philosophies of Non-Arbitrage Conditions for both On-chain FX and Perp on Equity

There should be more perspectives that should be tailor-made for an effective on-chain FX market, but toxic flow has always been one of the very core issues for both cases. Here are the conceptual similarities in how these two designs solve their respective problems:

  • Internal Price vs. External Price: in both cases, there is a notion of an “internal” price that can temporarily differ from the true “external” or fundamental price
    Perpetuals: the mark price of the perpetual can diverge from the oracle price of the underlying asset. The design allows the mark price to be below the oracle before the dividend event, so as to adjust the funding rate accordingly to converge both prices.
    On-chain FX: the mark price can deviate from the the internal oracle, and the divergence between both prices is one of the conditions that trigger the liquidity reallocation In both systems, this divergence is not left to grow unchecked – it is carefully managed.
  • Gradual Realignment Mechanism: both solutions implement a mechanism to gradually realign the internal price with the external market price in a way that avoids instant, exploitable jumps
    Perpetuals: the alignment is done via the funding rate. If the perp is below the oracle, shorts pay longs, nudging it up; if otherwise, longs pay shorts, nudging it down. @izebel_eth's article effectively scheduled a series of funding payments to bridge a known 2% gap over several hours. This is a continuous, monetary adjustment that ensures convergence.
    On-chain FX: the alignment is done via the change of mark price which induces the change of invariant function and the AMM curve adjustment. After each swap, the internal oracle price is moved towards the spot price, and the sufficient deviation between the internal oracle price and the mark price will move the mark price towards the internal oracle price, moving the AMM curve. This is a discrete re-centering adjustment of the AMM’s parameters that happens gradually (and only if needed, as reflected in the chart above for the change of mark price). Both methods avoid a single large jump; instead, they use a sequence of small adjustments (funding payments each hour, or EMA of spot price for internal oracle price) to smoothly correct the price. This gradual approach helps maintain stability and prevent shocking participants with sudden changes.
  • “Internalizing” External Events: both approaches can be seen as ways to programmatically internalize the effect of external market events: The dividend in the perp is an external fundamental event. The perp’s funding scheme internalizes that event’s effect by transferring value beforehand, rather than letting the event be a windfall to one side. For an on-chain FX market, external market price changes (which could be driven by events, news, etc.) are handled by the pool’s internal oracle and re-pegging, rather than blindly using an external price feed or waiting for arbitrageurs to do it all. The pool itself responds to the event (with a slight delay and smoothing), in effect bringing the AMM in line with the new reality proactively.
    Both are pre-emptive adjustments in expectation of turbulence.
  • Outcome Equivalence: both aim for an outcome where participants in the system are not worse off for using the derivative/AMM versus holding the asset directly
    Perpetual longs shouldn’t miss out on dividends, and shorts shouldn’t get windfall gains without cost. That keeps the perp’s pricing in line with how the underlying asset behaves (like a forward contract that perfectly reflects carry costs). The solution by @izebel_eth makes the perp long “equivalent to holding the underlying spot” through the dividend event.
    LPs of an on-chain FX market shouldn’t suffer unbounded impermanent loss when the currencies move in price externally. With liquidity reallocation, the pool attempts to ensure that, in the long run, LPs earn enough and the internal prices adjust so that LPs’ experience is similar to if they held the assets and earned trading fees with minimal extra loss. In an ideal efficient state, a liquidity pool that perfectly tracks price (with arbitrage internalized fully) would mean LPs just earn fees and have no impermanent loss.

Core Differences of such a Design for both Perp on Equity and On-chain FX market

Despite the conceptual similarities, it’s worth noting a couple of differences as a matter of completeness:

  • Nature of the System: a perpetual future is a derivative contract between longs and shorts, whereas an on-chain FX market is for spot assets with liquidity providers. This means the mechanisms are implemented differently (funding payments vs. changing pool parameters and using fees). Perpetuals deal with cash flows (funding, PnL) between traders; the AMM deals with token swaps and liquidity balances. The underlying principles of conservation of value and arbitrage prevention are analogous, but the implementation details differ greatly due to the nature of what’s being managed (credit balances vs. token reserves).
  • Known Event vs. Continuous Process: the perpetual solution was illustrated with a specific known future event (a scheduled dividend of known size). The approach was to backward-solve for a discrete time horizon, and one directional (a dividend causes a down-step in price). In contrast, an effective on-chain FX market has to handle continuous price movements in a generally unpredictable market. It doesn’t “know” future changes in advance, but reacts to price moves as they happen (albeit in a smoothed way) with two-sided uncertainty (prices can go up or down unpredictably). Despite this, the philosophy of “prepare the system so neither side can unfairly capitalize on a price move” is common to both.

Summary

As @arc has made public its ambition and commitment to developing on-chain FX, plus @tempo's enshrined AMM for institutions to do stablecoin swaps on its chain, there comes more discussion about building an effective on-chain FX market, in relation to which there are a few common questions:It's not nobody wants to trade non-USD stables, but we need a tailor-made market venue for on-chain FX trading.

  • Whether there is a need for an on-chain FX market, given the (wholesale) FX market being the most liquid one in the whole world
  • Whether there is a real demand of FX trading of local currency stablecoins, given the overwhelming demand of access to the USD only
  • Assuming the answers to two questions above are affirmative, whether a CLOB or AMM is more suitable to an on-chain FX market

...

These are interesting questions to answer, each of which entails a separate article for in-depth discussion. But it's obvious that, with regulatory clarity across different jurisdictions and monetary sovereignty, non-USD stables are inevitable. USD stables will remain dominant, but the continuation of 99.8% dominance in the next 5 years in my opinion are too illusory to bet on.

More from the blog

Get started

Bring local payments to every market you serve.

The first call is a 30-minute working session: we model the netting offset and the fee split on your top three corridors. No commitment, nothing to pre-fund.

Talk to us