The mechanism · in plain words

A money changer that never sleeps.

Earn works like a currency kiosk — it quotes both directions around the live exchange rate, runs 24 hours a day, and covers as many currencies as you choose. This page builds the prompt; an AI agent sets it all up on your machine.

Where Earn lives.

Earn is open-source code that runs on your machine — not on Sera's servers. That's not a marketing choice; it's the only architecture that keeps Sera (the exchange) from holding your private key. Three things live in three different places.

YOU CONTROL
Your machine
Laptop, server, or Claude Code sandbox
  • The AI agent itself runs here
  • Your private key + wallet stays here
  • Signs every order locally
  • Can be paused or stopped anytime — it's your code
SERA (THE EXCHANGE)
Sera's API
api.sera.cx — public REST endpoints
  • Routes signed orders to matching
  • Publishes market data & order book
  • Publishes the live token & market registry
  • Never holds your funds or your key
ON-CHAIN
Sera contracts on Ethereum
Audited smart contracts on mainnet
  • Vault contract holds your deposited funds
  • Settles every matched trade on-chain
  • You can emergencyWithdraw() directly if Sera's API ever goes down
  • Open-source, audited code
The legal point

Sera (the exchange) never has the ability to move your money. Every order, cancel, and withdrawal needs a signature from your wallet — and your wallet's private key lives on your machine, not ours. The only thing Sera can do is route your already-signed messages and publish market data.

Example · USD / SGD — same pattern for every currency pair
Where the earnings come from · the same pattern works for any supported pair
Offer to buy and sell around an independent reference price. Earn the spread whenever takers trade both sides.

One pool, dozens of markets at once.

Sera's shared capital design means your stablecoins earn against every currency you pick at the same time — not split across them. Pick as many of the 40 supported tokens as you like. The same dollar backs every market at once.

Shared capital · one pool, many currencies
Earned this session
2.335USDC
an illustrative session — your pace depends on spread & flow
Swaps through your liquidity example
1,280 USDC · SGD+0.412
940 USDC · EUR+0.236
610 USDC · JPY+0.158
1,050 USDC · MXN+0.391
720 USDC · GBP+0.244
480 USDC · BRL+0.187
Atomic settlement zoomed in
XSGD
100kUSDC
TGBP

A trader's XSGD → TGBP swap routes through your USDC pool. Both legs settle atomically. You keep USDC and earn +0.114.

✓ You only hold currencies you set rates for.

A trade cycle on USD / SGD

Here is what happens to $1,000 of your capital, step by step, when the market behaves normally. Earn never trades against Sera — takers on the exchange hit your quotes.

0
The reference price
The independent reference — Wise's mid-market rate — puts USD/SGD at 1.2750. That's the anchor every quote is built from.
1.2750 reference mid
1
Earn quotes both sides
Offers to buy USD at 1.2701 and sell at 1.2799 — about 0.4% from the reference on each side, the spread you picked at setup.
1.2701 / 1.2799 our prices
2
Step 1 — a taker buys USD from you
A taker wants USD now and hits your offer: they give you 1,279.90 SGD for your $1,000 USDC. You hold SGD until you sell it back.
+1,279.90 SGD in progress
3
Earn offers to buy USD back
Earn posts the closing quote: buying USD back at 1.2701 SGD per dollar. Now waiting for a taker who wants to sell.
offer live waiting for buyer
4
Step 2 — a taker sells USD back to you
A taker sells USD into your bid: you take their $1,000 USDC and pay them 1,270.10 SGD. Round trip complete.
+9.80 SGD profit earned
Started with$1,000.00 USDC
After step 1 (sold USD at 1.2799)+1,279.90 SGD, −$1,000 USDC
After step 2 (bought USD at 1.2701)−1,270.10 SGD, +$1,000 USDC
Final result$1,000 USDC + 9.80 SGD ≈ +$7.71 (≈ 0.77%)

