Saturday 4 April 2015

Futures trading performance: Year one

I started trading my automated futures trading system at the beginning of the current UK tax year, on the 7th April 2014; exactly a year ago. So it seems like a good time to review my performance to date (executive summary: brilliantly flukey).

Cash performance

I'm going to start with the actual change in the cash value of my account. The numbers here are shown as a percentage of the capital I began the year with. The average capital at risk over the year varied (I'll go into this below).

So I've more than doubled my money, at least before the tax man takes his share. Let's have a look at where I gained or lost that in some more detail.

To complicate things slightly I partly fund my trading account with stocks (rather than sell them and pay capital gains tax), and I sometimes have to borrow some money secured on them for margin. Because I don't want the stock exposure to affect my account value the stocks are hedged with FTSE and EUROSTOXX futures. All this adds a bit of noise to my profits as no hedge is perfect; you can think of this as a mini equity neutral hedge fund.


Mark to market: 9.2%
Dividends: 7.13%
Commissions: -0.05%
Stamp duty: -0.38%

Sub total: 15.9%

Stock hedges:

Mark to market: -18.1%
Commissions: -0.06%

Sub total: -18.1%

Total for stocks + hedge: -2.3%

Main futures trading:

Gross profit: 130.4%
Commissions: -2.5%
Slippage: -0.6%
Data fees: -0.04%
FX trading: -0.8%
Interest: -0.3%

Total for main trading: 126.4%

Grand total: 124.1%

Couple of things to note. Firstly my hedge was reasonably successful, but not perfect. Given the large size of a typical futures contract its as good as it can be.
The 'costs of doing business' are worth unpicking. We can't control revenue, but we can to an extent control costs. Commissions and slippage I discuss in more detail below. Data fees are pretty much as low as they can be.

FX trading and interest go together. Because I need to hold margin in foreign currency I have two choices. I can eithier borrow it, pay interest, and risk the foreign currency appreciating. Or I can exchange GBP for foreign currency, pay no interest, and risk the foreign currency depreciating.

I mix and match these approaches, trying to borrow only in low interest currencies like CHF, and avoid keeping large excess cash balances in any currrency as they don't pay much interest and give me more risk. The 1.1% cost here is more than I'd like, and was mainly due to losses in holding EUR balances which depreciated against the GBP, of 1.9% of starting capital. But I did make about 4% of starting capital betting against EUR futures as part of my main trading.

This is a cost of doing business, which hopefully will even out over several years.

Performance for capital at risk

I don't think cash performance is the best way of evaluating performance. This is because I adjusted the amount of maximum risk in my portfolio throughout the year (both the amount of money at risk, and the target volatility).

(In subsequent years I intend to keep this maximum constant, so things will be simpler)

Here is the performance when the effect of changing maximum risk is removed. This is shown as a percentage of capital, with a constant annualised risk target of 25% as I currently run.

Note that the risk is more stable. Its more appropriate to work out things like Sharpe Ratio on account curves like these. A hypothetical investor in my "fund" would have received a compounded version of these returns; their returns would be the same as these on a log scale.

Here are some statistics.

Return: 57.2%
Sharpe Ratio: 2.54
Realised annualised standard deviation: 22.0% (versus target 25%)
Average weekly gain versus loss: 1.16
Hit rate (proportion of positive weeks): 0.68
Profit factor: 2.45

Average drawdown:  -2.3%
Worst Drawdown: 8.9%
Proportion of weeks in drawdown: 77%


My trading system mostly uses a combination of trend following and carry, over a diversified set of futures markets. This makes it similar, although much simpler and less diversified, than the strategies run by the likes of AHL, Winton and Aspect.

Looking at whole months AHL's flagship fund made around 33% to the end of March. Here are my monthly returns, with the same figures for AHL (Man AHL Diversity GBP) in brackets:

April:      5.8%  (1.3%)
May:       14.6%  (6.6%)
June:       9.4%  (2.4%)
July:      -4.1%  (-0.1%)
August:    11.1%  (5.1%)
September: -4.4%  (0.2%)
October:    1.8%  (1.0%)
November:   9.2%  (5.7%)
December:   0.6%  (2.7%)

January:    8.0%  (5.7%)
February:   5.4%  (1.2%)
March:     -0.4%  (1.3%)
April:     -0.1%  [part]

