tick2trade

Chapter 04 · Reading price and volume

A moving average, and its limits

A moving average is the mean of the last N closes. It lags price, by construction. This chapter computes one by hand, shows what a cross actually says, and marks the decisions an average cannot make for you.

Compute it once so the formula stays honest

A 5-day simple moving average is the sum of the last five closes, divided by five. Suppose the closes are ₹100, ₹102, ₹101, ₹106, and ₹105. The average is (100+102+101+106+105) / 5 = ₹102.8. If the next close is ₹104, the oldest close (₹100) drops out and the average becomes (102+101+106+105+104) / 5 = ₹103.6. The price fell from ₹105 to ₹104, and the average rose. That is not a paradox. The average is still digesting the climb from ₹100. It will keep rising while the new closes sit above the close that is dropping out.

An exponential average weights the recent close more and never fully drops a number, but the behaviour you care about is the same: it follows, it does not lead. A 50-day average turns more slowly than a 10-day average because fifty closes have to be replaced by a new regime, not five. Slower is not more reliable. It is later.

The closes in the chapter: 100, 102, 101, 106, 105, then 104. Price fell on the last print. The 5-day average still rose, from 102.8 to 103.6.

What people use it for

Three uses are legitimate if you keep the claim small. First, as a smoother: the average tells you the direction of the recent mean when the daily bars are noisy. Second, as a trailing reference: ‘I will reassess if the close is below the average I chose, for the number of days I wrote down.’ Third, as a common landmark: many participants watch the same 50-day and 200-day averages, so orders sometimes cluster there. Clustering is a fact about crowds. It is not a law.

The illegitimate use is prediction. A cross of a short average above a long average means the recent mean has moved above the older mean. It happens after the move that caused it. Buying the cross is buying a description of the recent past and hoping it persists. Sometimes it does. The average did not know that it would.

A 10-day and a 30-day cross, in words

You do not need a chart to see the lag. After a sharp fall, the 10-day average is still being pulled down by the fall while price has already started to rise. The 10-day will cross back above the 30-day only once the new closes have been high enough for long enough to lift it. By then a good part of the rebound has already printed. If your plan needs the earliest turn, the cross is the wrong tool. If your plan is willing to miss the first part of a move in exchange for ignoring every wiggle, the cross is a filter, and you should measure how many times it would have filtered you out of a move you wanted.

Choose N before you see today’s cross

Any average can be made to look clever by picking N after the fact. Decide the window when you write the method, on the timeframe you trade, and then leave it alone through a losing streak. Changing from 20 to 17 because 17 would have kept you in last month’s winner is fitting the formula to a story you already know the ending of. Do that often enough and the average will look infallible on the history and ordinary on the next year.

Also decide the market you will not use it in. A moving average in a long sideways band whipsaws: it crosses, you act, the price returns, it crosses back. The average is not broken. A range has no persistent mean-direction for it to follow. The tool assumes a trend you have not earned the right to assume.

What to remember

  • A moving average is the mean of past closes. When price turns, the average turns later.
  • Price can fall for a day while the average rises, because an old low close is dropping out of the window.
  • A cross reports that the recent mean has overtaken the older mean. It does not report the future.
  • Pick the window in the written method, not after you see which window would have worked.
  • In a range, crosses arrive often and mean little. The average is a trend filter, not a range filter.