Fully automated futures trading

Discussion in 'Journals' started by globalarbtrader, Feb 11, 2015.

  1. haha wow! it isnt the snappiest of titles thats for sure!
    #831     Jul 6, 2017
  2. Yes the name the publisher has made me use is much snappier than that.

    #832     Jul 7, 2017
  3. maciejz


    Hello GAT and Everyone,

    I am yet another person who's running a system based on GAT's book and blog. Trading 39 markets (all USD based), at 16% vol; started live trading in December 2016.

    I am currently in the process of gathering data to backtest non-USD Equities and Bonds (such as UK Long Gilt).

    The problem I'm running into is with the calculation of carry on bond futures such as the UK Long Gilt. The issue seems to be related to the fact that (it appears that) interest is paid twice a year while the futures contracts are quarterly -- this seems to cause seasonality. So, calculating carry based on the difference in price of a front and back futures contract seems to be challenging. Below is a chart of the carry that I get using this method (BTW, I believe that my_carry = -1 * gat_carry, so my chart may look like it's upside down compared to what GAT would get). The problem is not limited to UK Long Gilts, as German Bunds apparently make interest payments typically once per year.

    There is the approach of using a pretty long moving average to smooth out the seasonality. This seems like it's not ideal since it introduces lag, especially compared to the other technique for calculating carry. Pretty much all the papers calculate carry on bonds not by looking at a front and back futures contract, but by calculating (to my understanding) yield and roll-down based on spot bond prices. So, to calculate the "carry" on a Long Gilt, you'd need to have data on the spot price for a Long Gilt as well as the spot price on a UK 7yr Bond (or some like duration to be able to calculate roll-down). The problem with this approach is getting your hands on the data. But, perhaps I'm missing something obvious -- that's why I'm writing here.

    How do other people approach this problem? Am I missing something simple?

    As a side note, my experiences with carry for global equities were also fraught with seasonality (due to another mismatch between dividend payments and futures contract months). I spent a couple of weeks working on various ways to remove the seasonality without introducing lag. At the end of that rat hole (er ... effort), my back tests showed that leaving the seasonality in yielded better performance than removing the seasonality. Granted, those tests were for a cross-sectional carry strategy, but still interesting (and rather disappointing for me given the effort that went into removing the seasonality).

    And ... just as a little benchmarking for those of you in live trading, my system was down about 10% off the HWM due to losses late June and early July. Currently, its rebounded about 2.5%. -- still painful though.


    #833     Jul 12, 2017
  4. You aren't missing something and you haven't done anything wrong. Although if you're interested the effect is caused by the issuance of new bonds and the change of the CTD, not the interest payments (the 'clean' pricing of bonds removes this effect from the futures price).

    This is a real problem, and there are only three ways to solve it, and you've identified them both. In my last job we used the approach of using interest rates to calculate rolldown for bond futures, rather than the futures curve itself. Not bond prices - they are harder to get.

    If you want to go down this route:

    carry per year = CTD yield - GC rate
    rolldown per year = duration * (CTD yield - yield of a bond with maturity of CTD-1)

    You can back out the approximate duration from the interest rate and assume the maturity of the CTD is in the middle of the deliverable 'bucket'. You can use the relevant constant maturity rates. You can use government base rates instead of GC rates. These approximations don't affect the results much. So for example if the average deliverable is an 8 year bond:

    carry per year = 8 year yield - base rate
    rolldown per year = approx duration * (8 year constant maturity yield - 7 year constant maturity yield)
    total carry per year = carry + rolldown

    Currently I use the smoothing approach, and I use a number of different smooths, from a 10 business day moving average up to 125 days. Like most of my predictors the weight on each smooth is driven mainly by trading costs.

    The approach of removing seasonality is theoretically interesting, but as you say is a lot of work and doesn't do much for the final result.

    (Similar losses to you, current drawdown 8.6% Don't worry several big CTAs did much worse, on a vol adjusted basis)

    abbreviations: GC general collateral rate, CTD cheapest to deliver
    #834     Jul 13, 2017
  5. Always with humour.
    My system (based on the same book, but with small trading account) is also in drawdown since early June.
    #835     Jul 13, 2017
  6. GAT I just wanted to say thanks for the material you are putting out. Learning about volatility targeting and SR trading cost from you has made a world of difference in my trading results and stress level. I appreciate it!
    #836     Jul 14, 2017
  7. You're welcome

    #837     Jul 14, 2017
  8. isotope1


    For vstoxx, do you trade the front contract?

    (On vix, I trade 3 months out, and compare the nearer contract for my carry).

    Sometimes, for some of my carry forecasts, I get this oscillating behaviour (this is bobl, trading front contract, carry to next quarterly contract).


    I'm including a 90 day smooth, and I haven't found a bug yet (though there might be one). Is there a fundamental reason for this behaviour?
    #838     Jul 18, 2017
  9. No. You must never trade the front contract for a vol index.

    The carry of bonds is discussed a few messages ago in this thread.

    #839     Jul 18, 2017
  10. Hi GAT,

    Great journal, have you ever posted a more up to date graphic equity chart.
    The one in your opening post was from April 2014 to Feb 2015.
    Would be nice to see one from April 2014 to say the end of June 2017.
    #840     Jul 18, 2017