distribution
I’ll make a few more comments on the last strategy we looked at before we move on. Although I’ve panned it, it’s actually a nice strategy for consideration as it’s very simple to implement, efficient to run, has a plausible-ish sounding premise and can be permuted in many directions. It has the unfortunate characteristic of being a loser, but nothing is perfect. It might offset that characteristic by providing us with a means of seeing interesting phenomena or learning. For example, all of the futures exchanges I ran it against – ICE, CME and NYX performed very well. Might be something there. Or not. If we look at the distribution of the *best* performing of each of the 4 strategies we ran by instrument, we get a pretty clear picture:

This is each of the individual *executions* which the strategies made. On average, including fees & commissions, they lost 7-odd dollars per round-turn. Not good, and this was the best of the group. Pretty conclusive to me.
(This problem which I’ve tried to illustrate here – the data mining problem – is nicely discussed in chapter six of David Aronson’s “Evidence-Based Technical Analysis.”)
The next pair of strategies are inspired by a number of papers written by Prof Peter Stone in which he discusses market-making strategies. In his usage, a strategy is a market maker if it always maintains a bid and an ask in the market. We’re going to take this idea and create two very simple strategies: one which is a market maker which hopes to profit on reversion and one which will instead look to profit on trends.
Non-predictive mean-reverting market maker
This strategy is roughly based on this paper; it will always maintain a limit bid and a limit ask below and above the market respectively. The spread is adjusted by an optimizable parameter set by a user or perhaps an optimizer or other program. In the version I’m considering, we have three parameters to consider: what to trade (contract), minimum spread in ticks (integer) and an opaque adjustment factor which is a double. The adjustment factor will basically skew the spread away from the market based on my position in order to limit my inventory. For example, if the market is trading at $100 and I place my bid at 99 and my ask at 101 and my bid gets filled, my subsequent bid might be 2 dollars away from the market. Presumably the market will be more likely to hit my ask and reduce my inventory. As my position grows, the adjuster will continue to move me further away from the market. So, if the market bounces around this strategy will do well. If instead, the market shoots off in one direction or the other, then this strategy will get hurt badly.
Non-predictive trend follower
This strategy is essentially the inverse of the mean-reverting market maker. At all times it maintains a buy-stop above the market and a sell-stop below the market. Its behavior is not surprisingly roughly the mirror image of the other strategy – if the market shoots off in some direction, we profit and if it bounces aimlessly then we get hurt.
Oddments
A few final observations about these strategies before I conclude this post.. The first is their non-predictive nature. They are non-predictive in the sense that there is no predictive model underlying their “decision-making” such as it is. All the same, as we’ll see, they both exhibit noteworthy behavior in spite of their relatively dumb modus operandi.
Another thing worth noting is that in order to simulate the execution of these strategies, we need to have an exchange simulator which will support limit and stop orders. We do, so it’s not an issue, but there are reasonable concerns one should have when looking at the simulated results of such strategies. I’ll leave it at that for now, and in some later post I’ll discuss some of the implementation details of an exchange simulator and how a strategy developer can avoid pitfalls associated with simulated conditional orders.
Next time, we’ll look at some concrete results of these two strategies.
back-testing, books, performance analysis, strategy development