Fully automated futures trading

Hi Rob, have you considered adding spreads into the system? My trend following portfolio has 30% made up of spreads, mostly calendar with a few inter-market ones (KE/ZW, ZN/ZB, GF/LE). The result is decent. Transaction costs double, and risk of breaking correlation is there. The reduced margin requirement really helps. Some spreads trend better than outrights. I would appreciate if you can comment on this. Thank you.

Yes it's on my to do list for this year as I'm also going to be writing about spreads in the book.

I supoose spreads exhibit high negative skew, so even if it has higher SR, you probably don't want to leverage it up too much, unlike with positive skew strategies.

Yes

GAT
 
I should have been more clear on transaction cost. By double I only mean for a single transaction (two-leg spread) comparing to outright. For total transaction cost per year, I think it depends. I do fixed position sizing instead of vol targeting, because I don't think the simple model of taking recent vol has enough predictive power for future vol.

For spreads, they partially remove the common mode noise, so the differential mode can trend better (stay longer in trend/fewer reversals). So they may result in higher SR in the end (together with the reduced margin requirements).

Like this one, CL, 3rd month outright vs. spread between 3rd and 6th month. I find the spread is better to trade in terms of SR.View attachment 272383 View attachment 272384

Have you compared how much your system's backtested SR increases from using only outrights to including spreads?
 
A few more observations:

Volatility is 25%, but since 1980. In the 1970s it's about 55% (but we know markets were extremely volatile then).

Longest drawdown was 39 months, between 2018 January and 2021 April.

Annual returns:
1971 -11.51
1972 333.11
1973 243.67
1974 73.56
1975 3.94
1976 10.3
1977 23.23
1978 99.71
1979 275.19
1980 33.72
1981 180.21
1982 49.78
1983 -17.52
1984 36.55
1985 67.54
1986 11.23
1987 32.3
1988 13.84
1989 37.41
1990 103.75
1991 19.22
1992 -0.33
1993 56.87
1994 -8.27
1995 27.64
1996 57.91
1997 2.41
1998 84.25
1999 -6.92
2000 119.47
2001 0.5
2002 37.45
2003 57.59
2004 63.9
2005 16.36
2006 48.94
2007 15.99
2008 51.99
2009 15.67
2010 37.04
2011 1.91
2012 9.82
2013 32.33
2014 50.35
2015 15.44
2016 3.2
2017 74.49
2018 -27.47
2019 25.94
2020 -2.02

Returns by decades (CAGR and max drawdown):
1970-02 1979-12 85.28 40.31
1980-01 1989-12 37.63 31.73
1990-01 1999-12 28.56 19.56
2000-01 2009-12 39.38 18.60
2010-01 2019-12 19.21 34.62
2020-01 2021-11 15.33 18.56
 
A few more observations:

Volatility is 25%, but since 1980. In the 1970s it's about 55% (but we know markets were extremely volatile then).

Longest drawdown was 39 months, between 2018 January and 2021 April.

Annual returns:
1971 -11.51
1972 333.11
1973 243.67
1974 73.56
1975 3.94
1976 10.3
1977 23.23
1978 99.71
1979 275.19
1980 33.72
1981 180.21
1982 49.78
1983 -17.52
1984 36.55
1985 67.54
1986 11.23
1987 32.3
1988 13.84
1989 37.41
1990 103.75
1991 19.22
1992 -0.33
1993 56.87
1994 -8.27
1995 27.64
1996 57.91
1997 2.41
1998 84.25
1999 -6.92
2000 119.47
2001 0.5
2002 37.45
2003 57.59
2004 63.9
2005 16.36
2006 48.94
2007 15.99
2008 51.99
2009 15.67
2010 37.04
2011 1.91
2012 9.82
2013 32.33
2014 50.35
2015 15.44
2016 3.2
2017 74.49
2018 -27.47
2019 25.94
2020 -2.02

Returns by decades (CAGR and max drawdown):
1970-02 1979-12 85.28 40.31
1980-01 1989-12 37.63 31.73
1990-01 1999-12 28.56 19.56
2000-01 2009-12 39.38 18.60
2010-01 2019-12 19.21 34.62
2020-01 2021-11 15.33 18.56

The higher vol in the 1970's is because I'm using a fixed IDM - nothing to do with the vol of the underlying markets. There are fewer markets back then, so the IDM of 2.5 is way too high. With a properly estimated variable IDM it would be on target in every decade.

That would also even out the decade by decade returns - would be lower in the 79's and 80's

GAT
 
The higher vol in the 1970's is because I'm using a fixed IDM - nothing to do with the vol of the underlying markets. There are fewer markets back then, so the IDM of 2.5 is way too high. With a properly estimated variable IDM it would be on target in every decade.

That would also even out the decade by decade returns - would be lower in the 79's and 80's

GAT

OK that explains. Originally I thought since 1970s were so "trendy", a lot of the times trend signals would be at 20 which translates into 25% x 2 volatility scaling. But I'll take your explanation, makes more sense.
 
Just for fun, I'm going to run a sim with an estimated IDM so you can see the effect that has. I also want to dig a little deeper into the significant drawdown that shows up last year. Finally, just for fun, I thought it might be interesting to compare my live trading record with the backtest.

Watch this space...

GAT
 
Hi Rob.
I'd have anoher question. I read that, when you define the weights of sub-trading strategies, you consider the correlations between sub-strategies, rather than the correlations between instruments. It makes sense.

In my case, I don't have sufficient/extensive returns data for of all the sub-trading strategies (by sub-trading strategy I mean the average of my trading signals applied to each instrument). I guess correlations between strategies are lower than correlations between the underlying instruments, but I was wondering if there was some kind of heuristic I could use to infer strategies correlations from assets correlations.

Thanks
 
Another question for Monday morning, I guess we have been using the weekend for some offline processing.
I wonder if your daily order generation process involved running a complete backtest? Or can you run a smaller time range of size equal to the longest look-back window?
From the docs of pysystemtrade it was not clear to me. If I understand correctly the dynamic optimisation code there is no path dependence in calculating the potimal position size day to day.
 
Hi Rob.
I'd have anoher question. I read that, when you define the weights of sub-trading strategies, you consider the correlations between sub-strategies, rather than the correlations between instruments. It makes sense.

In my case, I don't have sufficient/extensive returns data for of all the sub-trading strategies (by sub-trading strategy I mean the average of my trading signals applied to each instrument). I guess correlations between strategies are lower than correlations between the underlying instruments, but I was wondering if there was some kind of heuristic I could use to infer strategies correlations from assets correlations.

Thanks

I'm struggling to see why you'd have correlations for instrument returns but not substrategies... some kind of warm up??

As a heuristic in ST I suggest using 0.7*instrument correlations

GAT
 
Another question for Monday morning, I guess we have been using the weekend for some offline processing.
I wonder if your daily order generation process involved running a complete backtest? Or can you run a smaller time range of size equal to the longest look-back window?
From the docs of pysystemtrade it was not clear to me. If I understand correctly the dynamic optimisation code there is no path dependence in calculating the potimal position size day to day.

I run a 20 year backtest to save time/speed/memory; 2 years is probably enough frankly.

There is no path dependence since I only do a single dynamic optimisation based on what my positions actually are in the database.

GAT
 
Back
Top