Fully automated futures trading

Sorry I don't understand what that means.

I guess I was wondering if your method scans all those markets and enters/exits based on inter-relations between each other at approx the same time or is it the same method just applied to each instrument individually.
Based on your reply I assume its some form of the latter.
 
I guess I was wondering if your method scans all those markets and enters/exits based on inter-relations between each other at approx the same time or is it the same method just applied to each instrument individually.
Based on your reply I assume its some form of the latter.

Yes you're right its applied to each instrument individually, with a cross market risk management overlay (which isn't doing anything right now). There are some cross market signals in there, but they are aggregated up with everything else to a signal for each individual market.
 
Yes you're right its applied to each instrument individually, with a cross market risk management overlay (which isn't doing anything right now). There are some cross market signals in there, but they are aggregated up with everything else to a signal for each individual market.

If you don't mind me asking further, how many degrees of freedom are being manipulated within each instrument to build up its meta signal. Instances of such degrees could be number of ticks analyzed, bar widths, number of days, sub signals,number of indicators, their thresholds etc. Just wondering about approximate numbers.
 
Last edited:
Todays trade:

Code:
     code contractid     filled_datetime  filledtrade  filledprice
2757  KR3     201503 2015-02-11 01:01:56           -1       108.48

Slippage in GBP, for entire trade

     code  gbpt_slippage_process  gbpt_slippage_bidask  gbpt_slippage_execution  gbpt_slippage_all_trading  gbpt_slippage_total
2757  KR3                  -6.16                  3.08                    -6.16                      -3.08                -9.24

A quick explanation of these tables.

'gbpt' is just GBP total. Negative slippage means I made money executing, positive I lost.

A= Mid Price when data grabbed
B= Mid price when order issued
C= Bid price when order issued
D= Traded price

'Process' is money lost (-ve = gained) between prices A and B, 'Bid-Ask' would be what I would have paid if I had just hit the bid i.e. C - B, 'Execution' is what I pay versus what I would have paid if I'd just hit the bid (i.e. D- C). So in this case I made £9.24, of which two thirds was just a fluke of the price moving in the right direction, and £3.08 from not just issuing a market order.

Todays p & l: £1,350

Impressive 350k profit in under one year, what was your starting equity? could you talk a bit about your entry and exit.

Starting equity was £300K, and as I said earlier I'm now operating with £400K, so I've withdrawn £220K (actual profit to date £320K) to pay taxes, living costs and to reinvest in safer portfolios which I run to to get a steady yield.

I don't have discrete entry and exit. Each market has a continous signal; when it goes to zero I'll not hold a position. Signals are a mixture of trend following, breakout and Carry (or rolldown/contango if you prefer). The predominance of trend following means positions will tend to be cut when prices move against us, so its an implicit rather than an explicit stop loss.

If you don't mind me asking further, how many degrees of freedom are being manipulated within each instrument to build up its meta signal. Instances of such degrees could be number of ticks analyzed, bar widths, number of days, sub signals,number of indicators, their thresholds etc. Just wondering about approximate numbers.

I use daily prices to generate the signal (but the most recent price used is the one we've just got, not yesterdays close). Signals vary in their use of time, the slowest uses about a year of data. There are currently four signal 'styles', covering seven signals, and each of those may have different lookbacks, so 17 subsignals. To take a concrete example one of my styles is trend following and one of the signals within that is a break out signal, and I use five different lookbacks for that.

I'm not sure 'bars' or 'ticks' are relevant to me. I don't know what you mean by 'indicator' or 'threshold', perhaps you could give an example.
 
I can tell you my biggest winners and losers over the last month if that's of interest:

Biggest losers (excluding hedging): SMI (now famous black swan event - I wasn't in the currency but the equity hurt some), CRUDE (I trade pretty slow so I've remained short through this slow $6 rebound),

Good to have the "hedging" stuff! Just don't know how much it would cost and how to do it.
 
Last edited:
2014 was a very good year for trend following systems, your trading result reflects this. Just wondering, how would your system perform from year 2009 - 2013 on backtest, I know most trend following systems had flat to negative returns during that period. If your system were able to capture profit during that period, you may have found the grail. ;)
 
