Fully automated futures trading

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

  1. 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.
     
    #11     Feb 11, 2015
  2. 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.
     
    #12     Feb 11, 2015
  3. 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: Feb 12, 2015
    #13     Feb 11, 2015
    .sigma and panganp like this.
  4. 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

    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.
     
    #14     Feb 12, 2015
    panganp, K-Pia and Jimmy Ray like this.
  5. Good to have the "hedging" stuff! Just don't know how much it would cost and how to do it.
     
    Last edited: Feb 12, 2015
    #15     Feb 12, 2015
  6. nvroy

    nvroy

    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. ;)
     
    #16     Feb 12, 2015
  7. 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.
     
    #17     Feb 12, 2015
  8. 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.
     
    #18     Feb 12, 2015
    solidme likes this.
  9. 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.
     
    #19     Feb 12, 2015
  10. 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

    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.

    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.
     
    #20     Feb 13, 2015