> For the complete documentation index, see [llms.txt](https://docs.metric.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.metric.xyz/use-metric/trade.md).

# Trade

1. Open [Metric](https://app.metric.xyz), connect your wallet and choose a network.
2. Select the tokens and amount.
3. Compare Metric and aggregator routes. Review the quoted output, price impact and slippage tolerance.
4. Approve token spending if requested, then confirm the swap in your wallet.

Keep enough of the network's gas token to pay for gas.

## Understand the quote

**Zero fees.** Your quote is the full price. You pay the spread built into it, which is shared by all other parties. Nothing is added on top: no trading fee, no frontend fee. The optional notional fee, off by default, is built into the quote too. See [Fees](/use-metric/fees.md).

**Price impact** comes from using liquidity at progressively less favorable prices. Large trades can cross several bins, which affects the price.

**Slippage tolerance** limits how far below the quoted output your execution may fall.

Pools with **freshness checks** reject swaps when their price data is too old. Other safeguards can also reject a swap; see [Risks and safeguards](/use-metric/provide-and-manage-liquidity/risks-and-safeguards.md).

## Other ways to trade

Integrated aggregators can access Metric liquidity alongside other venues; however, choosing an aggregator does not guarantee a Metric fill.

## Programmatic trading

You can trade against Metric pools in two ways: call a pool directly, or go through the SimpleRouter.

Calling a pool directly. Pass the amount you want to trade and a price limit. The swap runs until it hits your price limit or the pool runs out of liquidity, whichever comes first. **If either happens before your full amount is used, the swap still succeeds but fills only part of your amount.** Check the returned amounts, not just whether the transaction succeeded. Set the price limit to the worst price you're willing to accept. When you call a pool directly, your contract pays the pool through the swap callback.

Using the SimpleRouter. Every router swap function takes a deadline, and the swap reverts after that time. The router only works with pools registered with the Metric factory. **It doesn't check that your route connects.** If the tokens, pools and swap directions don't line up, the swap can revert, deliver a different token than you meant, or leave tokens in the router, where anyone can take them. Take pool and token addresses from the [metadata endpoint](/reference/api/metadata.md).

See [Integrate Metric liquidity](/integrate/integrate-metric-liquidity.md) for routing and contract details.
