I think that is a good idea and backtesting is essential. I am doing the same.
Thanks for your example, nice to see others doing the same thing. Right now my tool is purely command line and not graphical, but I think when backtesting it is important to communicate what is happening inside the simulation. So I think I'll also add graphs to the backtester so users can study the strategies behaviour across the timerange, instead of just the output.
I suggest you don't use for backtesting all the bubble data as it will probably confuse the model. We are now at a very plain market it seems. Add maybe some movement from the very last part of the bubble so the model also reacts to some harsh movements. If you use all the bubble it might do some great decisions during the bubble and not a single signal during the plain period and you probably don't want that.
It appears that we currently are not in a bubble, but if one were to come (or a crash) suddenly I do think it is important to know that how the strategy will handle harsh situations (I think in a broader sense than one specific part just before or behind a bubble). Also the definition of a crash and bubble is pretty subjective I think, right? What if the there is a more gradual crash (like from now till december the BTC price dropping 10$ every month)?
Also make sure the model makes enough buy/sell signals. Only two or three signals might mean that your model has overlearned the data (like if it has been designed specifically for the underlying data and it for example buys at the lowest and sells at the highest giving a very high but not "real" model.) and that probably won't work with new info. If it consistently executes buy/sell signals duing all the time it probably is good. So add a limitation so it performs for example a minimum of one signal at least every X days.
Good point, I am currently logging the timespan in days and the amount of trades that happened but not the average time between trades (simple division of those two). Will add this.
You might also want to test your model against somewhat random created series of data (or from other stocks) to check how well it performs with those so you cover aswell the unpredicted and it does not perform horribly in a unexpected market situation.
Good point, especially testing against assets that are in the real stock market at this point as we all hope that one day trading BTC would be just as normal as any other currency (like FX). Will add some datasets for non crypto related assets.
Also take in account the commission and the slippage depending on the amount traded every time.
The bot does take fees into account (same as commission?) which you can configure yourself at the moment, it's not really advanced in that it can take a fee structure and calculate the fees dynamically (based on trade amount across the passed month like how Mt. Gox does it). So I will look into that.
The slippage is a bit harder one, as right now I only need to keep track of candle data. I think that the difference when trading small amounts is negligible but becomes more important when the investment increases. Not sure how to handle this yet, does your simulation take slippage into account?
--
back testing is never anywhere near true results.
I have unsuccessfully messed around with metatrader for fx trading and designed some system that looked great when back tested, but fall flat (or eventually fall) over time.
If possible forward test for a month .. don't place trades, rather just record what the trade would have been and work out the PnL from there.
A month lost in trading will mean nothing in the long run if the system is profitable, but can save you big bucks.
I also think it's pretty hard to predict the future based on the history. However it is the only thing we have (apart from things like fundamental trading). But it at least provides some grip. My bot already supports paper trading (simulating trades in the live market).
But when you are evaluating the results a month later you are doing the same thing as running a backtest for the previous month, right? Because after that month you still don't know if it will work the next month.