Trading has evolved greatly in the past decade that I’ve been active in the markets. With it have been incredible advancements in how markets are traded, entries are found, and systems are implemented — but with great power comes great responsibility, and there’s always some tech hiccups to overcome/avoid in the process.
To provide a little context—I say this with hesitance—I’m a full stack developer but prior to my focus in programming I was a discretionary futures trader, and before that I was a market maker on the floor of what’s now the ICE. I have both high and low tech backgrounds, but roughly 95% of my trading is automated.
Going Live
I’ll begin with a story... recently I was launching a new portfolio, which for me means monitoring the system particularly closely for a few weeks, and being ready to fix any errors. I noticed that unlike in the past, I found this task to be particularly difficult to manage in a hands off type of way. I suppose I had expectations for this portfolio, and had researched and tested it pretty heavily, so I knew what to expect and what I wanted to see from it, which naturally leads to a greed/fear hybrid of trading emotions.
On the first day, I noticed a few mistakes in entries, but they were quickly resolved — all was working as it should have been, except I thought I knew better. With all the headline risk, and the fed minutes coming out in the prior weeks I thought I should ‘confirm’ that my system wasn’t walking into any sentiment buzzsaws. Typically, I would consider this to be a more justified and responsible method of overriding a system, like tweaking or halting a system prior to an earnings announcement. I now have new rules for what constitutes a ‘good’ override, and it’s not quite that simple.
Maybe I could do better?
I saw a trade that looked to be just a typical computer logic mistake; it was in Gold (GCQ19), and it was about to enter a solid short position after a large gap down had seemed to hit support. My days of discretionary were screaming at me to avoid this trade, but I decided if anything, I’ll simply exit it quickly if it moves against me. In general I don’t like to change trades, but I will occasionally exit earlier/cut losers if systems have a long holding period. This system has a holding period of <1hr, so I was completely lying to myself either way I looked at it here.
The trade filled, and I was quickly down about $100/contract. I was looking for my exit, convinced I needed to override systems regularly as this couldn’t have been more clear. I waited for the system to (hopefully) find its way back to near even... a statement to generally be avoided in trading.
The position clawed it's way back to -30, much closer to even than it had been (by now it had bounced around the stop at -350) and I closed it without second thought. Within 10 minutes it had hit my trail stop floor of +250; it went on to close (in sim) around 370, I was kicking myself for my impatience.
... I can’t
We build these systems to trade better than ourselves, to avoid these heuristic mistakes and biases. However, if we’re overriding our work at every turn we negate the primary benefit of automated trading—the elimination of human error.
I decided there really hasn’t been much research on the topic, and without opening the floodgates to a massive amount of data snooping or hindsight bias the only way to do this was live, with money and opportunity on the line. I decided to dedicate (butcher) 10 trades over the course of a week for a small but fair miniature sample in how overriding systems effects my performance.
I had one example, and I had 9 more to go—I’m aware the standard of statistically significant is >30 observation periods or >100 observations, but if I did this 100 times with the current aggregate expected value of -34,000, I would have no business trading.
Results
Attached are my trades reported for the week, with my actual performance compared to the overridden results. It's no equity curve, simply a visualization of my results with and without my limited interference.
As you can see, the interference was for the most part harmful to the account performance. When I think I know better, it seems in most cases I simply don’t; I am better off letting the systems I worked hard to develop run without interference or intervention.
Improve monitoring habits
If you need more convincing, here’s a few things I noticed in the process:
First off — when you override your system you pretty much ruin your performance data. My weeks performance doesn’t reflect my system performance, more so it reflects my weird hybrid trading systems performance. In terms of validating a new portfolio, this weeks data is useful to me for reference, but useless in terms of performance measurement.
I also had a few interventions where I ended up causing way more problems than I fixed — for example on RB & NG trades, I closed a position out in profit, and then the systems hit the trailing stop floor and executed the trailing stop — entering me in the reverse position, both times for a frustrating 1 tick loss.
I also noticed that interfering tends to lead to more interference as you look for more opportunities, try to optimize every single trade, or try to make up for a dumb past mistake. It also seemed to create more stress, as I no longer viewed it as out of my hands, but rather felt I needed to find the mistakes of my system before it was too late.
Most importantly, interfering with my systems cost me money! There’s no reason to look further for justification, for me it was a less efficient and more costly method of trading.
After a rather frustrating week, I had come up with a few tips that helped me monitor properly, and separating potential good intervention vs bad intervention.
Let’s begin with defining what I consider a practical override. I think if there is rare and unusual excess headline risk, or intangible risk that it is okay to intervene by modifying parameters prior to trading day or to simply turn the system off temporarily. I don’t think this should be done often; an example is an earnings release in an equity your trading, or a fed meeting when an interest rate decision is imminent. To give you an idea of what I believe constitutes excess risk, I don’t think this should be done more than 4-6 times a year. Don’t halt your system every time there is a presidential tweet — you’ll never fill any trades.
Some tips to help with monitoring:
Failsafes:
***I use an int based boolean, with levels 0 1 or 2 for level of alert (0 is off, 1 is printed Alert, 2 is Halt (qty = 0)) ***
Happy Trading!
-ZO
Interactive Brokers Modular IB strategy is ready to automate Futures, Options, Equities & FX via IB API
Sign Up Now