Welcome to NexusFi: the best trading community on the planet, with over 150,000 members Sign Up Now for Free
Genuine reviews from real traders, not fake reviews from stealth vendors
Quality education from leading professional traders
We are a friendly, helpful, and positive community
We do not tolerate rude behavior, trolling, or vendors advertising in posts
We are here to help, just let us know what you need
You'll need to register in order to view the content of the threads and start contributing to our community. It's free for basic access, or support us by becoming an Elite Member -- see if you qualify for a discount below.
-- Big Mike, Site Administrator
(If you already have an account, login at the top of the page)
Here is a little something from that system (Jan 2010 - Jan 28, 2022), no reinvestment, scaling, or pyramiding, all trading costs accounted for:
Equity Curve with Run-up and Drawdown
That's it for now. I'm working on a different mean-reversion system now, but I have not decided on instruments. I still am looking for a good source for delayed futures data that I can link to MultiCharts. That is the only thing keeping me from building new futures systems.
I want to mention a feature I came across in MultiCharts, which is not something I saw in TradeStation: building continuous contracts according to your own rollover criteria. This is extremely important in system development, as we do not always use volume or date based rollovers. Even more importantly, we do not always trade the front month contract. This is less obvious for things like gold, crude, and index futures, but more obvious for futures that you can only realistically trade several contracts out, such as Eurodollar.
In MultiCharts, depending on your data source, you may need to build 'Custom Futures', which is a way to build a continuous contract if your feed does not have a continuous contract. The screenshot below shows how we have the ability to build the contracts on something other than that front contract:
We can also build out futures based on our own rollover preferences. Traders of crude light (CL), for example, rollover at seemingly random times before expiration, i.e., they rollover when they are ready to rollover (maybe @SMCJB can correct me if my understanding is wrong). There is no real pattern here, as you may have with ES, when most people move to the next contract just before expiry. The point is, we have a lot of control over this.
I had some systems I was building for ED a long time ago, and backtesting was darn near impossible in TradeStation. In MC I can do it. It is extremely cumbersome (I have to add each contract symbol separately, then combine into a custom future), but I can get a LOT of data for futures, as in decades. I am moving away from IB for data given their 2 year limitation on historical data, and am currently testing Barchart as my data source, which has been very good thus far and is very fast, the fastest data feed I have used (including TradeStation).
Ah, yeah I totally forgot about that, thanks @kevinkdog! I wish I knew that a few years ago when I was working with ED, though I never really explored the custom futures feature.
I'm not sure if TradeStation has individual historical contract data for building those custom futures, but I would guess they do.
I have been thinking about mean-reversion systems, of which I have a few and which seem to perform well on aggregate. I have also been thinking about forex, particularly my inability to develop a decent system. The problem I have had is the tendency, as I see it, for forex to oscillate and trend very slowly. The oscillations or waves are what have always kicked me out of trades.
Taking the two together, I started thinking about forex with mean reversion. I have not developed any system for forex with mean reversion, so I figured I would give it a try. I decided to use Williams %R as my oscillator within a short lookback (2-3 period). It is very similar in behavior as the RSI, but I wanted some variety so that was my choice. Using a simple moving average as a trend filter, I take trades only in the direction of the prevailing trend.
One final thing is sizing my positions based on how deep into overbought or oversold we go. Example: for a long position, if I hit 2.15 %R on a scale of 0 - 100, then I will take a larger position than I would with 9.5 %R. (0 = extreme oversold). My hypothesis is, in plain language, the further extreme we get, the more likely a rebound in the other direction, thus we should load up our position size. This position sizing should provide great profitability.
Here is the manual test I did on EUR-USD forex pair, daily chart, from mid-2008 to early 2011, about 2.6 years (30 trades):
Annual return, based on account size required, was 89%; without position sizing it was 41%. I also manually tested EUR-AUD in a different time period, with similar results.
There is more to do, so I will continue to post updates, but I am happy with what I see.
Trading: Primarily Energy but also a little Equities, Fixed Income, Metals and Crypto.
Frequency: Many times daily
Duration: Never
Posts: 5,057 since Dec 2013
Thanks Given: 4,399
Thanks Received: 10,225
The problem is in Tradestation it only works in certain situations. If your talking about rolling early or trading the 2nd month rather than the first month etc then sure it works fine. But if your trying to trade the 1 year out Eurodollar/GE/ED then it doesn't work. In my experience, contracts that list both serial and consecutive contracts don't work. Eurodollars is 10 years of quarterly serials (HMUZ) PLUS the four nearest non-quarterly months. So here we are Feb'22 and the prompt Eurodollar contracts are GHJKMNUZ (HMUZ quarterlies + GJKN prompt 4). When Feb expires they will add Q. But when H expires they will add V since U already exists. I believe this uneven contract listing is what makes things like the 1 year out Eurodollar not to work.
Thanks @SMCJB. I am guessing that MultiCharts will suffer a similar problem, though I will only know through testing. I may work on ED in MultiCharts later this year if I have time (my dance card is filling up quickly). If/when I get that done, I will share here.
One point of clarification about using Williams' %R: this is a substitute/alternative to RSI. RSI would likely work well, though they are not identical.
Here is a quick update on the mean-reversion system I built for forex using Williams %R. This is the general idea:
The white line is a 40-day simple moving average, nothing fancy or exotic, just as a trend filter. I am working with daily charts, so the SMA calculates over the past 8 weeks, or just under two months. I only take mean reversion trades in the direction of the trend.
For this system, I built in position sizing. Without getting into detail, I am taking a larger position the deeper into overbought or oversold the %R goes, generally 100k, 200k, or 300k lot sizes (100x higher for Japanese Yen). This is what it looks like on a chart:
The results were a lot like other forex systems I have built: they work for a while, then don't work, then work for a while, then don't work.
My criteria for passing was >= 60% win %, profit factor >= 1.5, and adjusted profit factor (worst case) > 1. Here is the outcome of my walk-forward (2010 to 2011):
As per usual, I did not optimize any parameters. I played around a little with optimization just to see what would happen, but it did not improve the out-of-sample (OOS) outcomes. The average bars per win and loss are interesting to me. Generally, with mean-reversion, the longer a trade is on, the less likely it is to be profitable, and the data supports my observations (I have several hundred trades here).
So the idea failed, but I think there may be some promise with this on a weekly timeframe. I'm not convinced %R is better than RSI, but that is another project. I will post a link to my full analysis when I publish it later today.
This was a fun system, particularly position sizing based on extremes. I am trying to think of another forex system for next time. Maybe a trend-following system, but I think the time horizon will have to be long. Hmmm....