As a result, it's important to develop a trading approach that can actually capitalize on the information. For that, I have found three things to work best:
1. Only trading on the highest signals of increase within a model that is a spectrum rather than binary classification. This usually doesn't increase accuracy much ironically but does increase the "average value" of buying on the increase signals. I usually set this through historical testing for prediction values and taking a top percentage of the prediction values to set the "threshold".
2. More features and feature selection tuning. Right now I'm using genetic algorithms to constantly try and test new sets of features, thresholds, "hold times" after buying, etc.
3. Work on minutes, not hours. The volatility is so high that you can actually capitalize well on the micro level in my experience.
While accuracy is important, the average trade value and trades per day are far more important to returns.
Interestingly enough, the algorithm was steadily making money until April or so, when it stagnated. Mind you, it was making money from January-March due to sheer volatility even while the price was dropping most days. I've actually shut mine down for two reasons - the plateau plus the fact that the market was too thin on GDAX to quickly trade on buy signals for the amount I was running with (ending at about $3.5K). If the market thickens, I'll likely start running it again.
Takeaway: this paper's approach may seem simple but honestly the reality is that with something so volatile it's surprisingly easy to capitalize on with algorithmic trading that learns even a few small features and trades frequently.
This sounds an awful lot like curve fitting.
Are you buying and selling, or are you shorting too?
Does this 60% accuracy remain if you change the training/prediction period? I'd guess that it would be more accurate if you train based on days versus seconds.
The training period I keep to 3 months and haven't really moved much since initially trying things. A month or less and the model is overfit and useless, too long and it's not working with current data.
The prediction/"hold time" changes absolutely make a difference. I was running on litecoin and found about an hour to be the sweet spot.
> days versus seconds
Seconds would be useless because you can't trade that fast - minutes is what I use.
Even if accuracy increases with a hold time over days, the average trade value doesn't go up nearly enough to make up for the trade frequency of the minutes/hours level. Why make 3 trades per week with an average value of .5% when you can make 4 trades a day for an average value of .15%? The compounding of that frequency works wonders, and that 4 trades a day for .15% is what I was actually hitting for a few months.
For the record, I do also compare to both naive buy/hold over the training period and the average trade value for the period for all times (different than the buy/hold time because I have a profit lock-in threshold for individual trades, also tuned with genetic algorithms), and the model outperforms both still.
The model is still predicting positively but the average trade value is shrinking + market thinning hence why it was breaking even recently until shut down.
Have you done any work on trying to predict breakouts or crashes? I often think how uncanny it is to compare market movements to simply the number of comments on Reddit threads, or numbers of tweets. I don't know if these are leading or lagging indicators though.
Just market features but I'm sure other features are out there. At the minutes level, predicting crashes doesn't do much good as often crashes have ideal 1 hour buying windows so the macro crash/spikes don't really matter, and if they did, would be caputed by the model still.
Is there some reason the study doesn't include the post-December 2017 bear market?
All methods that you'll ever see have >50% accuracy, because if you find a signal with <50% accuracy you'll just flip the sign in the sginal and call it >50% accuracy.
Here's a bit relevant to this conversation:
> Previous work on predicting the directionality of Bitcoin prices has shown that significant signal exists in the price of the cryptocurrency. Hegazy and Mumford (2016) compute an exponentially-smoothed Bitcoin price every eight minutes; using the first five left derivatives of this price as features in a decision-tree based algorithm, they predict thedirection of the next change in Bitcoin price with 57.11% accuracy.
> Their results substantiate earlier research done by Madan, Saluja, and Zhao (2014), who found that by using the Bitcoin price sampled every 10 minutes as the primary feature for a random-forest model, they could predict the direction of the next
change in Bitcoin price with 57.4% accuracy.
> An alternative model was used by Sebastian, Katabarwa, and Li (2014), who use the Bitcoin price sampled every minute as the primary feature for a forward-feed neural network. Their results suggest that this system predicts future Bitcoin price directionality with 60% accuracy.
The most glaring evidence that this entire paper is garbage is the fact that zero time is spent on putting these numbers (57.11%, 57.4%, 60%) in context. What do I mean by context? For example, observations like the fact that for the same dataset if you use a daily resolution and your prediction is always "up", you'll beat those accuracies. Obviously, the reason why this discussion is absent is because it's a lot harder than just dumping a dataset into sklearn.
Don't get me wrong, sklearn+CSV is great for learning, and great for initial experimentation or playing around. But it's just too far from the real process to be meaningful imo.
That's not a context. That's the statistic they're calculating.
> To me 60% sounds good, but apparently not to people in this thread :)
What does "good" mean, and compared to what? If you can't put a number on "good" you're flying blind.
But hey, I'm just trying to warn people that the maths are garbage here; but if that looks good enough for you go ahead and trade it.
Now, that would be a decent out of sample test, wouldn't it?
Also, keep in mind that at hourly resolution, with a highly autocorrelated dataset, 60% is not much better than coin toss.
I would like to see if any of the methods they used would outperform just using what happened in the previous period as one's prediction.
Can anyone clarify what the movement of Ether between contract addresses has to do with the price of Ether? Intuitively, the price of ETH would move when it is traded against other currencies, not when it is transferred between accounts on Ethereum. Yes, it's easy to write a contract that moves Ether. It's also trivial to create a Bitcoin transaction.
As far as I am aware, automated trading often works with much shorter intervals, in the milliseconds range. The traditional stock trading industry also does not only look at the price history, but also at planned buy and sell orders in the books and even news and social media sentiment analysis. Perhaps prediction methods that also use these strategies would produce better results, especially given that the crypto market has been in such a chaotic flux between 2015 and 2017.
They a look at the sampling distribution of your projected P/L assuming each trade is an independent Bernoulli trial with success probability 60%.
If you examine Metcalfe-Lee's formula for bitcoin valuation you will find that to predict price swings one has to track both:
Transaction volume and number of accounts involved in transactions
with those two pieces of info you can predict whether a starting wave is Speculative or consolidated, etc.
will put up a Medium article on Monday showing the ratio tools I came up with
If this is supposed to give insight to people on how to allocate their money, the critiques would have to be much harsher.
the only question i have: such worse performance by nn is strange, it should be similar to logistic regression..
In a different context, one could criticize the paper much more harshly, but it is OK as a term paper.