Based purely on the 12 matching monthly figures the annualised Sharpe Ratios are 2.8 (me) versus 4.0 (AHL). The correlation was 0.84. So my performance was good, but not as good as my former employer, especially when you consider that fees have been deducted from their performance.

AHL was an exceptional stand out performer in the CTA universe, but other large CTA's did well, with Sharpes from around 2.4 (Cantab) up to 3.6 (Aspect), with Bluetrend and Winton somewhere in between.

As I said in my simulation the last 12 months have been amazing for trend following, but not quite as good for other types of signals. AHL and other CTA's probably have higher allocations to trend following than I did and this partly explains their outperformance; I would probably have done better on a relative basis in 2009-2013 when trend following signals struggled.

However I'd expect AHL to do better in the long run as they trade over 300 markets versus 45 (which is a huge advantage) and have a more sophisticated set of trading strategies (which is less of an advantage than you might expect). You'd hope that 100 or so people working full time could beat one guy, spending 10 minutes a day.

Performance by futures contract

Which instruments did best last year? Let's look at it by asset class first. Numbers shown are the contribution to total profits.

Bonds: 40.3%
STIR: 5.9%
Volatility: 5.7%
Oil and Gas: 5.4%
FX: 4.6%
Equities: +4.4%
Ags: -1.9%
Metals: -0.2%

Clearly this has been the year of the bond, or at least the rolling 12 month of the bond. Let's dig into individual instruments.

First the bad news. The worst performers were Korean KOSPI equities (-1.2%), Lean Hogs (-1%) and Swiss SMI equities (-0.9%). The best were French OAT bonds (contributing 7.9%), Italian BTP bonds (6.3%), VIX (4.9%) and Korean 3 year bonds (3.9%).

So we don't need to look very far for the reason for the performance in bonds. Here are the country by country returns:

German 10.1%
French 7.9%
Korea 7.5%
Italian 6.4%
US 5.4%
Australia 3%
Prices of European bonds went up in a straight line, with only a brief pause in September. Although you can see the jump in March when QE was announced this was just the icing on what was already a very large cake. Other bonds, and STIR, also contributed but not by as much, bringing us to the bizarre situation where German 10 year yields are 19bp, French 50bp, Italian 1.30%, and US yields are nearly 2%.

(All these graphs show the total return of the future on the top panel, and the accumulated profits as a proportion of total capital on the bottom)

Volatility was a more interesting story. Essentially we benefited from a squeeze in volatility that lasted just two months. After that vol has been all over the place. A good trading system will capitalise on opportunities; then carefully husband its capital when they aren't around. You can clearly see that happening here.

Another 'one off' trend was in crude oil and other energy products, where we had a decent downtrend for the second half of 2014. I participated in some of that; here the problem was the relatively large risk of the crude oil future which meant I couldn't hold a position until the trend was half over (I had similar problems in Gas and heating oil). However we still ended the year in profit.

Another more recent trend has been the rally in the dollar, accompanied in its deadly duet with a collapse in the Euro. Here again we see a classic trend following account curve. We have minimal risk until the trend begins in earnest at the start of the year. Then we participate in the move, until it reverses. The reversal costs us something, but we hang on to most of our profits, and then reduce our risk again waiting for another move.

In contrast the other asset classes have been disappointing. Although there were no massive horror shows, it's probably worth reminding ourselves of the dangers of trading with one final picture from one of the worst markets.

The Swiss equity market was as boring as the country itself for most of the year (with apologies to my swiss friends for the national stereotyping). Then the SNB, in their infinite wisdom, decided to depeg the Euro. You can probably just about make out on the chart where it was. I wasn't, fortunately, trading the CHFEUR FX rate or CHFUSD future. I thought that having anything to do with this rigged market was the height of madness. Had I been doing so the damage from this debacle would have been much worse.

The long view

A few weeks ago I showed that a simulation of this system had a pre-cost Sharpe Ratio of around 0.94, with around 0.06 spent on costs (around 1.5% of capital with 25% annualised risk). If we assume that 0.88 is the 'true' SR, and that annual returns are normally distributed, then a one year SR of 2.54 is a one in twenty year event. It's nice to start off this way, but such amazing trends in bonds, with a few chucked in for other markets, is unlikely to be repeated anytime soon.

Risk versus expectations

