However, it turns out that one can find - although rarely - perfect arbitrage opportunities even on the most liquid currency crosses.
For example, I've analyzed intraday data (with 10 mins. frequency) for EURJPY, USDJPY and EURUSD for the period of March 2nd, 2009 - August 20th, 2010. That gives some 54,700 datapoints for each of the crosses.
I defined a perfect arbitrage opportunity for these three crosses, as a situation when difference between EURJPY and USDJPY*EURUSD exceeds 0.1 yen. Then one would be able to sell short EURJPY and at the same time buy USDJPY together with EURUSD (or vice versa) and produce risk free return after adjusting for total spread of 0.1 yen.
In that period I've found 25 instances (out of 54,703 quotations, or 0,0457%) when arbitrage opportunity appeared:
Nevertheless, some of them were substantial - the largest giving 1,31% risk free return!
Visualization of the difference between EURJPY and USDJPY*EURUSD shows, that the arbitrage gap is very rare phenomenon indeed:
The difference between crosses is concentrated in a very narrow range that hardly ever creates arbitrage opportunities. Still, the distribution has very long tails (or at least one of them):
The number of arbitrage opportunities increases noticeably (to 6,42% of all analyzed quotations), as well as the rate of potential risk free return (note: total spread set at 0.105 zł):
Clearly, there still exist perfect simple arbitrage opportunities on forex. It's possible to exploit them using algorithmic trading. They are rare and often they generate low individual returns. But they are risk free.
Data source: stooq.com