Fully automated futures trading

I think this would've saved me yesterday, going to experiment with something similar. Although it probably would've prevent the initial opening of my Silver long which went completely in my face. I realised I had too risk on by holding the contract when the account madly increased on Tuesday, but if it's going in your favour it's hard to switch it off, then of course it turned around and I gave it all back. It was a bitter slice of humble pie.

I know it hurts, but a very sharp reversal is often the best thing that can happen to a trading system like this. The vol scaling will cut your positions quickly, reducing further losses. The alternative, a slow reversal, means you have to wait for forecasts to reduce your position and by then you will have lost almost all your gains.

Of course that assumes we are the end of the trend... if not then at least you are in a position to benefit from . Important thing is risk is reduced, and rightly, since we are less certain about what is happening next.

Rob
 
Thanks,

Im just a casual follower of this thread, i typically read the first few pages of this thread every now and then and then the last few pages. Tend to ignore everything in between :D

I noticed in the first few posts on this thread, eg. post number 14, it seemed like you said you started out with 300K (either actual or notional) back in 21014. And you made approx 350K profit in the first year, between April 2014 and March 2014.

I might be wrong, but your latest daily % figures, which include that period, don't seem to show 100%+ returns, more like 50% for that period.

So are you using a different notional starting figure these days.

This is actually (sort of) explained in the second post of the thread: https://www.elitetrader.com/et/threads/fully-automated-futures-trading.289589/#post-4085237

What happened was when I started trading I had a 50% risk target, and then I dropped to 25% in December 2014 because it was way too scary.

So for proper comparision when my code calculates the notional capital it automatically resizes historic figures so that my % returns are consistent; effectively it doubles my capital base pre December 2014 so it's initially 600K rather than the 300K notional I actually had.

(Incidentally my actual account starting value was about 550K, but that isn't relevant; although it's how fundseeder and IB calculate my performance FWIW so again there are some differences in those early years)

To work out my percentage returns I divide the actual £££ p&l by the notional capital on any given day. So I end up 50% for that earlier period rather than 100%, because the capital is doubled. I did actually make 100% on the notional capital I was employing, and when looking at cash profits that is reflected, but I'd rather factor out the change in risk target.

(A lesson here is don't change your risk target, it makes life very hard!)

The pair of graphs I posted in the very first post shows this effect happening, which is why I felt the need to explain it in the second post. So this was a retrospective change, but once I've applied since before this thread started.

Just to make things even more complicated, prior to early December 2014, I was also compounding up my profits. So my max capital was actually as high as £420K, or notionally doubled £840K,

From January 2015 it's simple because I'm using 25% risk on a notional capital of £400k, which is what I use today, so no further adjustments are required. In the very first post I say my risk is "25% annualised on the notional capital of £400,000)." So I'd already settled on this methodology by the time the thread started.

I've said several times before that the £££ profit I have is basically higher than it would be if I had the same risk target. If you just add up all my % returns (adding up makes sense as I don't cumulate returns) you get about 144% to yesterdays close, or £576K on £400k. My actual accumlated profit to yesterdays close was £757K, about £180K less. That extra £180K was made by a combination of accumulating profits and having double the risk target in my first 9 months or so of trading.

On the other hand, if I'd compounded my returns I would have made 333%, which even on my original notional £300k would have been a nice round million quid. On the other, other hand Fundseeder and IB that assume I cumulate and use my current account value as the capital divisor reckon I've made over 400%.

Hope that helps.

Rob
 
This is actually (sort of) explained in the second post of the thread: https://www.elitetrader.com/et/threads/fully-automated-futures-trading.289589/#post-4085237

Hope that helps.

Rob

Thanks for the taking the time to explain.

I copied your daily results into a nice monthly table, like hedge funds show monthly performance. So i can personally follow your results more easily. You might have posted something similar somewhere on your various blogs yourself, i didn't take a hard look. I have only seen you post that daily results spreadsheet. (I hope i didn't make any errors when creating the table from the daily % figures)

Your trading is very inspirational and motivational, in that you are able to trade such a hard system so successfully through long drawdowns!


Screenshot 2022-03-10 at 10.00.21.png
 
Last edited:
Thanks for the taking the time to explain.

I copied your daily results into a nice monthly table, like hedge funds show monthly performance. So i can personally follow your results more easily. You might have posted something similar somewhere on your various blogs yourself, i didn't take a hard look. I have only seen you post that daily results spreadsheet. (I hope i didn't make any errors when creating the table from the daily % figures)

Your trading is very inspirational and motivational, in that you are able to trade such a hard system so successfully through longish drawdowns!


View attachment 279984

That's awesome. Fundseeder have something similar, but without the colours. If I can trick something similar up in python, I'll see if I can get an auto updating table like that.

Rob
 
That's awesome. Fundseeder have something similar, but without the colours. If I can trick something similar up in python, I'll see if I can get an auto updating table like that.

Rob
I know you like to roll your own, but this is pretty nice https://github.com/quantopian/pyfol...4b7d83502e5c6f2e81aa/pyfolio/plotting.py#L143
Code:
sns.heatmap(
        monthly_ret_table.fillna(0) *
        100.0,
        annot=True,
        annot_kws={"size": 9},
        alpha=1.0,
        center=0.0,
        cbar=False,
        cmap=matplotlib.cm.RdYlGn,
        ax=ax, **kwargs)
    ax.set_ylabel('Year')
    ax.set_xlabel('Month')
    ax.set_title("Monthly returns (%)")
    return ax
 
Small up today. As you'd expect after a big day, absolute s***load of trades, mostly closing.

Code:
================================================================================================
                                         Broker orders                                        
================================================================================================

         instrument_code     strategy_name contract_date       fill_datetime  fill  filled_price
order_id                                                                                      
32033                BRE  dynamic_TF_carry    [20220500] 2022-03-10 15:02:43   [1]       0.19525
32030         BRENT-LAST  dynamic_TF_carry    [20220600] 2022-03-10 14:00:35  [-1]     112.97000
32028             EU-OIL  dynamic_TF_carry    [20220600] 2022-03-10 08:00:46   [1]     306.90000
32027         FTSECHINAA  dynamic_TF_carry    [20220300] 2022-03-10 03:00:34  [-1]   13877.00000
32019               IRON  dynamic_TF_carry    [20220500] 2022-03-10 01:25:37   [1]     159.85000
32025           MSCISING  dynamic_TF_carry    [20220300] 2022-03-10 02:35:19  [-1]     309.65000
32032                MXP  dynamic_TF_carry    [20220600] 2022-03-10 15:01:45  [-1]       0.04691
32031            RUSSELL  dynamic_TF_carry    [20220300] 2022-03-10 15:00:37   [1]    1999.10000
32034             SOYOIL  dynamic_TF_carry    [20220700] 2022-03-10 15:30:36  [-1]      70.90000
32020              TOPIX  dynamic_TF_carry    [20220600] 2022-03-10 01:45:32   [1]    1801.25000
32029                V2X  dynamic_TF_carry    [20220600] 2022-03-10 08:01:41   [1]      30.80000

Interestingly I made £2k from not doing these trades at the close yesterday, due to the mini rebounds (most of that was in Brent). Bid/ask spread was £260, but I made £111 back on the execution

Here's my current risk - v.low:

Code:
********************************************************************************
           Risk report report produced on 2022-03-10 16:01:19.104883          
********************************************************************************


Total risk across all strategies, annualised percentage 11.0

========================================
Risk per strategy, annualised percentage
========================================

                  risk
dynamic_TF_carry  11.1


===================================================================================================================================================================================================================================================================
                                                                                                                          Instrument risk                                                                                                                        
===================================================================================================================================================================================================================================================================

              daily_price_stdev  annual_price_stdev     price  daily_perc_stdev  annual_perc_stdev  point_size_base  contract_exposure  daily_risk_per_contract  annual_risk_per_contract  position   capital  exposure_held_perc_capital  annual_risk_perc_capital
JPY                        0.00                0.00      0.01              0.34               5.37       9520364.06           82346.39                   276.15                   4418.38      -1.0  378567.3                      -21.75                     -1.17
MSCISING                   4.83               77.21    307.65              1.57              25.10            56.07           17249.99                   270.56                   4328.93      -1.0  378567.3                       -4.56                     -1.14
KR10                       0.36                5.84    119.74              0.30               4.87           619.20           74143.54                   225.82                   3613.16      -1.0  378567.3                      -19.59                     -0.95
FTSECHINAA               191.31             3060.91  13708.00              1.40              22.33             0.76           10440.41                   145.70                   2331.28      -1.0  378567.3                       -2.76                     -0.62
NIKKEI400                211.98             3391.61  16275.00              1.30              20.84             0.66           10689.15                   139.22                   2227.55      -1.0  378567.3                       -2.82                     -0.59
BRE                        0.00                0.03      0.20              1.04              16.62         76162.91           15034.56                   156.18                   2498.86       1.0  378567.3                        3.97                      0.66
EU-OIL                     6.50              104.07    303.80              2.14              34.26            41.96           12747.52                   272.92                   4366.68       1.0  378567.3                        3.37                      1.15
CORN                       9.50              152.03    634.75              1.50              23.95            38.08           24172.20                   361.85                   5789.60       1.0  378567.3                        6.39                      1.53
SILVER                     0.50                7.92     25.96              1.91              30.52           761.63           19771.89                   377.15                   6034.46       1.0  378567.3                        5.22                      1.59
GOLD_micro                25.86              413.73   1985.40              1.30              20.84             7.62           15121.38                   196.94                   3151.07       3.0  378567.3                       11.98                      2.50
SOYBEAN                   15.94              254.99   1474.25              1.08              17.30            38.08           56141.59                   606.89                   9710.30       1.0  378567.3                       14.83                      2.57
IRON                       4.63               74.11    159.85              2.90              46.36            76.16           12174.64                   352.79                   5644.63       2.0  378567.3                        6.43                      2.98
CRUDE_W_mini               3.97               63.58    100.92              3.94              63.00           380.81           38433.71                  1513.30                  24212.74       1.0  378567.3                       10.15                      6.40

Sum of abs(notional exposure % capital) 113.8
Sum of abs(annualised risk % capital) 23.8
Net sum of annualised risk % capital 14.9

Of course this means if the upward march in energies resumes I'm now less likely to benefit; but that's life

Code:
==============================================================================================================================
                                                         Correlations                                                         
==============================================================================================================================

               BRE  CORN  CRUDE_W_mini  EU-OIL  FTSECHINAA  GOLD_micro  IRON   JPY  KR10  MSCISING  NIKKEI400  SILVER  SOYBEAN
BRE           1.00  0.16          0.18    0.09        0.08        0.18  0.10  0.08  0.00      0.05       0.14    0.16     0.13
CORN          0.16  1.00          0.20    0.05        0.03        0.15  0.16  0.12 -0.08      0.02       0.03    0.13     0.41
CRUDE_W_mini  0.18  0.20          1.00    0.17        0.07        0.13  0.24  0.02 -0.01     -0.07       0.05    0.15     0.17
EU-OIL        0.09  0.05          0.17    1.00        0.13       -0.06  0.10 -0.07 -0.07      0.31       0.26   -0.01     0.08
FTSECHINAA    0.08  0.03          0.07    0.13        1.00        0.10  0.08  0.05 -0.02      0.18       0.21    0.11     0.12
GOLD_micro    0.18  0.15          0.13   -0.06        0.10        1.00  0.09  0.29  0.08     -0.05       0.04    0.47     0.13
IRON          0.10  0.16          0.24    0.10        0.08        0.09  1.00  0.01 -0.03     -0.09      -0.08    0.13     0.19
JPY           0.08  0.12          0.02   -0.07        0.05        0.29  0.01  1.00  0.14     -0.02       0.02    0.24     0.06
KR10          0.00 -0.08         -0.01   -0.07       -0.02        0.08 -0.03  0.14  1.00     -0.01       0.03    0.06    -0.16
MSCISING      0.05  0.02         -0.07    0.31        0.18       -0.05 -0.09 -0.02 -0.01      1.00       0.34   -0.01     0.08
NIKKEI400     0.14  0.03          0.05    0.26        0.21        0.04 -0.08  0.02  0.03      0.34       1.00    0.05     0.07
SILVER        0.16  0.13          0.15   -0.01        0.11        0.47  0.13  0.24  0.06     -0.01       0.05    1.00     0.10
SOYBEAN       0.13  0.41          0.17    0.08        0.12        0.13  0.19  0.06 -0.16      0.08       0.07    0.10     1.00

Interesting that Crude is more correlated with Corn than with European oil equities.

Rob
 
Last edited:
Code:
32030 BRENT-LAST dynamic_TF_carry [20220600] 2022-03-10 14:00:35 [-1] 112.97000

The timing on this closing trade turned out to be spot on, close to the top of the day :) (I'm assuming times are UTC).
How did it execute at that time? I know at some point your execution algo was checking that the bid-ask spread is no bigger than X multiples of the minimum tick size. Does your execution try every X minutes and then finally it succeeds when there's enough liquidity that the spread is small enough, or something else?
 
Hello Rob

I see that in the post above you have 13 DO positions. Are you able to tell us what an average number of positions held at any one time is under DO? Max and Min too, if you are able to do that.

Thanks,
KH
 
Hello Rob

I see that in the post above you have 13 DO positions. Are you able to tell us what an average number of positions held at any one time is under DO? Max and Min too, if you are able to do that.

Thanks,
KH

From the backtest

https://1.bp.blogspot.com/-8PPER8WM...0wqqDowT3d9Mu8xgCLcBGAsYHQ/s1920/Figure_1.png

Average (once I have all the markets in my dataset) is probably about 25, max 45

13 is really low; but then I have 40% of my average risk on so that makes sense

Rob
 
Back
Top