What Is Triangular Arbitrage In Forex?
Triangular arbitrage in forex is a three-currency calculation that checks whether a quoted cross rate is out of line with the rate implied by two other connected currency pairs. The textbook loop starts with one currency, moves through a second currency, then a third currency, and finally returns to the starting currency.

A frictionless theoretical mismatch exists when a consistently oriented three-rate loop would return more than the starting currency. Whether that mismatch is available at executable bid and ask prices is a separate question; actual execution can introduce slippage, latency, incomplete fills, and other costs.
On a retail trading platform, triangular arbitrage should not be assumed to work like physical currency exchange at a bank or interbank desk. The trader must check how pair positions, margin, order handling, execution, and platform rules actually work before treating a three-currency loop as tradeable.
Triangular Arbitrage vs Forex Arbitrage
Forex arbitrage is the broader category. It reviews temporary pricing differences between currencies, pairs, venues, or related instruments. Triangular arbitrage is one specific type of forex arbitrage that focuses on a three-currency loop and compares a quoted cross rate with an implied cross rate.
For the broader category, including cross-broker price gaps, stale-quote caution, incomplete fills, and other arbitrage types, use the full forex arbitrage guide. This page focuses on cross-rate calculation and the execution mechanics specific to a three-currency loop.
The Triangular Arbitrage Formula
The basic loop formula is:

Every leg rate must have units of currency received per unit of currency paid, so the units cancel around the loop. A single-price quote used in reverse is inverted:
For consistently oriented quotes, such as B units per A and C units per B, the implied cross rate is:
For example, the mid-price implied EUR/GBP from EUR/USD and GBP/USD is EUR/USD ÷ GBP/USD, because the shared USD units cancel. With two-sided executable quotes, reversing a pair also reverses which side is used:
Compare like-for-like rates at the same quote time. A mid-price discrepancy establishes only a theoretical comparison; executable bid/ask paths, available size, and order handling determine whether the calculation could be implemented.
Quoted Cross Rate vs Implied Cross Rate
A quoted cross rate is the rate shown for a currency pair, such as EUR/GBP. An implied cross rate is the rate suggested by two other connected pairs, such as EUR/USD and GBP/USD.

For example, EUR/USD divided by GBP/USD gives an implied EUR/GBP rate when those pair quotations share USD as the quoted currency. A difference between its midpoint and the direct EUR/GBP midpoint is worth investigating, but overlapping executable bid/ask ranges can leave no profitable conversion loop.
| Term | Meaning | Why it matters |
|---|---|---|
| Quoted cross rate | The direct market quote for the cross pair. | This is the rate the trader compares against the implied value. |
| Implied cross rate | The rate calculated from two connected pairs. | This gives a synthetic reference constructed from two related pairs. |
| Mismatch | The difference between quoted and implied rates. | Compare the correctly oriented executable sides, not just the difference between midpoints. |
A Simple Triangular Arbitrage Example
The example below is hypothetical and does not represent live FXGlory prices or a trade recommendation. It uses clean rates first so the calculation is easy to follow.

| Step | Hypothetical rate | Calculation | Result |
|---|---|---|---|
| Start | — | Starting balance | 10,000.00 USD |
| USD to EUR through EUR/USD | EUR/USD = 1.1000 | 10,000 ÷ 1.1000 | 9,090.91 EUR |
| EUR to GBP through EUR/GBP | EUR/GBP = 0.8600 | 9,090.91 × 0.8600 | 7,818.18 GBP |
| GBP to USD through GBP/USD | GBP/USD = 1.2800 | 7,818.18 × 1.2800 | 10,007.27 USD |
Using unrounded intermediate amounts, the final balance is approximately 10,007.27 USD: a hypothetical gross difference of 7.27 USD. The next example keeps these same three mid-rates and applies bid/ask spreads so the effect can be compared directly. This simplified loop assumes actual currency conversions; a retail trading account may instead hold margined pair positions.
Bid/Ask Example: Why The Clean Profit Can Disappear
The following hypothetical quotes have the same midpoints as the preceding example (EUR/USD 1.1000, EUR/GBP 0.8600, GBP/USD 1.2800). The intentionally wider GBP/USD bid/ask spread illustrates how costs can erase the clean gain. For the quote mechanics, review bid and ask price in forex.

