New kids on the block: Currency Futures, Islamic Banking and SpottoFutures Arbitrage
Broadening Horizons: Other Markets
1. Basics of Currency Futures
======================
Currency futures are the standardized, transferrable version of currency forwards. Currency forward contracts lock in the price at which an entity can buy or sell a currency on a future date. But how is a currency futures priced?
A spot forex rate is the rate at which two currency amounts are equal : for example, 10000 USD are (at a moment, "spot") equal to 1.230.000 JPY at 123 JPY/USD rate. Since the time value of a currency is given by the interest, the currency futures rate which equalizes them incorporates the differential rate.
Suppose we have two currencies, A and B, both equal now, as A/B = 1 spot rate.
A interest in 20%, while B interest is 5%
so there is a rate which equalizes 1.20 with 1.05 , and that rate is 0.875 , as 1.20 x 0.875 = 1.05
Hence the futures formula:
In our case, the spot rate didn't had any effect, since it was 1.
We must know 2 elements:
1. The interest rates
2. Futures expiry dates
1. The interest rates
That's an easy one. A reliable source for this can be found here on FXStreet .
2. Futures expiry dates
This can be done in a few ways:
a. Download WHC's MetaTrader. Then point to Market Watch, right click, (Show All if they are not already) , Show All, then Properties, then expand the Currencies top folder.
b. Directly from CME website (see below)
Of course, when you use the formula you must calculate the time to expiry as precise as possible , because it influences the interests put inside the formula.
For example, if we have 90 days to expiry, that 1+C2 Interest Rate % from the formula transforms in 1 + (0.5/100) / 365 x 90 = 1.001232876
Almost forgot: depending on the strategy you'll decide to use, it may be useful to check when the next meetings of the central banks officials will take place and also what's the expectation about the interest rates.
2. SpottoFutures Arbitrage
=====================
Since the futures are linked to the spot by the interest to expiry, and futures at expiry equalizes the spot (this equalization is a feature of all futures contracts that have a spot counterpart) there are two possible spottofutures arbitrages:
a. exploiting the difference between spot and futures (often called basis) and cashing it in while paying interest on spot position (the "Covered Interest Arbitrage" in finance books) ; or, depending on the broker's feed , the reverse : paying the basis and getting interest on spot position (which is ockward and not likely to happen for real, but never say never)
b. exploiting missalignments of the converted futures to the spot (or of the real futures to the calculated futures , which is the same thing) using interest rates.
However, type b. arbitrage is not as seldom as that picture lets to be understood. You don't have to be a genius to see that a misprice happens not only when futures is on the wrong side, but also when futures is not where it should be: We could also discount (let's call it like that the conversion of futures to spot, even if some futures are discounted, e.g. USDJPY) the futures and see how far is from the real spot. We should also have a neat time conversion on hand to have a continuous time, not a jumpy one (e.g. not the time that decreases by one day when a day passes, but a time in real number format). The discounted futures is calculated using the reversed upper formula (get the spot from the equation to find it out).
Discounted futures to spot basis fluctuation
The overlay indicator : DiscountedFutures
The window indicator : DiscountedBasis
As you can see, with 56 pips in magnitude of arbitrage windows, you could cover the 4 pip costs of arbitrage (2 pips on EURUSD, 2 pips 6E equivalent commission in pips). But is MetaTrader fast enough? However, with a pretty superior account trading at 1 pip spread it might work smoothly... With a regular case of EURUSD  6E you could, for example, when DiscountedBasis has a higher value, sell the futures and buy the spot, and close when it reaches a lower than regular value...
Now let's return to the a. arbitrage type ("Covered Interest Arbitrage")
The picture below depicts the basis and swaps consuming reciprocally (in the normal swap rate regime), while the new, swapfree accounts based on brokers arrangements with islamic banks provide new, outstanding arbitrage opportunities:
Parameters : Account equity about 450 USD; Account leverage about 200 ; Margin usage = 90% ;
from Futures.mq4 script
This example was run on WHC (although WHC doesn't offer swap free accounts).
How are the calculations done?
Below is a picture with the implementation made by Beaverhea Financial. Although it's an untrustable broker, the implementation is useful for calculus and demo.
The real currency futures implementations on CME
The ones that can be found with brokers are:
CME Euro FX
CME Australian Dollar
CME Canadian Dollar
CME British Pound
CME Japanese Yen
CME Swiss Franc
WHC comes also with these two, but they don't seem to work properly:
CME EC/JY Cross Rate
CME EC/SF Cross Rate
Now the arbitrage is pretty simple to understand if it's about EURUSD and 6E. Provided that EURUSD's lotsize is 100K and 6E's lotsize is 125K, the ratio : EURUSD traded lots / 6E traded lots = 5/4, as 5 x 100K = 4 x 125K to equalize pip movements.
But what if it's a reversed futures, such as USDJPY to 6J ?
This is a calculus example, using the Impeccable Hedge algorithm that powers FPI, Intercross Arbitrage and Swap Arbitrage
We consider:
USD  5.25%
JPY  0.25%
USDJPY right before old futures expiry: 123.00
6J right before old futures expiry = 100/123.00 = 0.8130
New futures, in the first moments, with expiry in 3 months:
Actually tested the formula on june 15 data and it was accurate on a range of 6 pips
(of course I used 92 days period instead of dividing to 4)
Prepairing the hedge : USDJPY spot > transformed USDJPY futures : Sell USDJPY, Sell 6J
Sold 100000 (1 lot) USDJPY @ 123
Sold 100000 USD
Bought 12300000 JPY
Sold 12300000 (0.98 lots) JPYUSD (6J) @ 0.8232 (/100)
Sold 12300000 JPY
Bought = 101253.6 USD
That 1253.6 must be the embedded interest in the futures.
Supposing now USDJPY=127 on expiry ; 6J is right reversed = 0.7874
Sell 100000 USDJPY @ 123 > (1 pip = 10*100/127 = 7.87 USD) : 400 pips x 7.87 = 3148 USD
Sell 1230000 6J @ 0.8232 > (1 pip = 12.3 USD) : 358 pips x 12.3 = 4403.40 USD
Result = 1255.40
Supposing now USDJPY=119 on expiry ; 6J is right reversed = 0.8403
Sell 100000 USDJPY @ 123 > (1 pip = 10*100/119 = 8.40 USD) : 400 pips x 8.40 = 3360 USD
Sell 1230000 6J @ 0.8232 > (1 pip = 12.3 USD) : 171 pips x 12.3 = 2103.30 USD
Result = 1256.70
As you see, arbitrage holds no matter the direction. And if the regime is swap free, pocket all of it... about 200K USD in traded volume, this would be tradable with a 500 USD account at about 450 leverage! This means more than double!
Of course it is advisable to review articles on central banks monetary policies especially if their meetings happen close to the beginning of futures. Create scenarios about what might happen if interest differential enlarges. Calculate the damage done to the equity, add 2030 pips or more of market "missalignments" and see at what leverage it is sustainable (also include here the issues about not trading microlots  see the Intercross Arbitrage article). If you're heavy leveraged and faint hearted, better close positions before central bank meetings, and , most important, don't EVER forget to close positions before expiry or your account will likely be blown up due to violent futures shift on expiry change (or hopefully you'll just lose the profit!) . You could even test broker's vigilance by reversing positions with a day before expiry in order to make the entire profit on the expiry shift moment... Whatever, the method is a great progress from leaving the forex madness for a slow paced and profitable trading with controllable risks!
3. Warnings about Attachments
========================
Be very careful about how you set up DiscountedFutures and DiscountedBasis, especially with the interest rates and the expiries!
Look close at the SwapFree parameter when running Futures.mq4 script!
And be extremely careful when running on real accounts! Measure ten times and cut once! The script supposes all margin requirements are the same, however with some brokers margins for futures are bigger. Experiment first on demo.
Attached Files

futures.mq4 (17.08KB)
downloads: 552 
DiscountedFutures.mq4 (5.06KB)
downloads: 428 
DiscountedBasis.mq4 (5.25KB)
downloads: 384
Very good article and good sourcecode. I'm going to have a deeper look in it, as currently I'm working on the same thing, as you know.
Keep in touch, Andi.