I use daily prices to generate the signal (but the most recent price used is the one we've just got

Am I understanding correctly that your signals are generated from OHLC daily values but after the signal aggregation procedure has taken place and an order is generated the ordered is entered as a limit or stop order based on the bid/ask spread you have at the moment in which the order is about to be placed.
 
Am I understanding correctly that your signals are generated from OHLC daily values but after the signal aggregation procedure has taken place and an order is generated the ordered is entered as a limit or stop order based on the bid/ask spread you have at the moment in which the order is about to be placed.

Not quite. Here's my raw price data for Eurodollar (just focus on column 1 - date, and column 3 which is price)
Code:
2015-02-09 19:22:51   1  97.7325         201806   363320
2015-02-09 23:00:00   1  97.6900         201806   363500
2015-02-10 12:20:38   1  97.6550         201806   363501
2015-02-10 13:29:10   1  97.6525         201806   363528
2015-02-10 14:43:39   1  97.6725         201806   363550
2015-02-10 16:15:29   1  97.6775         201806   363594
2015-02-10 17:33:11   1  97.6725         201806   363625
2015-02-10 18:54:33   1  97.6975         201806   363649
2015-02-10 23:00:00   1  97.6800         201806   363840
2015-02-11 12:18:34   1  97.7125         201806   363841
2015-02-11 13:31:01   1  97.7050         201806   363870
2015-02-11 14:53:08   1  97.6975         201806   363896
2015-02-11 16:24:26   1  97.6800         201806   363938
2015-02-11 17:42:54   1  97.6725         201806   363969
2015-02-11 19:01:55   1  97.7025         201806   363991
2015-02-11 23:00:00   1  97.6700         201806   364161
2015-02-12 12:00:16   1  97.6325         201806   364162
2015-02-12 13:01:37   1  97.6400         201806   364191

You can see that the prices are a mixture of close and intraday prices. Right now the last price showing is intraday. Also note I have an irregular sampling regime. This is a product of the way my system works.

I take the last price in each day (not an average, or it messes up estimates of vol)

Code:
2015-02-09 23:00:00   1  97.6900         201806   363500
2015-02-10 23:00:00   1  97.6800         201806   363840 
2015-02-11 23:00:00   1  97.6700         201806   364161 
2015-02-12 13:01:37   1  97.6400         201806   364191

Normally this means I will have a bunch of close prices, and then one intraday price at the end.

I then treat the above as daily data. If the price crashes intraday I will react to it rather than waiting until the next day. So its marginally better than just using closing data.

This is all to make life easier. As I'm trading slowly it probably doesn't make much difference.

There are some alternatives, all of which are more complicated:

- use estimates of things like moving average that account for irregular time intervals
- resample everything to say 3 times a day, then run on 3 times a day data

I then do as you say - submit a limit order based on the spread when I place the order. That's typically 30 seconds after I've grabbed the original price.

Hope I've explained that properly.
 
Starting equity was £300K, and as I said earlier I'm now operating with £400K, so I've withdrawn £220K (actual profit to date £320K) to pay taxes, living costs and to reinvest in safer portfolios which I run to to get a steady yield.

I don't have discrete entry and exit. Each market has a continous signal; when it goes to zero I'll not hold a position. Signals are a mixture of trend following, breakout and Carry (or rolldown/contango if you prefer). The predominance of trend following means positions will tend to be cut when prices move against us, so its an implicit rather than an explicit stop loss.



I use daily prices to generate the signal (but the most recent price used is the one we've just got, not yesterdays close). Signals vary in their use of time, the slowest uses about a year of data. There are currently four signal 'styles', covering seven signals, and each of those may have different lookbacks, so 17 subsignals. To take a concrete example one of my styles is trend following and one of the signals within that is a break out signal, and I use five different lookbacks for that.

I'm not sure 'bars' or 'ticks' are relevant to me. I don't know what you mean by 'indicator' or 'threshold', perhaps you could give an example.

Thanks global. By threshold I just meant, as a toy example, stuff like "if RSI > 70 then ..." where 70 is a calibrated threshold. Was just trying to get a sense of how many such degrees of freedom you are controlling and I think you were kind enough to answer it. I appreciate your answers and wish you the best. Will be stopping by from time to time to see how you are doing.
 
Yesterdays trades

Code:
        code contractid     filled_datetime  filledtrade  filledprice
2758     BOBL     201503 2015-02-12 07:34:11            1      131.020
2760  EDOLLAR     201806 2015-02-12 16:10:51           -1       97.705
2759   NASDAQ     201503 2015-02-12 15:30:46            1     4324.500

Slippage in GBP, for entire trade

         code  gbpt_slippage_process  gbpt_slippage_bidask  gbpt_slippage_execution  gbpt_slippage_all_trading  gbpt_slippage_total
2760  EDOLLAR                  -0.00                  4.10                    -0.00                       4.10                 4.10
2759   NASDAQ                  13.13                  1.64                    -3.28                      -1.64                11.49
2758     BOBL                   7.43                  3.72                     7.43                      11.15                18.58

An expensive BOBL trade....

Code:
2015-02-12 07:34:15 INFO    : trading      : Trade size for BOBL 201503 was 1 now 1 inside size is 191.000000 (issue_an_order)
2015-02-12 07:34:15 INFO    : trading      : Placing order of 1 for BOBL 201503 (issue_an_order)
2015-02-12 07:34:16 INFO    : trading      : Next orderid is 2758 (add_new_order)2015-02-12 07:34:22 INFO    : trading      : (algo, NA) Initial value of limit_price is 131.0 (update)
2015-02-12 07:34:23 INFO    : trading      : (algo, NA) Initial value of side_price is 131.01 (update)
2015-02-12 07:34:23 INFO    : trading      : (algo, NA) Initial value of offside_price is 131.0 (update)2015-02-12 07:34:26 INFO    : trading      : Placing order of 1 with limit 131.000000 for BOBL 201503 (EasyAlgo_new_order)
2015-02-12 07:34:26 INFO    : trading      : Updating orderid 2758 submit_datetime from 2015-02-12 07:34:15 to 2015-02-12 07:34:15.947780 (update_order)2015-02-12 07:34:26 INFO    : trading      : (algo, NA) Detected change in side_price, from 131.01 to 131.02 (update)
2015-02-12 07:34:26 INFO    : trading      : (algo, NA) Detected change in offside_price, from 131.0 to 131.01 (update)
2015-02-12 07:34:28 INFO    : trading      : (algo, NA) Detected change in message, from StartingPassive to Adverse price move moving to aggressive for 2758
BOBL 201503 (update)
2015-02-12 07:34:29 INFO    : trading      : (algo, NA) Detected change in limit_price, from 131.0 to 131.02 (update)
2015-02-12 07:34:32 INFO    : trading      : Fill done size 1 out of 1 for brokerid 2758 orderid 2758 at price 131.020000 (action_fill)

When I put in the order the market was choice 131, so I bid at 131. However it then moved to 131.01 - 131.02. When the market moves against me my algo cuts its losses and hits the offer. So I moved my limit to 131.02, where I got filled. This is 2 ticks away from the mid, rather than 0.005 I'd expect to pay.

Yesterdays profit £2,599

Thanks global. By threshold I just meant, as a toy example, stuff like "if RSI > 70 then ..." where 70 is a calibrated threshold. Was just trying to get a sense of how many such degrees of freedom you are controlling and I think you were kind enough to answer it. I appreciate your answers and wish you the best. Will be stopping by from time to time to see how you are doing.

Got it. No, I don't have anything like that. The only thresholds I have are when I combine my signals to get a joint signal, I don't trade very small signals below a certain level. This means I can make better use of my small capital.

2014 was a very good year for trend following systems, your trading result reflects this. Just wondering, how would your system perform from year 2009 - 2013 on backtest, I know most trend following systems had flat to negative returns during that period. If your system were able to capture profit during that period, you may have found the grail. ;)

Good question. It would probably have been flat because of the contribution of carry but I will produce an up to date back-test when I do my year 1 review in April.
 
Back
Top