| Pair | Bid | Ask | Relevant action in this loop |
|---|---|---|---|
| EUR/USD | 1.0998 | 1.1002 | Buy EUR with USD, so use the ask. |
| EUR/GBP | 0.8598 | 0.8602 | Sell EUR for GBP, so use the bid. |
| GBP/USD | 1.2794 | 1.2806 | Sell GBP for USD, so use the bid. |
| Step | Executable side used | Calculation | Result |
|---|---|---|---|
| Start | — | Starting balance | 10,000.00 USD |
| USD to EUR | EUR/USD ask 1.1002 | 10,000 ÷ 1.1002 | 9,089.26 EUR |
| EUR to GBP | EUR/GBP bid 0.8598 | 10,000 ÷ 1.1002 × 0.8598 | 7,814.94 GBP |
| GBP to USD | GBP/USD bid 1.2794 | 10,000 ÷ 1.1002 × 0.8598 × 1.2794 | 9,998.44 USD |
Retaining full precision between legs, 10,000 USD becomes approximately 9,998.44 USD, a 1.56 USD loss before any separate commissions or slippage. The displayed 9,089.26 EUR and 7,814.94 GBP are rounded for reading; the calculations use unrounded values. Spread is already reflected in the selected ask and bid rates and must not be subtracted a second time.
Which Bid Or Ask Price Should You Use?
The quote side depends on what each leg is doing. The trader should map the loop before calculating the result.
| Action | Quote side usually used | Reason |
|---|---|---|
| Buying the base currency of a pair | Ask | The ask is the price at which the base currency is offered. |
| Selling the base currency of a pair | Bid | The bid is the price at which the base currency can usually be sold. |
| Using a pair in the reverse direction | Inverse ask becomes bid; inverse bid becomes ask | Use 1/original ask when obtaining the inverse bid and 1/original bid for the inverse ask. |
| Comparing mid-prices only | Not enough | Mid-prices can make a non-tradeable gap look attractive. |
Check both loop directions. With the bid/ask quotes above, the reverse USD → GBP → EUR → USD path is 10,000 ÷ 1.2806 ÷ 0.8602 × 1.0998 ≈ 9,983.91 USD, before any additional fees or slippage. Both paths use their own executable sides. For general cost information, review spread information.
Why Retail Triangular Arbitrage Is Difficult
A three-currency conversion calculation assumes access to all three exchange steps at the quoted sizes and rates. Retail access may instead involve sequential orders, margined positions and no atomic three-leg execution.

