Case study: Can a simple Market Internals technique actually improve trading strategy results?

In my 10+ years’ full-time trading career, I have found very few tools and tactics that would get my attention so deeply as Market Internals.

In 2014, I spent about six months in a row with this unique traders tool, exploring its possibilities every single day, searching for new and creative implementation ideas for my own automated trading systems (ATSs). With a real obsession for this concept, I finally found almost 40 new ideas (mostly my own proprietary ideas) on how to squeeze the most out of this great tool, and slowly started implementing many of them into my own trading – with great success.

I truly believe that Market Internals can give a trader a small, unfair advantage – if thoroughly thought out and implemented well, especially in new, creative ways. Therefore, in this article I would like to give you a very brief introduction into the Market Internals world, together with an example of one of my private Market Internals filters – to show you, how dramatic the impact of Market Internals deployment can be – in a favorable way.

Introduction: What are Market Internals (MI)

We all know how hard it is to find a new, viable trading edge. We are also aware that the scope of our possibilities is quite narrow: It doesn’t really matter what trading indicators or other tools of technical analysis we use – most of the time they all use the same source of data anyway. This data is consist of Open, High, Low and Close values of the bars in our trading chart, and whatever trading indicator we use, we basically use only a slightly different interpretation of the same O-H-L-C values.

So, if we really want to go a step further and implement a broader view for our trading decisions (trading entry/exit conditions), we have to start investigating outside the O-H-L-C values. We can, for example, implement information like Volume or Open Interest to our trading entry/exit conditions, which is not a bad idea at all, and many of my ATSs use O-H-L-C values together with Volume effectively.

However, we can still go a step further.

We can do something that many traders have no idea they can even do: We can start making our trading (entry/exit) decisions based not only on the data coming from the underlying market** but also on taking into consideration the market (its overall direction, quality, strength, and overall “mood” ) as a whole!**

Just imagine:

Wouldn’t it be fantastic to know where the stock market as a whole is heading before we enter a position in our emini S&P strategy?

And that is exactly what Market Internals are about: The ability to read the market ****as a whole and effectively incorporate this much broader view into our trading decisions.

Market Internals: A quick introduction

So what exactly are Market Internals? Where do they come from?

It’s very simple: Market Internals are information about the overall stock market, provided by the stock exchanges (NYSE, AMEX), usually in the form of a standalone data feed.

And this data feed instantly provides us with real-time information about the overall stock market situation.

Using Market Internals we can immediately, in real-time, start receiving information like, for example:

  • How many stocks from the Dow Jones Index have just moved up and how many down?
  • Is the volume of all rising stocks from the Dow Jones Index higher or lower than the volume of all falling ones?

Or even:

  • How do ALL stocks move in the entire NYSE? Are most of them rising or falling?
  • How many stocks have a price that hasn’t changed?
  • What is the direction of the majority of the volume? Up or down?
  • Do the 30 stocks in the Dow Jones Index correspond with the rest of the market, or does the Dow Jones Index now live its own life?

As you can see, there is plenty of information that can be obtained through this standalone data feed about the stock market as a whole (and later on, to be used in our strategies).

All this information can be split into several different categories, and every category has its own meaning and preferred method of implementation. However, because the space for this article is very limited, and the subject of Market Internals could give more than a dozen articles like this, I am going to focus only on one Market Internals category, one of my most favorite, the MI pair UVOL-DVOL.

Market Internals: UVOL-DVOL

This category of MI simply consists of two separate data feeds provided from the exchange:

$UVOL monitors the total volume of all rising stocks on the exchange.

$DVOL monitors the total volume of all falling stocks on the exchange.

By using these data feeds (often called MI indicators), we can monitor the volume on one side or the other, so we can get a better idea where the volume is moving to, i.e. which side is stronger. This is, of course, a very powerful view on the market that can provide us lots of important information (if we know how to use it).

From a practical means, we usually add two different data symbols into our chart (data2 and data3) to start using UVOL-DVOL pair for our trading:

Then we can start using these MI indicators as additional, or even leading filters (or as I usually call them – “Super Filters”) for our existing systems – with the goal to improve them significantly.

Let’s have a look at such a condition in practice. I am going to reveal one of my proprietary UVOL-DVOL MI conditions, which I use as a filter for many of my breakout index or stock strategies (MI can only be implemented on indexes or stocks of futures indexes).

UVOL-DVOL as a filter for significant improvement

