Fully automated futures trading

targeting 30% ann. stdev
That's nuts. Realized st devs of the major stock, bond, forex markets last year were 5- 6- 7%. So imagine the leverage vs the underlying instruments (even allowing for diversification) you'd need in order to realize 30% vol on your trend portfolio.
 
That's nuts. Realized st devs of the major stock, bond, forex markets last year were 5- 6- 7%. So imagine the leverage vs the underlying instruments (even allowing for diversification) you'd need in order to realize 30% vol on your trend portfolio.
According to GAT's book, a good way to determine max volatility is to reduce your expected sharpe ratio by 25% (lets say its .8, so that gets you to .6) and then reduce that value by another 50% to arrive at a conservative half-kelly result, or .3. (This assumes a positive skew strategy). By this logic, 30% is not unreasonable for an expected sharpe of .8. (This also assumes you arrived at that expected sharpe of .8 using bootstrapping on out-of-sample data.)
 
Last edited:
The way I read this is by imagining a drawdown of 50% with 3 years to get back to the HWM. I wouldn't want to compound my capital down by taking a coupon in this scenario.

These stocks are more likely to have a drawdown when risk normalised, aren't they?
 
Is that a mathematical thing or a psychological thing? Would a regular coupon from your trading capital hamper you in the long term?

I guess it's mainly psychological. The other psychological effect is that I look at my trading p&l every day. If I were to put my entire capital into my trading account then the daily numbers would be very high absolute amounts of money (even if I was to run at say half the vol target); amounts I'd feel uncomfortable seeing if they had a minus sign in front of it.

GAT
 
These stocks are more likely to have a drawdown when risk normalised, aren't they?
Fair point. Although if its the case that dividends are uncorrelated to stock price returns (which I haven't checked but its worth a study), I'd reason that volatility in the stocks isn't going to impact the volatility of my cashflow as much volatility of the returns from my trading system, if I am taking a coupon as percentage of the latter (which can be done explicitly or implicitly by compounding capital). Just a thought.
 
Hi Rob,
As the carry data is hard to pre-process exactly as you do it, I am trying to backtest your "staunch trader system" but only using the ewmac rule (with the variations).
In order to do that, I am using a custom config file based on your futuresconfig.yaml and the data is being retrieved from a private folder. I've tried many things, but I always hit the same wall: the system keeps looking for <instrument>_carrydata.csv.

You can see one of my config files in https://github.com/pauljherrera/ib_...v/pysystemtrade/interface/nocarryconfig2.yaml

And the backtesting code:
https://github.com/pauljherrera/ib_pysystemtrade/blob/dev/pysystemtrade/interface/futures_system.py
 
According to GAT's book, a good way to determine max volatility is to reduce your expected sharpe ratio by 25% (lets say its .8, so that gets you to .6) and then reduce that value by another 50% to arrive at a conservative half-kelly result, or .3. (This assumes a positive skew strategy). By this logic, 30% is not unreasonable for an expected sharpe of .8. (This also assumes you arrived at that expected sharpe of .8 using bootstrapping on out-of-sample data.)
If you lever 4- 5× notionally, necessary to force 30% vol out of quiet markets, you'll eventually be crippled by a sharp, unrecoverable drawdown.
 
Hi Rob,
As the carry data is hard to pre-process exactly as you do it, I am trying to backtest your "staunch trader system" but only using the ewmac rule (with the variations).
In order to do that, I am using a custom config file based on your futuresconfig.yaml and the data is being retrieved from a private folder. I've tried many things, but I always hit the same wall: the system keeps looking for <instrument>_carrydata.csv.

You can see one of my config files in https://github.com/pauljherrera/ib_...v/pysystemtrade/interface/nocarryconfig2.yaml

And the backtesting code:
https://github.com/pauljherrera/ib_pysystemtrade/blob/dev/pysystemtrade/interface/futures_system.py

The carry data also includes the current futures contract price (not the backstitched version) which is required to calculate volatility correctly.

GAT
 
The carry data also includes the current futures contract price (not the backstitched version) which is required to calculate volatility correctly.

GAT
So, it is impossible to implement the ewmac rule without having carry data?

Is there a place where I can learn how to "build" the carry data file?

Is there a way to only backtest FX assets that don´t have carry data?
 
So, it is impossible to implement the ewmac rule without having carry data?

Is there a place where I can learn how to "build" the carry data file?

Is there a way to only backtest FX assets that don´t have carry data?

I'd need to refactor the code to remove this dependency, it's not a 5 minute job.

GAT
 
Back
Top