Confirm what each platform order actually opens or closes, how margin is calculated, and whether all required instruments and order types are available. Screen prices do not establish guaranteed depth or simultaneous fills.
- The mismatch may be smaller than the combined spread of the three legs.
- Quotes can update before the loop is completed.
- Displayed prices may not represent enough liquidity for the intended size.
- Sequential orders expose the loop to changing prices between execution steps.
- Platform or account rules may not support the assumed workflow.
- A method that depends on stale prices, delayed feeds, or platform errors should be rejected.
Automation, EAs, VPS, And Platform Caution
Algorithms can collect synchronized bid/ask quotes, test both loop directions and apply predefined rejection rules more quickly than manual observation. An Expert Advisor can implement monitoring or supported execution workflows, but it does not create an edge by itself.
Check whether the platform supports the required order types, instruments, synchronization and partial-fill handling. Backtested quotes, simulated orders and live multi-leg fills are different evidence; the system must also specify what it does if a step is rejected.
Before reviewing automated execution, check FXGlory trading platforms, trading account conditions, and the exact failed-leg response. A VPS can help with uptime and connection stability for eligible workflows, but it does not guarantee arbitrage profitability or execution.
Costs That Can Remove The Opportunity
In a hypothetical frictionless comparison, a 0.02% gross mismatch would be smaller than combined trading costs of 0.03%. In an executable calculation, the spread cost is already captured by trading at bid and ask; account separately for commissions, modeled slippage and any other costs not yet included.
| Cost or risk | How it damages the loop | Review before trading |
|---|---|---|
| Spread | The buy/sell price difference affects each conversion. | Use the relevant bid/ask side once; do not subtract the spread twice. |
| Slippage | The fill happens worse than the quote used in the calculation. | Stress-test the loop with worse prices. |
| Latency | The quote changes before the order reaches the market or platform. | Reject setups that require stale quotes to work. |
| Liquidity | The displayed price may not support the intended size. | Review tradable size, not only displayed rate. |
| Rejected or partial fills | The loop becomes incomplete and directional. | Define the failed-leg rule before entry. |
| Margin and leverage | Multiple legs or failed legs can create account pressure. | Check margin and leverage conditions before exposure. |
| Swap or rollover | Costs may apply if exposure remains open longer than expected. | Do not assume the loop will close immediately. |
Before any live exposure, review margin through the FXGlory margin calculator and check FXGlory leverage conditions. High leverage can amplify losses if a theoretical loop turns into open market exposure.
One-Leg Fill Risk
Incomplete execution can transform an intended closed conversion loop into unintended currency exposure. The outcome depends on which orders filled, at what sizes and prices, and how outstanding positions are closed or offset. The response must be planned before sending an order.

Record a response for each operational failure:
- What happens if the first leg fills but the second quote changes?
- What happens if the second leg fills with slippage?
- What happens if the third leg is rejected?
- What maximum loss or price movement forces an exit?
- How will the result be recorded after the trade?
No-Arbitrage Condition
No arbitrage is a market-pricing condition: under the specified assumptions, there is no available self-financing, riskless trading sequence with a positive payoff and no initial net investment. In a frictionless, simultaneous three-currency conversion, consistently oriented exchange rates around the loop multiply to 1. With executable bid and ask prices, no cost-free profitable cycle exists when neither conversion direction returns more than its starting amount at the relevant size.
Quoted and synthetic mid-rates need not be identical when bid/ask ranges overlap. Trading activity can put pressure on an executable discrepancy, but its magnitude and persistence depend on actual quotes, liquidity and market conditions; there is no fixed speed at which it must disappear. An apparent profitable calculation is not itself a guaranteed arbitrage if the legs cannot be locked in simultaneously.
Triangular Arbitrage vs Carry, Hedging, And Correlation
Triangular arbitrage should not be mixed with other strategy labels.
- It is not carry trade forex, because the main idea is cross-rate consistency, not interest-rate differential or swap income.
- It is not forex hedging, because a hedge is designed to reduce or reshape exposure, not complete a three-rate loop.
- It is not forex correlation strategy, because correlation reviews movement relationships, not a quoted-vs-implied cross-rate mismatch.
Covered interest arbitrage is different again: it compares interest rates with spot and forward exchange rates rather than comparing three spot currency pairs. Use each label for its own pricing relationship instead of assuming a hedged, interest-bearing, or correlated position forms a triangular loop.
Triangular Arbitrage Decision Sequence
Use this sequence to reject weak setups before any live order is considered:

- Choose three currencies, list all necessary pairs, and map the forward and reverse loops.
- Calculate the implied cross rate from correctly oriented quotes and compare it with the direct quote.
- Calculate both complete loops with executable bid/ask sides and unrounded intermediate amounts.
- Deduct only additional costs not already embedded in those quotes, such as commissions and modeled slippage; do not subtract spread again.
- Check whether executable size, current quote timing and liquidity support every leg.
- Confirm platform order behavior, margin requirements and account rules.
- Specify what to do if an order partially fills, fails or the price changes during execution.
- Reject any outcome that relies on stale prices, unsupported workflows or assumed guaranteed simultaneous fills.
No-Trade Conditions
Skip the idea when any of these conditions appear:
- Neither executable loop direction produces a positive amount after separately modeled costs.
- Quotes are out of date or come from unsynchronized feeds.
- Displayed sizes do not support the required conversions or margin is insufficient.
- Account terms, order types or platform behavior do not support the planned sequence.
- There is no predetermined way to control exposure from an unfilled or partially filled leg.
- The apparent edge relies on a platform error, delayed price or guaranteed-fill assumption.
Testing And Review Before Live Trading
For each test, record synchronized quote timestamps, quote sources, pair orientation, both loop directions, executable bid/ask sides, displayed or available size, expected loop result, any commission and slippage assumptions, actual fill prices, rejected or partial orders, margin effects, and the realized result if live execution occurred. Keep hypothetical and simulated outcomes separate from verified fills, and specify how missing quotes or incomplete loops were handled.
Review whether each attempted loop completed or left directional exposure, and whether execution differed systematically from the quoted calculation. Historical mid-price discrepancies alone are not evidence of a live executable edge.
For broader account-level controls, review forex risk management rules and keep the method inside a written forex trading system rather than relying on a price gap alone.
Frequently Asked Questions
What is triangular arbitrage in forex?
Triangular arbitrage examines three linked currency pairs in a closed conversion loop and compares a quoted cross rate with the implied rate from the other two. A frictionless price inconsistency is a theoretical signal; executable bids, asks and fill conditions must be checked separately.
What is the triangular arbitrage formula?
Final amount = starting amount × leg 1 conversion rate × leg 2 conversion rate × leg 3 conversion rate, with every rate oriented as currency received per currency paid. For example, implied EUR/GBP = EUR/USD ÷ GBP/USD. For two-sided quotes, inverse bid = 1/original ask and inverse ask = 1/original bid.
How do you calculate triangular arbitrage with bid and ask prices?
For a quoted base/quote pair, selling the base uses its bid and buying the base uses its ask. To convert in reverse, use the reciprocal of the applicable executable side. Calculate both directions with unrounded amounts, then subtract only costs not already in the bid/ask rates.
Is triangular arbitrage risk-free?
In a frictionless model with simultaneous enforceable conversions, arbitrage means a riskless profit. Actual retail orders can be delayed, slipped, partially filled, rejected or subject to changing liquidity and margin, so a calculated positive loop is not a guaranteed risk-free trade.
Can triangular arbitrage be done manually?
Manual execution is generally difficult because each of three linked orders may require a fresh quote and time to fill. A calculation can still teach cross-rate consistency, but that does not establish a practical manual trading method.
Can an EA or algorithm do triangular arbitrage?
An EA can monitor synchronized quotes, check both conversion directions, and enforce supported order and failure rules. It cannot guarantee price availability, simultaneous fills, or profitability; platform permissions and actual execution must be verified.
What is failed-leg risk?
Failed-leg risk arises when an intended three-part sequence remains incomplete because an order is rejected, delayed or only partially filled. The trader can then hold unintended currency exposure and needs predefined offsetting or exit procedures.
What is the no-arbitrage condition in forex?
Under stated pricing assumptions, no-arbitrage means there is no available self-financing, riskless positive-payoff opportunity. Frictionless, correctly oriented rates around a closed three-currency loop multiply to one. With bid/ask quotes, neither executable loop direction should generate a profit at the assumed size and costs; different mid-rates alone do not prove arbitrage.
Related Contents
Practice Before Trading Live
Use a free demo account to test your strategy, risk rules, and execution process before placing a real-money trade.
Open Your Account