The 9.80 SGD is the earned spread — the difference between selling at 1.2799 and buying back at 1.2701, scaled to $1,000. Both fills together capture ≈0.77% of the round trip; your spread setting decides how wide that gap is.

From 0.76% per trade to ~30% yearly return.

A single trade earns a tiny fraction of a percent. Multiply by the trades per day, the currencies running in parallel, and the days in a year — and the small per-trade profit compounds into a real yearly return.

Profit per trade (after costs) ~0.10% after costs
Active currencies at any time ~14 of the currencies you picked (quiet ones skipped)
Avg trades per currency per day ~0.8
Money used per trade ~50%
Estimated daily return on your money ~0.06 – 0.10%
Yearly return (compounded) ~24 – 44% APY

The range reflects the natural variation in how often trades happen. Strongly trending markets shrink the actual number; markets that move back and forth grow it. Treat every number here as illustrative — your spread, currencies, and market conditions set the real figure.

Yearly return by trading style

The trading style chosen at setup controls how close to Sera's prices you offer. Closer = more trades, smaller profit per trade. Further = fewer trades, larger profit per trade. The expected yearly return moves with both.

Standard
0.05% better than Sera
22 – 35% APY
Balanced trade frequency and profit per trade. Works well in most market conditions.
Aggressive
0.02% better than Sera
30 – 55% APY
Best price on Sera every time, most trades, smallest profit per trade. More variation day-to-day.
These ranges are based on backtested Sera prices, average market conditions, and the assumptions above. Actual returns vary with how busy Sera is, how much trading happens, market direction, and how much capital is in the strategy. Earn earns less in strongly trending markets and more in markets that move back and forth. Past performance doesn't guarantee future returns.

What Earn is doing at any moment

At any moment, your money is in one of these four states — and all four can be happening across different currencies at once. Your terminal (and Telegram, if enabled) shows which.

Waiting for trades
Both buy and sell prices posted on Sera, your money sitting in USDC, waiting for someone to trade.
Mid-trade · holding currency
First half done. Holding the currency. Earn posted the reverse offer. Halfway through earning the profit.
Trade finished
Both halves filled. Profit earned in USDC. Earn posts fresh prices and starts again.
Updating prices
Sera's prices moved. All open offers cancelled and reposted at the new prices. Free to do.

What to expect after you go live.

From the moment the agent starts quoting, here's the natural cadence — and why a quiet first day is not a broken agent.

0 min
The agent starts rotor

rotor reads the config your agent wrote — your stablecoins, currencies, and spread — verifies your wallet, syncs the server clock, and prepares the first cycle.

~1 min
First quotes posted on Sera's book

A single VL batch of bids goes up — one bid per currency, all sharing your stablecoin budget. Your terminal lists every placement. You haven't earned anything yet — that's normal.

within a day
First fill

Someone hits one of your bids. Your USDC converts to that currency. The AI agent immediately posts the closing ask at the profitable price, and you're now mid-trade.

within a day
First completed round-trip

The closing ask fills. Currency converts back to your stablecoin at a profit — usually a few cents on a $1,000 budget. The log (and Telegram, if enabled) records it, and the agent reposts for the next one.

Hasn't filled after a day? That's fine.

Either the markets are quiet (weekend, off-hours for your pairs) or your chosen spread is wide and nobody has crossed it yet. The agent is still working — it's a market maker, it waits.

And a slow market still pays: even one 0.77% round-trip a month adds up to roughly 9% a year. Pick more currencies, or wider-spread pairs, and the cadence picks up fast.

What the agent actually does, every ~5 minutes.

This is rotor's live run loop — the open-source script your prompt sets up. Sera enforces a cancel cooldown on resting orders; rotor's default 305-second cycle leaves a settlement buffer before re-quoting.

01
Fetch a reference mid-price for every pair

Each currency gets its rate from the source you chose — Wise, the ECB, the Fed's H.10, Bank Negara Malaysia, or the MAS. No price feed from Sera is trusted blindly; the reference is independent.

GET wise · ecb · fed · bnm · mas independent reference rates
02
Build one bid and one ask at your spread

