You've found three Binance markets that form a closed currency cycle, and a quick cross-price calculation shows a gap. The open question is whether that gap survives the actual bid and ask sides, three fees and three books that never update at the same instant.
At 3Jane, market making, arbitrage and liquidity rebates sit at the core of our trading strategies, and this is how we evaluate a route's executable economics.
Our answer is a maker-led triangle. We rest one passive order, price it from the executable cost of two taker hedges, and restore balances after a fill. This article walks through the June 2022 research behind that design. It uses the APE/BUSD, APE/USDT and BUSD/USDT route and synthetic quotes you can check by hand.
The APE route and the job of each leg
In June 2022 we studied one specific triangle. Each leg has a distinct role in the cycle:
- Leg 1, APE/BUSD: the maker leg. A resting limit order that fills when someone trades against it.
- Leg 2, APE/USDT: the first hedge. It converts APE into USDT or USDT into APE.
- Leg 3, BUSD/USDT: the second hedge. It converts between BUSD and USDT and closes the cycle.
The route works because the three markets return inventory to its starting asset. If the maker buys APE with BUSD, the hedges turn that APE into USDT and the USDT back into BUSD. If the maker sells APE for BUSD, the hedges run the other way. Either direction ends with the same currencies we started with, plus or minus the price difference and costs.
The research loaded market logs from June 11, 2022. It also queried order and trade history for all three markets across June 11 and 12. Those queries supported analysis of our trading history; the figures below are price-condition counts from the research series, not realized fills or route returns.
Finding closed routes in a universe of pairs
Before you can price a triangle, you need to find it. Our route utility searches the full list of exchange pairs in three stages:
- Group pairs by a shared currency, since two legs of every triangle share one currency.
- Within each group, enumerate every two-leg combination. Each combination leaves two remaining currencies.
- Check whether a third pair connects those remaining currencies. That closing market completes the triangle.
The closing check accepts either orientation of the third pair, so X/Y and Y/X both count. That matters because each exchange chooses its own base/quote order, which may run opposite to the order your cycle needs. Each match comes back as a record holding the shared currency and the three markets.
From that output, the research selected the APE routes. It then swapped the first two legs so the record matched the order we traded, with APE/BUSD as the maker leg. The utility finds the cycle; choosing which leg rests and which legs hedge is a separate trading decision.
Deriving executable cross-prices
A cross-price built from midpoints or same-side quotes tells you where the market roughly sits. It doesn't tell you what you can actually trade. For each direction, the side you use on every hedge leg follows from whether you pay or receive that currency. The two subsections derive both synthetic prices for APE/BUSD, then apply them to illustrative quotes.
Buying APE on the maker leg
When the maker leg buys APE, the hedges have to unwind that APE back into BUSD:
- Place a limit buy on APE/BUSD. You receive APE and pay BUSD.
- Sell the APE at the APE/USDT bid. You're selling, so you hit the bid and receive USDT.
- Buy BUSD at the BUSD/USDT ask. You're paying USDT, so you lift the ask.
That gives the executable synthetic bid: APEUSDT_bid / BUSDUSDT_ask. It's the best price at which the two hedge markets will take APE off your hands and return BUSD. Your maker bid has to sit below it.
Selling APE on the maker leg
The sell route mirrors the buy route:
- Place a limit sell on APE/BUSD. You give up APE and receive BUSD.
- Sell the BUSD at the BUSD/USDT bid to get USDT.
- Buy APE at the APE/USDT ask with that USDT, restoring the APE you sold.
The executable synthetic ask is APEUSDT_ask / BUSDUSDT_bid. Now you pay for APE and sell BUSD, so the sides flip. Your maker ask has to sit above this price.
Both directions with illustrative quotes
For the example, assume two invented hedge-market quotes:
- APE/USDT: bid 5.00, ask 5.01
- BUSD/USDT: bid 0.999, ask 1.001
The synthetic APE/BUSD bid is 5 / 1.001 = 4.995004995. The synthetic APE/BUSD ask is 5.01 / 0.999 = 5.015015015. Using the wrong sides would give you a narrower synthetic spread than the hedge books will honor. That's exactly how a route looks profitable on paper and loses money in execution.
What the spread has to pay for
The gap between your maker quote and the synthetic price is the triangle's edge. Fees, impact and adverse movement all draw on that edge before any gain remains, so the quote has to leave room for each of them.
Costs that consume the edge
These costs come out of the edge on every completed triangle:
- the maker cost or rebate on leg 1
- the taker fees on both hedges
- slippage and market impact on the hedges
- price movement between the maker fill and the hedges
When these costs exceed the edge, the triangle loses money even when the quotes look favorable. The gain you want is a separate choice: it sets how much additional margin to add to the quote beyond those costs. A positive return below that target is still a positive return.
A maker rebate and two taker hedges
Making leg 1 passive changes the fee structure. The resting order earns a maker rebate, so only the two hedges pay taker fees. The research assumed a -0.4 bp maker rebate on leg 1 and used the fetched taker fees for legs 2 and 3.
The notebook compounds the three fractional costs as 1 - (1-f1)(1-f2)(1-f3), because each fee applies to what's left after the previous leg. With illustrative fees of -0.4 bp, 2 bp and 2 bp:
(1 - f1) = 1.00004(1 - f2)(1 - f3) = 0.9998 × 0.9998 = 0.999600041 - 1.00004 × 0.99960004 = 0.0003599759984
That's about 3.59976 bp, slightly below the 3.6 bp you'd get by adding the fees. Slippage and impact sit on top of this number; the fee formula doesn't include them.
Applying the 7 bp quote offset
The research compared two quoting ideas: improving the best maker-book price by one tick, or quoting at a fixed offset from the hedge-derived price. The analysis used the fixed offset, with 7e-4, or 7 bp. On our illustrative buy side, that gives 4.995004995 × (1 - 0.0007) = 4.991508492 BUSD before exchange price rounding.
Following one APE through the buy route shows where the 7 bp goes. You pay 4.991508492 BUSD, sell the APE at 5.00 for 5 USDT, then buy 5 / 1.001 = 4.995004995 BUSD. The gross difference is 0.003496503 BUSD, about 7 bp of the synthetic bid. Roughly 3.6 bp goes to fees, leaving about 3.4 bp for impact, movement and gain.
The sell side mirrors it. An illustrative ask of 5.015015015 × 1.0007 = 5.018525526 BUSD, sold into BUSD/USDT at 0.999, yields 5.013507 USDT. At the 5.01 ask, that buys back about 1.0007 APE. Neither walk-through includes impact or a moving market, which are the costs a real fill exposes.
Turning asynchronous books into a research series
Three order books update independently. To compare them at all, you need a common timeline. How you build that timeline decides which short-lived price conditions you can still see.
Aligning three quote streams
The research built the series in three steps:
- Take the union of timestamps from all three books.
- Drop duplicate timestamps.
- Forward-fill each book's quotes onto that union.
We infer that the union was chosen over a coarse resample because it keeps every book event. Resampling to a fixed interval would merge or skip brief conditions. The trade-off is staleness: at any row, one leg may be fresh while another carries an older quote. The illustrative timeline below marks carried-forward values with an asterisk.
t (ms) event APE/USDT BUSD/USDT synthetic bid
0 APE/USDT 5.00 / 5.01 0.999/1.001* 4.995004995
2 BUSD/USDT 5.00 / 5.01* 0.999/1.001 4.995004995
5 APE/BUSD 5.00 / 5.01* 0.999/1.001* 4.995004995
7 APE/USDT 5.02 / 5.03 0.999/1.001* 5.014985015
At 7 ms, the new synthetic bid pairs a fresh APE/USDT quote with a BUSD/USDT quote last seen at 2 ms. Quote freshness stays an execution concern, even when the research series looks continuous.
Counting threshold runs
With the 7 bp threshold applied, a counting function marked the end of each run of consecutive true observations. It also counted a run still open at the end of the data. The saved output shows 4,030 bid-side and 4,283 ask-side episode endings.
Each count marks a price condition in the research series. Whether a condition becomes an executed triangle depends on:
- the maker order's queue position
- available market size
- the asynchronous path of the two hedges
- the costs above
The research left open questions about timing and how often execution should occur. Those stayed research annotations rather than measured engine results.
From maker fill to restored balances
In the research, a triangle is a price condition. In our trading system, it becomes a balance-management problem. The engine treats a maker fill as a target imbalance to correct, not as the first step of a scripted three-leg trade.
How the engine restores target balances
Our limit-led arbitrage strategy, running in our Chronicle-based execution engine, quotes the maker leg while target balances are satisfied. After a fill pushes a balance away from its target, the strategy withdraws the maker quote and requests restoration on the hedge legs. Its test fixtures use BTC/USDT, BTC/BUSD and BUSD/USDT, the same three-market shape as the APE route with BTC in place of APE.
Our reasoning, inferred from how the route operates: the passive leg improves the fee structure through maker incentives, while the active hedges close the currency cycle. Those hedges also carry the timing and execution costs. Withdrawing the quote during restoration keeps further fills from stacking on an unresolved imbalance.
Two price conventions to keep apart
The engine's generic cross-price functions build bid and ask cross-prices from same-side leg ratios. The research derivation above uses opposite sides for executable conversion. Read each convention on its own terms. Our June 2022 opposite-side derivation gives the executable price of each hedge path, while the engine's same-side ratios serve as its own pricing inputs.
Applying this to your own route
If you're evaluating a triangle of your own, the research gives you a sequence to follow before trusting any opportunity count:
- Enumerate closed routes, accepting either orientation of the closing pair.
- Decide which leg rests and which legs hedge.
- Derive each synthetic price from the side you'd trade on every hedge.
- Compound the fees, then add impact and movement on top.
- Align books on an event union, and treat carried-forward quotes as possibly stale.
Then measure fills, because threshold counts only tell you where to look. For how this route fits alongside quoting on a single book, read our explanation of market making and arbitrage, and see the other approaches in our strategies collection.