I developed an automated strategy from a custom indicator Iam working on now for a while. I did a backtest for the last 2 years and received a maybe to promising result and I would like to ask some of you for feedback.
At he moment it trades only DAX Futures on a 5min chart with long signals only. Is there any chance to put the strategy under more „pressure“ to see how it works? I already increased commission by 150% and slippage to 100% and I still get very good results. Beside that you probably need a min. account size of 100K to trade 1 DAX contract (25€ per point) and low latency.
Some details:
Profit Factor: 1,73
Total Number of Trades: 21 442 (Win 15 022/Loss 642) -> 70% profitable
Avg. Trade Net Profit: 31,94€
ROC: 684,95%
DD: 16,13% of Initial Capital
I attached the Performance report as a XLS file.
I appreciate any feedback!
The following user says Thank You to FutureTrader112 for this post:
I'm a noob myself but generally I pay attention to the following if I feel "its doing too good"
1. Strategy needs to be tested over system that is taking actual OHLC, means no synthetic bars - like renko, heiken etc
2. Usually this can also happen when you are just configuring entries and exits and no SL or TSL. Be it % or point value, you need to define them.
3. If strategy is giving unbalanced results on bullish or bearish side, if that's the case it might be case of curve fitting.
4. Checking if strategy is performing on different volatility and if possible scripts. Robust strategy will give reasonably close results on different conditions, if its not doing so then it might be again case of curve fitting. I'm not saying you can't have script specific strategy, its just better to test it across different conditions and scripts before you go live.
Just my noob 2c, you can choose to give it less importance
I would also suggest to check out posts from Kevin and vemodus on this forums, they have posted some really helpful content on this subject. Kevin also has books after his name.
Iam not sure what you mean with your second point. Here Iam using a Trailing Stop in %?! And how I could avoid curvefitting?
What do you mean by "script specific strategy" and how would you test a strategy on different volatility? I think with the Corona imoact we had one of the biggest volatility peaks in the last couple of years?
Those points are what I would check, if you have SL/TSL of some kind, its fine. What and how to use there is completely up to you.
As you have mentioned, you have tested this only on Dax, consider testing other instruments. Market conditions change quite often, like these days every quarter there is something different going on. In fact my personal view is that its not that worth to go back beyond 6 months to do back tests, unless there is special requirement for it, but of course each person will have different view on this. Also change in volatility doesn't mean just "high", it just means change, if tomorrow it drops to pre-corona time, how would your strategy handle it? I also notice in your excel it only has long trades, does that mean system only takes longs and no shorts? See the "possible" issue?
I would like to humbly suggest to read Kevins books, its a lengthy subject and its a fair start up guide.
I dont agree with you here. I think it doesnt make sense to test the strategy with other instruments like FX or Commodities, because every market even every stock has it own specifications, participants and supply/demand function. The best way to test a strategy is to put a lot of pressure on it, you need to try to "break" the strategy. WHen it still works you are good to go.
That's a beautiful equity curve. I can understand your skepticism
I would, at this point, observe signals from the model in real-time and compare your model's execution assumptions to actual market conditions.
What about trade frequency? That is, roughly how many signals does the strategy generate on a daily / monthly / annual basis? Have you compared the model's performance during bull markets in the DAX to its performance during pullbacks?
The following user says Thank You to Schnook for this post:
As you can see in the Performance Report the strategy opened 21 442 Trades (1000 Trades/Month +-). The strategy only trades during short term Bull markets (only Buy signals, see below the screenshot from the last couple of days). Sell signals are working as well but with less profitability and effciency.
I backtested it with a small account and trade size, but it didnt work, because of the high slippage and commission. I assume it would only make sense to try it with a 100K account, 1 Dax contract (25€/Point) and low latency server.
Maybe you have another idea how to backtest it in another way?
from your screenshot it appears your code might be using the SetPercentTrailing reserved word. If that is the case I would suggest using the look inside bar backtesting feature with 1 tick resolution in case you don't do that already. As you might not be able to access more than six month of tick data start with testing the most recent months and compare results between using 1 tick resolution, 1 minute resolution, and with look inside bar backtesting disabled.
Is this Tradestation data or 3rd party data and in the latter case is this for the future or the index?
ATM I dont have access to Tick Data, because I use TS via Interactive Brokers. The report I attached in my 1st post is already with the 1min Intraday Bar backtest. Without the look Inside Bar the results are obviously better, but the strategy has the same profitability of circa 70% and nearly same amount of trades with circa 950 to 1000 trade per month.
Overall e.g. the Net Profit is lower, but still like >100% ROI for the last couple of months. I hope TS could fix the issue with the Tick Data and Interactive ASAP to confirm the results on the "hightest" level (speaking of backtesting).
That looks indeed like a nice equity curve
Have you done any Walk Forward testing?
How have you approached the testing process?
Did you optimize on the total data set or just a small portion (in vs out of sample)?
I didnt optimize the strategy per se, because the indicator values are the same. I only adjusted the risk management.
At the moment I just compare the trades made by the strategy with realtime data and so far it looks quite good. So far >90% of the trades are like the trades from the backtest with ca. 3,5K profit for the last 2 weeks.
Just a couple of thoughts:
- The more trades, the more important it is to have tickdata/intrabar info for the backtest. With 1000 trades per month, especially in the FDAX a tick here or there can make or break any system. FDAX often times is not liquid or gaps a few ticks in between.
- You don't necessarily need to trade the FDAX contract itself. The cfd liquidity pools have improved the past years to the point where you get really good executions with some brokers (sometimes even better than FDAX) with Micro-Contracts.
- Some brokers offer free CFD tickdata for the past years (e.g. with the cTrader Software)
I totally understand your point and Iam with you regarding the amount of trades, but the problem I see here is with the CFD Brokers. You are right they provide free Tickdata, but most of the time it doesnt match with the "real" Future data. I think I just need to continue with the real life test and see how it goes
Tradestation will only be aware of four data points per bar by default - Open, High, Low, and Close. However, it will not be aware of how the bar developed from Open to Close, and will make assumptions. These assumptions will not necessarily reflect what actually happened at that time and can/will lead to backtesting results that are different to how the strategy would have behaved in real time at that time.
The look inside bar backtesting feature gives Tradestation the ability to load a finer resolution in the background and with that it is able to more accurately tell how the bars developed which in turn helps in getting a more accurate result. If your strategy can enter or exit during a bar you will usually want to use this feature.
One way of avoiding the need for tick data could be to design systems that only issue market orders at the end of the bar. If I recall it correctly @kevinkdog showed a few examples of profitable strategies designed this way in his webinars he did for futures.io.
Regards,
ABCTG
The following 2 users say Thank You to ABCTG for this post:
I dont want to go into to much detail here, but the strategy buys via a Market Order at next Bar only the Close could be inside a Bar with the SL or TP. Maybe they solve the "issue" with interactive regarding the Tickdata soon.
So far I monitored the trades in real time and it looks good, I will keep you guys updated and I will definitly have a look at the webinars of @kevinkdog
Avoid it by not using it. You can create a trailing stop yourself (or find one already created, maybe here or at Tradestation forum, for example) that does not need tick data.
The following 2 users say Thank You to kevinkdog for this post:
Iam sorry I didnt follow up on this thread. Iam to busy at work right now, because of an acquisition we did. I hope I can put some time in during Christmas.
From my experience this strategy will not backtest correctly without tick data. Without tick data the backtesting engine does not know which direction the bar went first and it is giving you the benefit of the doubt that your trailing stop filled prior to your stop loss. The easiest solution would be to get tick data (6 months may be all you get) and test with that. I guarantee your equity curve will look far different. Even removing the trailing stop and utilizing hard profit and stop losses will not backtest this correctly without tick data. You are only guaranteed to do it correctly if both your stop and profit target don't both occur in the same bar, otherwise Tradestation doesn't know which hit first.
Hard Profit and Stop Losses - may need tick data if they are both small values (think scalping). Otherwise using 1 minute Look Inside Bar Backtest resolution should be fine - that is what I use on almost all my strategies.
I agree a simple 3 month test is the best way to see:
A) No Look Inside Bar Backtesting
B) Look Inside Bar Backtesting set at 1 minute
C) Look Inside Bar Backtesting set at 1 tick
If A&B or A&C give same results, then LIBB is not needed.
If B&C give same results, different than A, then 1 minute LIBB is likely sufficient
If A, B and C are all different, 1 tick resolution is likely needed, which limits backtest length to 6 months.
The following 2 users say Thank You to kevinkdog for this post: