That graph looks like a bunch of spaghetti, I realize. But I’ll explain!
testing Genotick. It’s an open-source machine-learning java script. Probably to the developer’s dismay, I’m always throwing things at it to make it break. Much like a small child throwing a temper tantrum, but with stocks.
The previous version of the software had an added ‘feature’, which allowed for the little tiny robots in Genotick’s brain to have more than one instruction per robot. (Sorry if this technical language is over your head.) The developer wanted more variations in the predictions, so that users wouldn’t all be hopping on the same trades, thus skewing the results.
However, it turns out this multiple-instruction version was actually reducing performance quite severely, and Genotick had less success finding an edge. For the latest version, that’s been removed, but other nice features have been left in.
I thought I’d give it a test on some UPRO data from 1/1/2010 through the current date. Why UPRO, which is a 3x leveraged ETF that tracks the S&P 500? Why not regular ol’ SPY? Because I had the data sitting around already for some other purpose, that’s why!
Above are the results of 16 runs, using 20,000 robots per run (the developer calls them “programs”, but that’s not as fun). This isn’t compounded, it’s just adding the percentage gain/loss of each day. You can also see the price of UPRO as a thin gray line. Yes, it’s a visual mess. And all the runs took a serious nose-dive, and only a few ended up even profitable.
But that’s not the point.
Genotick trains as it goes. There’s no in-sample training data set…it continually uses the past to guess the future. Each program that guesses correctly is rewarded, and lives to fight another day. Programs that guess incorrectly are weeded out. As time goes by, Genotick gets better at guessing.
As you can see from the chart above, Genotick figures out how to make money about half way through. From there the equity curves are pretty consistently upward. It is not an unreasonable assumption to look at programs that are successful after awhile, even if they are in drawdown from the initial stages. Or perhaps you think that *is* unreasonable…in which case, tell me why you think that in the comments section.
Below we look at the second half of the data. I’ve zeroed the Genotick runs, and the actual price of UPRO is again in the background in black. These runs are all very consistent with each other.
If we compare the daily percentage gains and losses of UPRO vs the best Genotick run, this is what we see:
Blue is UPRO returns, red is the Genotick best run. The Genotick run is a straighter equity curve. You can see UPRO starting to tip over, whereas Genotick gets there more efficiently. Yes, UPRO was more profitable at one point, but a) they both end up about the same place, and b) there’s more to the story.
Now let’s look at drawdowns for both curves:
Orange is the new black, or in this case, the best Genotick run. Gray is UPRO. You can get a sense just by looking at the drawdown chart that UPRO spends more time in drawdown. This is backed up by the percentage of time each curve is making new highs:
One last detail: Genotick has a setting where it will stay out of the market if the robots are not sufficiently convinced they have a consensus. For this set of runs, I had a 10:1 ratio set. This means the UPs must outweigh the DOWNs by a ratio of 10:1 to offer a prediction, otherwise the system remains flat.
Genotick was only in the market 56% of the time, whereas UPRO buy-and-hold was in 100% of the time. This means that the Genotick run averaged a +0.2% gain per day, whereas buy-and-hold only averaged +0.12%.
If you look at all the times Genotick was right, divided by the total number of times Genotick made a prediction (i.e. entered the market), the hit rate is 57.37%.
Not bad for a robot.
The usual caveats apply: this in no way confirms that Genotick is predicting the future. Nor are pesky details like commissions accounted for, which certainly would add up if you were trading daily, or even every other day (which is what this run would have had you doing). You’d need a really high position/commission ratio for this to be practical.