Algo Performance Poll
Forums › ProRealTime English forum › General trading discussions › Algo Performance Poll
- This topic has 34 replies, 12 voices, and was last updated 2 years ago by Eric.
-
-
12/20/2021 at 8:37 AM #183620
My algo performance is tracked here: Live performance updates for PRC Marketplace strategy: High Probability Reversal : Forum General trading discussions – ProRealTime (prorealcode.com)
12/26/2021 at 3:42 PM #183850My algo performance is tracked here: https://www.prorealcode.com/topic/nordicalgos-professional-trader-and-coder-2/page/3/#post-183848
12/27/2021 at 6:41 PM #183900Hello folks!
So a quick update on my 39 lines programme running in Demo since 29th Dec. 2020 on NQ 1 min TF, 1€ per point, 1 contract.
A total of 313 trades with a win rate of 57% and a net gain of 3859€. At the time I’m writing, there is a latent gain of 43€. So all in all, it’s a net gain of 3902. At 1€ per point, this is a capital of 15000*.5*.1 = 750€. So it made a profit of 520% in one year.
I didn’t do any optimization from inception. To be honest, I found the idea on internet, just had to adapt it a bit. The shocking truth is that it’s based on 3 simple, PRT built-in, Indicators.
My biggest regret is that I didn’t go live with this System. Psychology, Psychology, Psychology.
SL = 140 points, Max drawdown = 490€. Sharpe ratio of 0.21.
I don’t use the Walking Forward option in PRT. My way of testing is to optimize the system on 2 to 10k, then set the parameters to fixed in the System, then increase gradually the number of units 10k, 15k, 50k and so on and see how long it takes to the System to become negative. The longest the period is, the more robust is the system. Why? my belief and may be I’m wrong, since the market structure changes, WF in PRT will test on market data within the same period of optimization, i.e. same market structure, so any sudden change in market structure can blow the account. However, with testing a set of parameters on a longer period, takes into account the change in market structure.
Conclusion: yes, good systems work over time. Needs a good understanding of how the indicators are calculated, how do they work and how do they interact with each other. Needs patience. Needs a sufficient SL to give a chance to the market to breath. Again, it’s not my own idea, so I don’t take credit for it. In my personal experience, the Exit Strategy with Money Management (SL, trailing system, etc.) makes 80% of the success of a trade.
I just took the decision to revisit the system with all what I have learnt on this forum during 2021 and run it live. Fingers crosses. Special thanks to Nicolas, Roberto, Vonasi, JuanJ (South Africa) and GrHal.
Keep Faith in what you’re doing.
3 users thanked author for this post.
01/08/2022 at 1:35 PM #184882I have 12 bots running on the DAX, DOW, SP and NAS. After the first full year of live trading, I’m up over 1000% (22% per month, compound). I’m a happy boy.
I didn’t touch any of them until I hit some big losses in November, then did some reworking across the board. I’m sure you’re all familiar with the concept of Pareto Optimality: how to improve one aspect of a system without screwing up some other part; time will tell if I’ve got that right … probably crash and burn and lose everything I’ve just gained.
TFs are all short, between 1m and 5m. Half of them accumulate orders, they massively out-perform the ones that do not.
Most successful instrument: SP 500, no contest. The broader base of the underlying data seems to smooth things out, makes it more amenable to bots. At least that’s my experience.
I don’t use the Walking Forward option in PRT
Neither do I. I did when I started out, until I realised what a blunt tool a backtest is. The only way to get any impression of OOS performance is a few months in demo, to include overnight charges, slippage, changes in the spread etc.
Perhaps the biggest problem I have with the WF engine is that it will always select the top result, based on the return of 1 criteria. I tend to look first at GAIN/DD. Also a higher % of more trades is preferable. This takes some interpretation of results that the WF engine doesn’t offer. I’ve become quite obsessive about getting the DD as low as poss, often at the expense of apparent gain. My MM code works in relation to the DD, so that is the crucial metric when MM is active.
Your walk back approach (10k, 15k etc) sounds interesting. I think Grahal works that way as well. Certainly a quicker way to get some ballpark figures. Doing 1m bar backtests with MTF can make you lose the will to live.
Hope this is useful, best of luck to all!
01/08/2022 at 1:45 PM #18488401/08/2022 at 2:02 PM #184885Your walk back approach (10k, 15k etc) sounds interesting. I think Grahal works that way as well.
FWIW : I most certainly apply that, but with a (psychological ?) twist;
Say you tried your best on NOT over-optimising, up to thinking that you did not optimise a thing at all (I tend to think I never do – only apply new theories). Then you test at a fair amount of in my case 50K bars. Say the result is 2000. Now :
Once you double that testing to 100K and way less than 4000 comes from it up to even losses, you know enough, right ? In other words, although all can be coincidence, if you don’t approach that double-amount, chances are fair you over-fitted things. But if not, do the 200K.
Same thing applies.Last step obviously is the 1M and if that doesn’t do the 200K * 5 then something is amiss again.
From my own experience : that linearity is never achieved and I am satisfied with 1M = * 2 of 200K. I think this still ain’t the correct approach and my conclusion remains that no matter how much I try, I am over-fitting in the first place (thus with the 50K already). 1M should make 200K * 5 – period.The WF of PRT already fails because it cuts the last trade within a bin. Didn’t you notice ? and since running trades (for me !) are mostly in a loss except for that last few minutes, WF just fails on me (but it fails in reality of course – it’s a bug).
My biggest regret is that I didn’t go live with this System.
It could be your biggest power. Not being greedy …
1 user thanked author for this post.
01/08/2022 at 2:23 PM #184888I think MTF is a must, like when you trade manually, you look at different TFs at the same time. In addition, you want to take the Signal on TF1 (high) and execute the trade on lower TF2. Say your signal is H1, you cannot wait the end of the hour to take the trade, it will be too late (because PRT executes the trade at the opening of next candle). Some candles on Dow make 300pts, waiting means (1) you don’t optimize your entry point (cheap SL and larger gains if the trade goes your direction) and (2) exposing your yourself to a risk of reversal. Besides, you cannot update your trailing system/breakeven on a TF1, you need frequent.
01/08/2022 at 2:48 PM #184890Impressive @nonetheless. Bravo! We all agree DD is the first criteria to look at, not to blow out your account. I saw the System template you shared on this forum. Thank you for sharing your hard work and expertise. This template includes at least 4 different trailing systems. One question though, what’s the best trailing system would you recommend which captures the max of juice of MFE? Do you use tight or wide SL? rule of thumb please (%, x ATR, previous low on higher TF, etc.)?
01/08/2022 at 2:53 PM #184891Isn’t successful manual trading doing what works best TODAY and therefore could be viewed as overoptimised to market / price action TODAY?
Who of us say … NO my (old) strategy worked for me, 1,000,000 bars ago, and I am going to damn well stick with it, come what may, until it works again! 🙂
I see regular optimising in the same way, if a strategy IS working Today, This Week etc then leave it running / stick with it.
If a strategy is NOT working then optimise for a recent period – 1 week, 1 month, 6 months, 1 year etc; depends on TF and the strategy, no 100% correct guideline / answer in my opinion.
I don’t expect 10 x gain over 100k bars than I got on the 10k bars over which I optimised (In sample). If trades are being taken at logical points in price cycle (Longs in Stage 2 and Shorts in Stage 4 etc) over the 90k bars OOS and not spend too long below 0 / zero on the equity curve, then I progress to Demo Forward Test.
Good job we are all different else markets would stagnate!? 🙂
01/09/2022 at 4:05 PM #184956I’ll try to answer some of the questions raised here, but first I want to make one thing clear: I don’t really know what I’m doing. Yes, I have something of a handle on technical analysis but until a couple of years ago I had never coded anything in my life. I learned everything here on these pages with infinite gratitude to Nicolas, Roberto, Vonasi, Grahal, Paul, Fifi and many others (the true Jedi Coders). My little PRT badge says Master but I am very far from that; I am at best a maverick who maybe figured a few things out … and maybe just got lucky. 😁
Having got that out of the way, this much I do know:
Things started working better for me once I abandoned ‘almost all’ First Principles, by which I mean an attitude that I can abstractly think my way into a description of market behaviour. Most people come to autotrading with this mind-set because in manual trading (in the absence of backtests), it’s all we’ve got. We rely on boilerplate rules-of-thumb, like MA5, MA10, MA20, or maybe Fibonacci numbers. This is what I would call a deductive approach, one that I have gradually replaced with the inductive. I just run the backtest and I use whatever numbers best approximate the result that I want, without imposing any pre-conceived notions. You could also say it’s a shift from the rational to the empirical, but whatever theoretical label you hang on it, it’s a matter of not trying to anticipate what I think the market is going to do (and what I think should work), instead, simply looking at what it is doing (or has done) and what does actually work. This shift had an even bigger impact on my manual trading, but that is a different discussion.
In autotrading the biggest danger is, of course, is curve-fitting, and it is possible that things actually starting working better when I simply moved over to 1m bar backtests. So, yes I am still curve-fitting the results, but it’s curve of 6 – 10 years and 1000s of trades, instead of the 2 or 3 years that 200k gives you. In shorter backtests, the danger of over-optimizing is always present. But once I’ve accounted for all variations of market activity over 8 years or so, and the BT says that Triangular 31 hits the sweet spot then that is what I use, no hesitation. We think of 10, 20, 30 as being round numbers (and somehow special) but that is meaningless outside of a mathematical context, just a habit of the decimal system. When describing the world outside of that, there is no logical reason why 29 or 83 should not be the ‘ideal’ value (without necessarily being over-optimized, if you have enough data to work with).
Probably the key theoretical concept that is common to all my algos (i have said this elsewhere and risk being boringly repetitive) is the Charles Dow idea of Primary, Secondary and Minor trends. This is more of a structural thing rather than a First Principle. Depending on your TF, it could be weekly/daily/hourly … for my purposes it’s typically 4hour, 15m and 5m – or some variation on that. So that even if my default TF is very short, it’s built on a broader foundation of what’s happening in the bigger picture. So yes, everything is MTF.
As for favourite indicators and snippets, although my attitude is to go with whatever works, there are some that keep reappearing, notably:
HULL MA, especially for a short TF turnaround
12ma = average[p,7](typicalprice)cb1 = ma > ma[1] and ma[1] < ma[2]Stochastic RSI, usually in the middle TF (secondary trend)
Default values are 14,14,10,3 but I never use that. I leave it running overnight to optimize, but it’s worth it.
12345678910111213//Stochastic RSI | indicatorlengthRSI = lr //RSI periodlengthStoch = ls //Stochastic periodsmoothK = sk //Smooth signal of stochastic RSIsmoothD = sd //Smooth signal of smoothed stochastic RSImyRSI = RSI[lengthRSI](close)MinRSI = lowest[lengthStoch](myrsi)MaxRSI = highest[lengthStoch](myrsi)StochRSI = (myRSI-MinRSI) / (MaxRSI-MinRSI)K = average[smoothK](stochrsi)*100D = average[smoothD](K)cb1 = K>Dcs1 = K<DMax number of bars any trade can stay open. Tends to have a beneficial effect on DD, cuts losses before they run all the way to the SL
12345678910//EXIT ZOMBIE TRADEEZT = 1if EZT thenIF (longonmarket and barindex-tradeindex(1)>= b1 and positionperf>0) or (longonmarket and barindex-tradeindex(1)>= b2 and positionperf<0) thensell at marketendifIF (shortonmarket and barindex-tradeindex(1)>= b3 and positionperf>0) or (shortonmarket and barindex-tradeindex(1)>= b4 and positionperf<0) thenexitshort at marketendifendifI usually use a % trail or sometimes ATR.
SL and TP are always in %, never in points, as the further back you go the more unrealistic a fixed number of points becomes.
I completely separate the values for long and short, effectively running 2 algos in 1 system, for example:
1234ma = average[a,t](typicalprice)cb1 = ma > ma[1]mb = average[a1,t1](typicalprice)cs1 = mb < mb[1]This doubles the time it takes to optimize everything but the results show that price action patterns turning down are usually very different from price action patterns turning up.
Same with separate SL, TP for long and short, trailing start, breakeven etc.
I shall be very happy if anyone finds any of this helpful, but please go back and re-read that first sentence – I really don’t know what I’m doing!
7 users thanked author for this post.
01/09/2022 at 4:36 PM #184958Yes, it’s definitely helpful. A big thank you for taking the time!
Glad to hear it from a “Master” who “doesn’t know what he’s doing ” 🙂 but MTF is the KEY! (which everyone uses in manual trading as well). I never seriously tried the Stoch RSI. I’ll give it a Shot.
The Exit Zombie did not work well in my backtests. May be I should try it on different TF than the execution of the trades. Also, for short term trades, Exit before the week-end because some Gaps at the next week opening may go beyond your SL, and your loss will exceed your max SL.
Hull and LinReg are part of my toolbox too.
Comparing Close to MA happens earlier than waiting for MA to reverse. It can save a few points on the Exit (my backtest, but depend very much on the system)
12ma = average[p,7](typicalprice)cb1 = ma > ma[1] and ma[1] < ma[2]1 user thanked author for this post.
01/09/2022 at 5:19 PM #184960Vary helpfull. Thank you for sharing your thoughts and insights, nonetheless.
A tought about optimizing 1M bars.
Sure the more data the better. But I would always recommend not to use all your data, so you can validate a walk forward. So just optimise up to jan 2021. And you are completely done. Run it forward from Jan 2021. If it is still good then go for it. If it’s not don’t ho back reoptimise
01/09/2022 at 7:15 PM #184970@nonetheless Thinking again and again about different values for long and short. If we see a market change for a while, it might go nuts. As you can see from the NQ chart, NQ very bullish after COVID crash (April 2020 to date). However, if you look at the periods 2018-2019 or Jan.2020 to March 2020, we had much bigger downside moves than upside. I’d intuitively think that Algos with uptrend bias will not work as expected during persistant downturn, hitting many times SL (I’m not talking about pull back, I’m talking about real downturn).
I didn’t make my mind about one condition fits Long and Short, with less gains on the short term but higher protection on the long run VS systems biased toward one main direction. I agree the markets are supposed to go up on the long run, as the GDP growth…
Any thoughts?
01/09/2022 at 8:54 PM #184978The subject is very interesting. Thanks to all involved. I think in order to build specialized algos that are adapted to the market, you have to adapt the indicators so that they work in the desired market and the current market phase. Then you can achieve a good 80% hit rate with a lot of real profit with trailing stop. These systems are of course adapted and if the market phase changes they no longer work well or even only bring losses. What should always work is price action. So use the bars directly. In connection with MTF you can develop beautiful things out of it. I also like to use standard indicators because I think they make a system more robust. Especially the psychological SMA200, which is anchored in the mind, offers advantages here. One just has to find out the timeframe it receives the most attention. That can vary from market to market. Some may smile now, but I think there are benefits. One of my first systems used the SMA20 / 200 in conjunction with a few other factors untouched for 2 years on the SP500 in the M5. Sure, hit rate around 40%, but balanced depending on the market phase long and short. This variant therefore makes less profit in a pure bull market than an adapted system. But it also wins in the bear market. The only thing it takes is volatility. Unfortunately, for whatever reason, I was in the forex market for a long time and lost way too much money there with my systems. Should have stayed with indices. The market is more logical.
01/09/2022 at 8:59 PM #184979 -
AuthorPosts
Find exclusive trading pro-tools on