I am obsessed with two things: risk, and costs (okay there are other things I'm obsessed with, like my weird crush on Olivia Colman but I'm talking specifically about this trading system now). I am not obsessed with performance (except in as much as day to day p&l tells me what my realised risk is). You probably don't believe me but until I did this performance exercise I was completely unaware of the italian bond yield, or that french bonds had been responsible for such a big chunk of my performance; though I had been vaguely aware of the VIX squeeze last year, and the dollar downtrend this year.

So why I am obsessed with risk, and costs? It's because unlike performance they are controllable. You can't control performance, it's just down to luck. Having the illusion of control can lead to meddling with your system, and destroying it's performance.

Anyway here is my actual and expected risk (measured in units of annual vol per year, and correcting for changes in risk targeting. Expected risk is missing before June as before then I didn't calculate it). The long run system target is 25%. They track each other reasonably well, although the actual risk measure is noisier. I'm comfortable with how well my risk targeting is working.


The other thing I am obsessed with is trading costs, both commissions and slippage (the difference between where I get filled, and the mid price when I submit the order).

In terms of expectations  I said I expect my overall cost bill to be around 1.5% a year, based on simulation. The split it varies by market, but very roughly around 20% of that (or 30bp) should be commission, and the rest (120bp) slippage.

My commission bill for the year (once I've corrected for changes in capital at risk - so its different from the cash figure above) comes in at 48bp, which is a little higher. There are a few reasons for that. Firstly my simulated cost bill doesn't include rolling costs. Secondly I've experimented with trading my system at two or three different speeds over the last year; now I'm comfortable with my trading costs I've settled at a slightly slower speed which the simulated expectation reflects.

The good news is I've only paid 17bp of slippage. If I look at a time series of slippage paid over the year its quite noisy, but it looks like I've effectively paid negative slippage (i.e. been paid to trade) since I started using a simple execution algo for trading, rather than just placing market orders.

Overall I'm comfortable that 1.5% should be a very conservative figure to pay in costs annually.

Lessons learnt

Don't focus on things you shouldn't control- only the things you can

Keep your costs low. Don't trade quickly on expensive markets in the expectation you'll get enough of a high Sharpe Ratio to compensate. Watch your risk like a hawk.

Ignore your performance, or you'll be tempted to meddle. A well designed system will do all the right things for you. Don't read the financial news. I can't believe I'm lending money to the Italian government at 1.3% (Apologies to my Italian friends. Actually, no apologies. I know for a fact none of you guys would lend them money at any rate). If I'd realised this sooner I might have cut a very profitable position.


Who knows where the next mega trend will come from? If I'd just been trading US bonds, or commodities, I would have been barely up, flat or even down this year. Have the most diversified portfolio you can for the amount of money you have.

Patience and realism

It's been fantastic to start off like this. But a downside of that is when (not if) I start to lose money, and enter say a 15 or 25% drawdown, it will be harder not to be patient since if I'm not careful I'll have unrealistic expectations. Anyone starting to trade this kind of system in 2009 would have really been hacked off by March 2014. If they'd thrown in the towel then they'd have missed out on the incredible performance we've seen since then.

If you believe in your system, then sooner or later the markets will turn in your favour. Until then your job is to lose the minimum amount of money whilst you wait. Those losses are just the antes you have to pony up whilst you wait for a decent hand (yes I've been reading poker books recently, can you tell?).


  1. > I wasn't, fortunately, trading the CHFEUR FX rate or CHFUSD future. I thought that having anything to do with this rigged market was the height of madness.

    My thoughts exactly in the past - would never touch that one. Plenty of other areas. (plus others that have their own issues)

    Bravo on year one!

  2. Hi Robert, thanks for sharing your results and congrats for the great year.
    I am learning the ropes in this field and have some questions.

    1. Do you simulate all the markets together or collectively?
    2. How much flexibility do you allow in your model parameters while backtesting across different markets? e.g., suppose you are trying to catch a short term trend in different markets (lets say by using a MA), do you allow the window length to be different across different markets , or you keep them the same for all markets
    3. Do you use stop loss while backtesting?
    4. Is there any sweet spot that you find in terms of holding periods for your strategies?

    1. 1, 2, 4:

      I pool pre cost returns from all markets (across which I don't find any statistically different effects), but then I use different costs depending on the market. So slower markets will have a higher allocation to slower signals. For example the V2X market within my breakout signal has a 50% allocation to breakout160 and 50% to breakout320 (the numbers indicate how many days in the past the signal determines the trading range in, so higher is slower). Wheras the FTSE has roughly an equal allocation to breakout20, 40, 80, 160 and 320.

      So the 'sweet spot' will be determined by costs.

      3. The stop loss is implicit from the fact the majority of my rules are trend following.

  3. Hi Rob, will you be running tighter stops than usual on any of the bond markets as rates approach a floor and signals remain on the long side? Do you think it makes sense to cap the amount of leverage that is taken in those positions?



    1. Making stops tighter doesn't make any sense, all that will do is shorten your holding period so you pick up on shorter trends, and pay more in trading costs. Whats the evidence or intuition that trends will get shorter as you get to very low rates? You eithier want to be in the market trading normally or you don't.

      In my previous job I implemented something that put less risk into markets as interest rates went to zero

      There was a lot of debate at the time about whether any floor should be country specific, which I personally disagreed with. With italy now trading at 1.3% ten year yield, I think that debate is now won.

      I'm a bit more sanguine about very low or even negative rates now; partly because I can't be bothered to setup the neccessary technology to implement a similar scheme, but also because I am less convinced that the lower bound is a huge problem, or indeed exactly where it lies. I'm now happy to sit on a massive trend as rates go well below zero, with one exception:

      It absolutely makes sense to avoid markets where you require insane leverage because the vol is really low. Thats why I turned off the Shatz market:

      (and USDCHF for that matter... thank goodness)

      I wouldn't personally just cap leverage in such a situation, since being able to hit my risk targets is very important to me, so unless there was no other way of getting similar exposure I'll probably continue to turn off any market where vol gets very low.

  4. I've been of the mind that reducing risk in Rates made sense as we worked closer to zero, but you may be right that's it's not the problem we make it out to be. Staying in until the vol drops to nothing like has been the case with the Shatz is probably the best way to go about it, as you mentioned. (I should have read your earlier post, my apologies)

    Thanks for the response

    1. To be fair I used (say 2011 when short Swissie rates first went negative) to be a lot more worried about negative rates.

      However the longer we have negative rates, the less it seems to be a problem. There probably is a lower bound on rates, I don't know exactly where it is, but its not zero - its negative.

      At the moment I've been lucky that very negative rates have generally been accompanied by

      I've found this series of posts quite informative (no paid subscription required, but registration needed)

  5. Is it fair to say that wherever the lower bound is, we'll know we're there once volatility drops down to nothing, in which case it won't make sense to be in those position anyways?

    Thanks for the link, I didn't realize you could amalgamate links like that on their site.

    1. Yes I also hope that vol drops as we get to a lower bound.... I guess if it doesn't then it isn't a lower bound...

  6. Hi Rob. I'm reading your blog post by post from the very beginning and I'm very much enjoying it.

    I have 1 question: if you don't read any news as suggested, hiw do you decide what to trade? How do you decide which market to get into?

    Do you download daily market data (across i.e. all the markets mentioned above), analyse and when the signal comes you put on a trade?

    If so, wouldn't that be computationally expensive, given your setup?

    (Remember: I'm reading backwards, starting with your first posts and going forward - this is "today" for me, so to speak)

    Many thanks in advance.

    1. Describing my historic system then, I download daily data for all the instruments I trade. I always have a signal on in every single instrument, but I will only hold positions if that signal implies a rounded position of one contract or greater. I don't 'put on trades'. I rebalance my portfolio to optimal positions.

      It's not that computationally expensive; since it's a once a day process so it doesn't matter if it takes several hours.

      It's all fully systematic and fully automated. So the news is completely irrelevant.

      There is a slight change to how I do things nowadays, but no spoliers :-)

    2. Rob, thanks for your reply.

      I now realise some of my questions are answered by the posts immediately after this one, where you go in detail into how you build your system and how it works (again, at the time of writing). That's very useful.

      I also have built the capability to get price data that I can put to good use later on. And now I'm at the stage where I need to automate the TWS setup (provision; startup/relogin; handle function-specific client connections; etc).

      Also thanks for not spoiling :)


Comments are moderated. So there will be a delay before they are published. Don't bother with spam, it wastes your time and mine.