Is today a good day to invest?

How it works

A score from 0 to 100 for how attractive today looks as an entry point, measured against each ETF’s own history. It never says don’t buy — it only says how hard to lean in.

Seven signals, one number

SignalWeightWhat it measures
Drawdown vs 1y high0.22The primary “is it on sale” measure.
Drawdown vs all-time high0.10Separates “at a record” from “off the yearly high”.
Stretch vs 200-day average0.18The slow mean. Deep below it is the classic value condition.
Stretch vs 50-day average0.15The fast mean. Catches shallow dips that never reach the 200-day.
RSI(14)0.15Momentum exhaustion. 30 scores 100, 70 scores 0.
Volatility / fear0.10Capitulation clusters with volatility spikes.
Trend health0.10The falling-knife guard: is the long uptrend still intact?

One rule sits on top of the blend, for the funds where reading a fall as a discount goes wrong: the bubble penalty, below.

Thresholds are measured, not guessed

The hard part isn’t picking indicators, it’s picking thresholds. “8% below the 200-day average” means something very different for NDQ than for A200. So the drawdown and stretch signals aren’t compared against magic numbers — they’re ranked against the same ETF’s own last five years. A sub-score of 90 means only 10% of those days offered a better entry on that measure.

That also absorbs the currency effect for free. The global ETFs are unhedged, and the Australian dollar usually falls when markets do, which cushions their drawdowns. Ranking against their own history takes that into account without modelling it.

Whole markets, and narrower bets

The board is split in two. Main portfolio holds whole markets and regions, which is what the score is built to read: a broad index that falls has historically recovered, because it is a whole economy compounding. Themes, sectors & commodities holds the narrower bets — lithium, semiconductors, gold, a single sector. These are scored the same way but not graded and never called a buy. A theme that falls can be the theme ending, and a fund launched into a boom has a history that starts at the top of it, so “cheap against its own past” means much less there.

The bubble penalty

Ranking against a fund’s own history has one blind spot. If that history contains a bubble, the fall from the peak reads as a bargain all the way down. So a fund that has shot up off its own 12-month low within the past year has part of its score taken off, in proportion to how far it shot up:

score − intensity × (score − 50)

Only the part of the score above 50 — the part that says “bargain” — is ever cut, so the penalty never pushes a fund below 50, and one already under 50 is untouched. Intensity comes from the largest rise off a 12-month low in the past year:

Rise off the 12-month lowIntensityA score of 87 becomes
1.5× or less087
1.8×0.376
2.0×0.568
2.5× or more150

It applies to every theme, sector and commodity on the board, and to NDQ and its hedged twin. Tested on 46 such funds back to 2004 — eighteen of them US funds that are not on the board at all, so nothing was tuned on them — the high-score days it takes down were followed by markedly worse years than the ones it leaves alone. On the Nasdaq-100 it would have taken the score down through the 1999–2000 bubble, and weekly investing from 1985 ends about 4% ahead with it.

A tile it takes points off carries a red chip with the number — Bubble −26 — and hovering it shows the run-up and the score without it. NDQ’s biggest rise off a 12-month low since it listed is 1.6 times, which would have taken at most half a point off the day’s score. A small trim like that shows as a chip on its row in the buy plan; when the penalty takes 5 points or more off a fund the plan buys, the email and the score card say so at the top, because it is lowering the day’s score and contribution.

Why it doesn’t let go when a fund starts recovering. That was tested: versions that released the penalty as the trend mended, or faded it over six months, all did worse, because post-bubble funds that had started to recover still went on to be poor entries. A genuine recovery shrinks it anyway. As a fund climbs back above its moving averages its plain score falls, and the penalty is a share of the part above 50, so it shrinks with it — in a simulated steady recovery of ACDC, to nothing within about six months. Otherwise it eases off as the run-up passes out of the 12-month look-back, the same window the score’s own “drawdown from the 1-year high” uses.

What it gets wrong. A fund that doubles at the start of a long run looks exactly like one that doubled at the end, so it is marked down through that first year while it keeps rising. And a sharp rebound off a crash low counts as a run-up too, so a fast recovery can earn a small penalty of its own.

Tested and left out

“Not while it’s still falling.” The obvious rule — no bargain call while a fund sits below a falling 200-day average — was tested alongside the bubble penalty and rejected. Those days did fall further first, but a year on they had been the better entries, on every group of funds tested.

Fear & Greed and credit spreads. CNN’s index, each of its seven ingredients, and the real corporate-bond spread were all measured against what the portfolio did next. Mixing either into the score made its one-year record worse, and a year or more is the horizon a contribution is held for. The Fear & Greed gauge on the dashboard is there as context and carries no weight.

Does it actually work?

Two different questions, with two different answers.

Does it find corrections? Yes. Scored blind against six correction lows picked by eye off a chart, every one landed above every quiet record-high day, with no overlap. Over a longer window it puts the March 2020 low at 90, the June 2022 low at 80, and calm all-time highs around 30.

Does sizing contributions by it make money? A little, and only in one direction. Buying more on dips measured about +0.5% of final value over two decades. Buying less at highs and banking the difference for later lost money on every index tested — cash held back sits out of a market that drifts up. The lesson is that adding on dips helps; hoarding at highs is what hurts.

So calibrate expectations at a fraction of a percent. The honest case for this thing is behavioural: it makes the contribution happen on a schedule, and gives a number to act on instead of a mood.

Reading the comparison chart

Every line on it is dollar-cost averaging. None is a lump sum bought once and left alone — that comparison would be rigged, and it isn’t the question. Money arrives on a schedule and gets invested on a schedule; the only differences are how much goes in each time and where it goes.

The two solid lines carry the argument. One lets the score set each contribution’s size; the other puts in the same fixed amount every cycle. Both buy the same nineteen holdings at the same weights on the same dates, so the gap between them is the score and nothing else. The comparison line is a raw index level rather than a fund tracking it, which buys decades more history at a price worth knowing: an index is price-only and quoted in its home currency, so it leaves out that index’s dividends and every move in the exchange rate, while your plan’s lines are total return in Australian dollars. Read that gap as a shape, not a score. The dashed grey line puts that same fixed amount entirely into one index instead, and sits behind the others on purpose: “does this asset mix beat the S&P 500” is a real question, but the score has no say in it, and reading the two gaps as one is how a chart ends up blaming the model for an asset-allocation decision.

The axis is profit on the money contributed — holdings worth $10,000 that cost $6,000 to accumulate sit at +67%. Because each time range is its own simulation, the money being measured is the money that went in during that range, so switching from 5y to 1y changes what the number is about rather than just how much of the line you can see. Plotting portfolio value instead would rank the lines by how much money went in rather than when, and a rule that quietly contributes less would look like a rule that picks better days. That is also why the caption says what fraction of the flat schedule’s money the score-weighted line actually spent: if it spent noticeably less, the honest number is the one measured against a flat schedule spending that same smaller total, and that is the figure quoted.

Each time range is its own simulation starting that far back, not a crop of the long one. A cumulative curve’s last six months of a seventeen-year run says almost nothing; “what would starting six months ago have done” is the question worth asking.

How fresh the numbers are

The score is recomputed six times on each trading day: twice after the ASX opens (10:30 and 10:45 Sydney time, because the feed’s first prints of the day can be patchy), twice after it closes (16:45, and again at 18:17 in case the first run is late), and once after the New York open and once after its close, because most of what this portfolio holds is priced there overnight.

The scheduler that starts these runs is not punctual — runs have started hours late, and occasionally not at all — which is why the close is covered twice, and why the time on the card is the one to trust rather than the schedule.

Prices come from a public feed that runs roughly twenty minutes behind the ASX and fifteen behind the US exchanges. So a reading taken while a market is open is a snapshot of twenty minutes ago, not the current price, and the card says the time the data itself carries rather than the time the job ran. Once a market has closed, that stamp is the closing price and stops moving.

There is no server and no database behind any of this. Each run pulls adjusted closing prices, scores every holding, works out a contribution and an order plan that stays under the broker’s free-brokerage limit, and rebuilds the site as static files with the data sitting next to them.

Only closing prices go into the permanent record. A mid-session score is built on a partial day, so rescoring that date later would not reproduce it — and every indicator here is causal, meaning a day’s score has to come out the same whether it was computed on the day or years afterwards. The track record is written once the session has settled.

Reading the score chart

Price and score sit in two panels sharing one time axis, rather than overlaid on two different vertical scales. A shared scale would make every crossing an artefact of where the second axis happened to be anchored. The score panel is pinned to 0–100 so its shape means the same thing whichever ETF you pick.

Prices are adjusted for distributions, so the gap on an ex-dividend date doesn’t read as a dip. Before an ETF listed, the long-run comparison stands its exposure in with a proxy fund, so the early years describe the asset mix rather than these exact tickers.

A position-sizing aid, not financial advice. Nothing here is a recommendation to buy or sell anything.