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.
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.
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.
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.
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.
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 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.