To demonstrate the effect that Market Internals can have, I have decided to use the most simple condition that I could think of – a primitive breakout condition high=highest(h,N1). I haven’t done any optimization of the N1 parameter, nor have slippage and commission been included in the results shown below – the purpose of this article is not to present a functional breakout trading system but to demonstrate that Market Internals can be applied to even the most basic systems and get immediate, and very often dramatic improvements. For the N1 parameter, I have used the first number that came to my mind, number 20.

Here is the basic code that I will use to demonstrate the impact of the Market Internals “Super Filter”. The test will be completed on the EMD.D market, 15-minute time frame, from 3/22/2006 – 3/21/2016:

If high = highest(h,20) then buy this bar at close;

Here are the results:

And also the equity curve:

Now let’s move on to the implementation of a very simple Market Internals condition that is based on the following rules:

  • ****Calculate the difference between UVOL and DVOL;****
  • Calculate a 30-bar simple moving average of this difference;
  • If the UVOL-DVOL difference is above the moving average of the UVOL-DVOL difference AND high = highest(h,20), a Long position is opened;
  • The position is closed by the end of the day or when the 600 USD stop-loss is hit.

In a moment, I will show you the outcome of the application of this code to the original system. But first, I need to mention that I have used several small add-ons, like for example, taking into consideration the zero line of the UVOL-DVOL difference to cancel the “Super Filter” in certain situations – all of this is included in the code and the workspace that you can download at the end of this article. Yet the basic idea is exactly as I have described it – to work with the UVOL-DVOL difference and with the moving average of this difference.

Let’s take a look at the results after application of the Market Internals “Super Filter”. First, the performance report:

Now the equity:

And finally the comparison table showing the results before and after the application of the Market Internals “Super Filter”.


Before MI

After MI


Net Profit




Profit Factor




Avg. Trade




Max DD(C-to-C)




Net Profit/Max DD








I believe that the numbers speak for themselves – maximum drawdown has improved by almost 40% (36.8%), Average trade by +74.8%, and the Net Profit to Maximum DD ratio by +55.4%. All really great improvements, and I see similar improvements of Market Internals very often.


I have been using Market Internals for my own trading since 2014.

Here is what I have generally achieved by implementing them into my own trading strategies:

  • ****Reduce max. Drawdown****
  • Improve Avg. Trade
  • Improve Net Profit / Max DD ratio
  • Smoother equity curve
  • Overall improvement of portfolio performance
  • Getting additional psychological confidence by knowing that I only trade in highly favorable market conditions.

I was really surprised that Market Internals are used by so few traders, yet when I present them the Market Internals possibilities, they usually get quite excited and implement it to their own trading systems with instant positive impact.

This is exactly the reason why I like them and I encourage all traders to investigate them further.

Please visit this link at Better System Trader to download the source code used in this article.

— by Tomas Nesnidal from blog, Better System Trader

About the Author Tomas Nesnidal

  • Maverick says:

    Are you sure there is no curve-fitting/over-optimization involved?

    • Ryan Watson says:

      That’s a good question. Why did the author use EMD.D, 15 min bars, 30SMA, highest(h,20), $600 stop loss? Lots of curve fitting possibilities. Commissions & slippage would produce a huge dent in the performance numbers. I’m not sure I got anything from the article……

  • You can never be sure, as there is always a risk of over-fitting, with any system or approach. This kind of risk can hardly be removed completely. However, if you rather ask if I am sure that the examples were thoroughly tested through my robustness criteria, then yes, all of them were. The robustness testing procedures I use (with the goal to minimize the impact of possible over-fitting and curve-fitting) are very demanding, complex, and I never trade any system or idea that doesn’t pass through all my robustness testing procedures. Robustness testing is not subject of the article, though, the main goal was to introduce Market Internals and show the possible impact, which can be pretty huge (from my experiences), but of course not always guaranteed – as there is nothing that can be guaranteed in trading in general.

    • Mark says:

      What are your robustness criteria, exactly?

  • matt haines says:

    Hi Tomas! Quick question: I notice your hit ratio is only 51%. How does that compare to just betting “long” every day during that period? I know the long term average for up days is something like 54%. Thanks.

    • Matt, it is not just about hit ratio. What is better: To hit 30% of time with 2-3 times higher average winner than an average loss, or to hit 54%, but have equal average winners and average loosers? You can make ton of money even if you hit 20% only, if you have the right Risk-Reward-Ratio and the overall math works.

  • vimal says:

    Hi. I wanted to check. Can this be applied to End of day or weekly strategies or is it purely a concept that can be used for aiding Intraday strategies?

    • Tomas says:

      Hi Vimal, it can be applied to End Of Day strategies easily. Not sure about Weekly charts, I don’t use them, but some of the MI concepts probably yes.

  • >