Welcome to NexusFi: the best trading community on the planet, with over 150,000 members Sign Up Now for Free
Genuine reviews from real traders, not fake reviews from stealth vendors
Quality education from leading professional traders
We are a friendly, helpful, and positive community
We do not tolerate rude behavior, trolling, or vendors advertising in posts
We are here to help, just let us know what you need
You'll need to register in order to view the content of the threads and start contributing to our community. It's free for basic access, or support us by becoming an Elite Member -- see if you qualify for a discount below.
-- Big Mike, Site Administrator
(If you already have an account, login at the top of the page)
This is my first post on this forum, I hope it's in the appropriate category. Thanks in advance for your help.
My project is to develop a currency carry trade strategy empirically through Ninjatrader. I am slightly obsessed by that since I did my master thesis on it, and know how rewarding such easy strategy could be (i.e. I am actually curious about its feasibility for retail investors).
However I am very new to C# and automatic trading in general, therefore I have few questions related to the development.
1. What about the roll-over of futures contracts? The decision making of carry trade, which is pretty obvious, is based upon futures contract that are over/under-pricing. Should I create a code that will "automatically" switch from 6E 09-15 to 6E 12-15 (e.g. for back-testing and optimization) ? Or Ninjatrader is smart enough to do so? Also, is it likely to be the same with real time trading? The big picture here, is to back test the strategy the "same way" it will work in practice.
2. One of the implied cost of the strategy is the well known bid-ask spread (though it's not the only one), how to properly rely on bid and ask? After researches, I found different methods, can you please explain and tell me more about it? GetCurrentBid(); vs MarketDataType.Bid ?
3. Concerning the Exit of the strategy, I would like (at first), not to rely on a particular target, but to a date instead (which is likely to be close of the termination of the contract). Is it something possible? How would you do so?
4. How to properly gather and rely on historical bid/ask price? Knowing that I am only interested in the historical bid and ask of currency futures and Forex, which data feed/provider would you recommend?
I wish you guys can help me with that, sorry for the multiple questions. I hope I was clear enough though
Can you help answer these questions from other members on NexusFi?
Trading: Primarily Energy but also a little Equities, Fixed Income, Metals and Crypto.
Frequency: Many times daily
Duration: Never
Posts: 5,041 since Dec 2013
Thanks Given: 4,375
Thanks Received: 10,192
First let me say I'm an energy trader and have little experience in Forex. I am also a math grad though and currently trade mostly arbitrage/quant/mean-reversion/stat-arb style strategies. As such the carry trade has always interested me but I struggle to find any real options available to a trader not executing through a prime broker.
I have tried to look at constructing a carry portfolio but have run into two road blocks
1) Lack of consistent historical data to be analyzed, to pick/rotate an uncorrelated portfolio.
2) Lack of broker that has interest rates/rollover that accurately represent current central bank rates.
CME did publish an interesting research article Adventures in the Carry Trade which implies it should be possible to do using futures contracts. The problem is the futures for the non-major pairs don't trade.
While researching the carry trade. One of the things that surprised me is everybody's fascination with bid/ask spreads and none of the other costs. Specifically the unseen cost there can be when trading Forex if you hold positions at all. Last time I did this analysis (a year+ ago?) the 6E Z/H futures roll was flat which is what you would expect given the interest rate parity. If you put this position on in Forex at Interactive Brokers though – somebody who advertises a lot about how great their bid/offers are, they are going to charge you a financing cost of 1.627% to buy USD-EUR and also a financing cost of 1.59% to sell it! (For positions less than $100k for large positions >$200M they still charge 0.59% and 0.62% respectively). Yes they charge you a financing cost whether you buy or sell it! Oanda on the other hand will charge you 0.325% to buy, and nothing to sell. On some of the more exotic currencies, the bid/offer on the carry charge at Interactive can be as much as 5% (Czech/Danish/Israeli etc). If your holding a position for days or even weeks, the difference in those financing costs far outweigh a tiny difference in bid/ask or commission, and completely kills any carry portfolio.
So I'm still left with a lack of historical data to be analyzed, lack of broker that has interest rates/rollover that accurately represent current central bank rates and/or liquid futures contracts that reflect said interest rates.
It seems that we share at least a little bit of the same interest. In fact, I had already read your post (the one from a year ago). Very good article btw !
First, it's pretty obvious that the only way to implement carry trade for retail is through the sole use of currency futures contract. Trying to reach and hold other type of interest bearing instrument is quite too complex and too difficult, in my opinion.
Unfortunately, you are right and we have to (more or less) exclude illiquid currency futures of developing and exotic countries*. In my script, I aim at adding all currency pairs offered by my broker and let the mechanism decides by itself, either to load on a specific currency or not. According to my preliminaries researches, IB seems to offer the most currency futures contracts so far, even though I am not decided yet. Currently, I found futures historical data starting in 2009.
If the bid-ask spread seems so important it is because of its major importance in the "picking" process. While we can almost neglect it for major currency pairs, it's far from being the case with the currency type discussed above*.
Concerning the cost you are referring to, I am wondering if there is a way, either in the script or directly through Ninjatrader interface to simulate them, and taking them into account?
Trading: Primarily Energy but also a little Equities, Fixed Income, Metals and Crypto.
Frequency: Many times daily
Duration: Never
Posts: 5,041 since Dec 2013
Thanks Given: 4,375
Thanks Received: 10,192
But many of those are where you get paid your yield/carry so without them your missing one side of the trade surely?
Getting the historical forex prices isn't the issue. To correctly model a carry portfolio (and in reality any currency trade held for more than a few days) you also need the historical rollover/interest rates that were obtainable. Key work being obtainable. Knowing what the central bank rate is doesn't help because you can't actually capture that.
Just pulled up Oanda's interest rates, here's just three interesting ones
- CHF - SWISS FRANC <1.300%>/+0.300%
- CNY - CHINA RENMINBI +0.500%/+4.100%
- INR - INDIAN RUPEE +3.575%/+7.175%
I don't know that it's possible to make a profitable carry portfolio when your getting gouged that much on the rollover yields. Also for what its worth when I was last researching this Oanda had some of the best/tightest interest rates, other brokers (esp Interactive) were significantly worse. For example IB's rates on those same pairs are
- CNY - CHINA RENMINBI +0.0%/+8.619%
- INR - INDIAN RUPEE +0.0%/+12.7%
Oh to be in a business where the bid offer is 12.7%!
Futures really does seem like the best way to go from both a trade and a data standpoint but there is no liquidity in many of the contracts and I do not trust the settlement data. On many of the futures where all the volume is in the prompt month the settlement prices of the back months are garbage.
Sorry I hijacked your thread. i know nothing about NT at all.
Carry trade is most likely to be profitable including exotic currency pairs, but not only through the interest rate differential. Also thanks to the diversification it offers in contrast to the developed economies currency (e.g. super interesting when analyzing second and third moments of returns distribution).
I don't know (yet) if only major currency pairs will lead to sufficient abnormal excess return to offset the cost we were discussing about.
Can I have your link to those rates? How are they calculated, through futures?
Trading: Primarily Energy but also a little Equities, Fixed Income, Metals and Crypto.
Frequency: Many times daily
Duration: Never
Posts: 5,041 since Dec 2013
Thanks Given: 4,375
Thanks Received: 10,192
When you say it's 'super interesting when analyzing second and third moments of returns distribution' are you saying that the return distributions are extremely skewed one direction? (ie skew and kurtosis).
Oanda.com Current & Historical Currency Bid Ask Interest Rates (leave date as today to see todays rates, you can actually select all the currencies and it will give you a table.) Historical OANDA Interest Rates | OANDA fxTrade
I suggest that there is an optimal number of currencies to hold (both long and short) to "diversify skewness away"
Thank you for your links, I'll have a closer look when I have time to understand it better.
But, If I may ask, those are related to currencies holding? Or futures? Or both? When those rates should be taken into account? [newbie question here ]
Trading: Primarily Energy but also a little Equities, Fixed Income, Metals and Crypto.
Frequency: Many times daily
Duration: Never
Posts: 5,041 since Dec 2013
Thanks Given: 4,375
Thanks Received: 10,192
Agree that's why I mention picking/rotating an uncorrelated portfolio.
Those are the interest rates that those specific brokers charge/offer for currency positions.
So looking at the Oanda's interest rates
- CHF - SWISS FRANC <1.300%>/+0.300%
- INR - INDIAN RUPEE +3.575%/+7.175%
The first is what the pay on deposits, and the second is what they charge on debits. (So yes you pay them on CHF whether you buy or sell! Oh to be a broker!)
Given the current CHF:INR rate is approximately 1:66. Let's assume you
A) Buy 1M CHF and sell 66 INR and sit on the position for a year.
- Since you have 1M CHF onada will charge you 1.3% interest so at the end of the year you only have 0.987M CHF left.
- Since you are in debit 66M INR onada will charge you 7.7175% interest so at year end you will owe 70.7355M INR.
- In order to make a profit you will need the CHF:INR interest rate to increase to 71.67.
- If interest rates stay unchanged you can sell you 0.987M CHF for 65.142M INR and you will have lost 5.59M INR.
B) Sell 1M CHF and Buy 66 INR and sit on the position for a year.
- Since you are in debit 1M CHF onada will charge you 0.3% interest so at the end of the year you will owe 1.003M CHF.
- Since you have 66M INR onada will pay you 3.575% interest so at year end you will have 68.3595M INR.
- In order to make a profit you will need the CHF:INR interest rate to be less tan 68.15.
- If interest rates stay unchanged you can buy back your 1.003M CHF for 66.198M INR and you will have made 2.16M INR.
By the way, that is an impressive bid/offer spread! Interactivebrokers would be even wider
For whats it worth I would expect a CHF:INR futures contract (dont think there is one) with an expiry 12 months in the future to have a value of approx 70:1 (mid point of the A and B rates above).
Note: I used simple interest rates to make the example simple.