Quotes sit at your fixed spread from the reference mid — the risk level you picked at setup. One bid, one ask, per market.

bid = mid × (1 − fixed_bps)  ·  ask = mid × (1 + fixed_bps)
03
Poll fills on the tracked quote set

rotor checks which of its resting orders filled since last cycle. A filled bid means it now holds that currency — so the next quote set tightens the opposite side to the return spread, priced to rotate the inventory back.

after a fill: opposite side moves to mid × (1 ± return_bps)
04
Cancel old placements — when the guard permits

Tracked placements from earlier cycles are cancelled once the local cancel guard allows it, so the agent never trips Sera's cancel cooldown chasing every tick.

POST /orders/cancel EIP-712 signature, signed on your machine
05
Place the fresh quote set — VL where eligible

The new quotes go up. Orders that spend the same stablecoin are grouped into one Virtual Liquidity batch — a single budget backs all of them at once instead of locking funds per order.

POST /orders/vl/batch siblings grouped by the stablecoin they spend
06
Sleep, repeat — and stay silent

Then it waits out the rest of the 305-second cycle and goes again. Nothing phones home: logs stay on your machine, and the only outbound message is the optional Telegram alert you configured — sent to you, nobody else.

LOCAL your terminal · optional Telegram no analytics, no tracking, no phoning home
The agent never takes — it only makes. Every order is a limit order resting on Sera's book, and every one of them is signed by your wallet, on your machine. Stop the script and the quotes stop with it.

Why this works, and where it doesn't.

Honest framing — the edge is real, but it isn't free money. Here is the structure of both.

Why the edge exists

  • Spreads vary widely by currency pair — razor-thin on majors, much wider on less-traded pairs (often over 1%). You choose the spread you quote, and the wider the pair, the more each round-trip earns.
  • Sera's shared capital design lets the same stablecoin earn against every currency you pick at the same time — far harder-working than a regular trading account.
  • Updating quotes is free, so Earn follows the reference rate instantly without paying any fees.
  • Running 24/7 means trades happen across every time zone, not just during local hours.
What this has looked like, across all AI agents, last 90 days
Best single day +0.7%
Best single week +2.1% (Sep 18 post-FOMC chop)
Median weekly return +0.42%
Median 90-day return +6.1%
Read this as a typical run, not a forecast — real numbers from the aggregate. Markets change.

Where the risk is

  • Mid-trade risk — between step 1 and step 2, you're holding a currency. If the price moves against you before step 2 happens, that trade earns less or loses.
  • Trending markets — when a currency moves one direction hard, only one side trades, leaving you holding the currency while waiting for prices to swing back.
  • Stopping mid-trade — if you stop while a trade is in progress, you keep the currency you were holding until you sell it back yourself.
  • How this is handled — many currencies running in parallel spread out the risk. A slow trade on one currency is offset by finished trades on the others.
What this has looked like, across all AI agents, last 90 days
Worst single day −1.4%
Worst single week −2.8% (May 12 yen carry unwind)
AI Agents with at least one losing week 37%
AI Agents that ended a 90-day window positive 94%
Read this as a floor, not a forecast — real numbers from the aggregate. Past performance isn't a guarantee.

Open-source software. Use it, fork it, or build your own.

Earn is free, open-source code. We built and released it so more people can earn from FX without having to write trading software themselves.

github.com/sera-cx/rotor

The full source code of rotor — the market maker your prompt sets up — is public. Read it, audit it, run it on your own machine, or fork it.

View the repo →
docs.sera.cx

Sera itself is permissionless. Anyone can build their own trading AI agents or yield strategies on top — Earn is just one example of what's possible.

Read the docs →
How the permissions work

rotor gets one ability only: post and cancel quotes on Sera with the stablecoins you put up. It cannot move money to another address and cannot do anything you didn't sign for — every order is signed by your wallet, on your machine. Withdrawing always needs your own signature, and stopping the script stops the quotes. Any agent you build yourself works the same way — that's how Sera is designed.