ASX Monitor · Track record

The method, measured

This page measures a FILTER, not a portfolio. The number that matters is whether each added constraint improves on the base rate — and whether the record holds up out of sample. What a human did with these candidates lives in the book. Every figure recomputes from the data lake at export — nothing is hand-set; nothing historical has been removed. Data through 2026-09-02.

The discipline: rules are registered with a date before they are measured, changes create a new version rather than editing the old record, and corrections are published in the notes. Names under separate research coverage are presented on the research pages rather than in the record tables.

How a name reaches this page

  1. 1 · The market. Every ASX announcement is scanned daily — 516 on the latest session.
  2. 2 · The universe. 567 names sit inside the size and sector band ($10M–$500M, minerals and energy).
  3. 3 · The scan. At most 10 announcement-led names surface per day, and the absorption screen currently holds 4 quiet-volume names.
  4. 4 · The gate. The registered rule: two institutional desk types buying the same name the same day, on elevated volume, with no news out — it fires ~23 times a month.
  5. 5 · The record. What the gate's hits did — measured in public since 2026-07-03, wins and losses, in the receipts below.
  6. 6 · The portfolio. What a human did with these candidates →

The paper book (hypothetical $10,000, frozen rules) now lives at /book, beside the discretionary journal.

The live receipt

Revised rule (live) — out-of-sample from 2026-08-04

Res + investment banks both net-buying ≥$5k same day, volume ≥1.5× ADV, no price-sensitive news in the 3 calendar days ending at the hit day. Approved 2026-07-26 for construct validity; registered at the 2026-08-04 freeze. RSI<40 is the single pre-registered subset — no further slices without a new registration.

66 hits66 resolved48% win · median 5d 0.0%

n includes names now under separate research coverage — see research.

DateTickerRSI5d
2026-08-31PLS65-8.7%
2026-09-01ACWRSI<4035+53.7%
2026-09-01ALR70-9.4%
2026-09-02ACW42+37.2%
2026-09-02CY558+9.1%
2026-09-02FDRRSI<4025+4.8%
2026-09-02LRVRSI<4038+1.4%
2026-09-02MGURSI<400-14.3%
show all 65 listed hits
DateTickerRSI5d
2026-08-04DEV50-4.0%
2026-08-04DRORSI<40recovered by correction39+1.9%
2026-08-04HLS57+4.9%
2026-08-05ALR75+7.7%
2026-08-05AONRSI<4035+17.5%
2026-08-05APX82-4.5%
2026-08-05LRV62-2.3%
2026-08-05PNN73+16.7%
2026-08-06BC873+4.8%
2026-08-06WC848+10.7%
2026-08-07GL182+23.3%
2026-08-07PNN79-3.0%
2026-08-07SNX77+7.8%
2026-08-07WC853+15.6%
2026-08-10CDR710.0%
2026-08-10DEVRSI<4039-8.2%
2026-08-10LOTRSI<4024+6.5%
2026-08-11AT486-31.2%
2026-08-11LKE78-17.5%
2026-08-11LKY80-33.3%
2026-08-12DEVRSI<4030-12.5%
2026-08-12GL192-9.1%
2026-08-12WC863-6.0%
2026-08-13KRR81-10.5%
2026-08-17DEVRSI<4031+2.2%
2026-08-17G50RSI<4019+29.9%
2026-08-17SNX82+17.3%
2026-08-18AW165+11.4%
2026-08-18CBE79+11.6%
2026-08-18HLS76+1.2%
2026-08-19CBE81+15.3%
2026-08-19KLI67+14.0%
2026-08-20CUV87-15.7%
2026-08-21CBE82+2.6%
2026-08-21PLS77+5.7%
2026-08-24AW1620.0%
2026-08-24GTI88+6.5%
2026-08-24LKE63-9.8%
2026-08-24LOT68-8.9%
2026-08-24NPM47-23.1%
2026-08-24NVXRSI<4033-15.4%
2026-08-24OR362+3.8%
2026-08-24PEN57-3.3%
2026-08-24SPD67-2.9%
2026-08-24SYR600.0%
2026-08-24VMM56-3.5%
2026-08-25ALR64+15.2%
2026-08-25SNM59-3.3%
2026-08-26ALR670.0%
2026-08-26CBE76-4.8%
2026-08-27AON91+2.9%
2026-08-27MEM44+9.1%
2026-08-28ALM50-9.1%
2026-08-28ALR66-3.9%
2026-08-28CTO580.0%
2026-08-28CUVRSI<4038-3.8%
2026-08-28MRD82-14.0%
2026-08-31PLS65-8.7%
2026-09-01ACWRSI<4035+53.7%
2026-09-01ALR70-9.4%
2026-09-02ACW42+37.2%
2026-09-02CY558+9.1%
2026-09-02FDRRSI<4025+4.8%
2026-09-02LRVRSI<4038+1.4%
2026-09-02MGURSI<400-14.3%

RSI<40 subset — of 66 hits, 66 had RSI data, 14 of those <40 · resolved: 64% win, median +2.1% (n=14).

Correction (2026-08-14): the price-sensitive flag source failed over from HotCopper to the official ASX marker (96.2% agreement in a two-source audit). 23 over-applied flags between 2026-08-04 and 2026-08-14 were corrected to the official marker — the quiet gate had been running too strict, never too loose. Recovered by the correction: DRO 2026-08-04 (marked above). No hits were removed.

Post-registration additions — outside the frozen universe
2026-08-04LACgraduated 2026-07-07+13.4%

Graduated onto the watchlist after the 2026-07-02 universe freeze — counted here, never in the headline tally; merges at the next registration. Clarification note →

Timing note: the broker tape underlying these hits becomes visible about three sessions after the trading it records (T+3). Forward returns are measured from the hit session itself, so 5-session figures include sessions before the hit was knowable — read them as a measure of the pattern's information content, not as an implementable trading return.

The constraint funnel30% base → 70% gated · 4 rows

Start with every name-day of the frozen watchlist universe (183 names as of 2026-07-02) during the discovery window (2026-05-14 2026-07-02), then add one gate per row. Forward returns are 5 trading sessions.

Correction (2026-07-25): the baseline row previously aggregated every measured name-day in the lake, including off-watchlist large-caps that ride along on the broker tape (ANZ, RIO, CSL…). Those stray rows ran 58% win / median +0.8% (n=783) and flattered the published baseline: 33% / median -2.7% (n=6938) restates to 30% / median -3.9% (n=6155). The rows below the baseline were already universe-bound, so the funnel's lift was understated, not overstated. Found in a pre-freeze audit; the universe is now frozen and stated above.

Whole watchlist, every day
n=6155
30% win · median 5d -3.9%

Removes: Nothing — every name-day of the frozen watchlist universe. The honest base rate: most small-cap days lose money.

Two+ institutional desks buying ≥$5k the same day, volume ≥2× ADV
n=106
38% win · median 5d -1.2%

Removes: Days when only one desk type is in, and flow arriving on ordinary volume.

+ no price-sensitive news in the prior 7 days (quiet)
n=61
46% win · median 5d 0.0%

Removes: Names reacting to news already out — leaves positioning before the news.

+ RSI < 40
n=20
70% win · median 5d +10.4%

Removes: Names that had already run — leaves accumulation into price weakness.

coverage: of 61 hits, 44 had RSI data, 20 of those <40 — rows without RSI data are counted, never silently dropped.

Calibration analysis — in-sample, found by exploring. Not evidence; the receipts below are the evidence.

The other side of the ledger3 rejected tiers · measured identically · full ledger inside

Most of what the system produces are categories it classifies as historically underperforming. These are the rejected tiers, measured identically to everything else.

Market-maker-only flowNo institutional participation
5d: 34% win · median 0.0% · n=37520d: 41% win · median -1.4% · n=267

Market makers hedge and warehouse — their flow is plumbing, not positioning.

Retail-only flow, no institutional confirmationRetail-only flow
5d: 33% win · median -1.9% · n=178620d: 34% win · median -5.1% · n=1432

Retail-only buying days show negative median forward returns at both horizons in this dataset.

Retail dip-buying into weaknessRetail-only flow + RSI<40
20d: 32% win · median -5.0% · n=554

The same price dip as the tracked accumulation pattern, but with retail rather than institutional buyers — the weakest measured cell in the lake.

Tier 1, measuredfirst fires 37% · median -2.6% vs baseline 30%

Tier 1 ("confluence + catalyst") — cross-group flow plus a price-sensitive announcement — is a measured tier among tiers, demoted from flagship framing 2026-08-14. Its first fires run 37% win / median -2.6% (n=107) against a universe baseline of 30% / median -3.9%.

Measured against the corrected universe baseline, first fires sit above it on both win rate and median — a modest measured edge, with a median still below zero. The claim is recomputed at every export; if it stops being true, this sentence changes. The full working is in research note 01.

Retired recordsv1: 16 hits · 56% · median +7.6% (retired, record intact) · calibration: 42 hits · 43% (in-sample, never evidence)

Why the rule was revised — including a display rule that silently drifted from the measured one — is documented in the supersession note.

First registered rule — 2026-07-03 → 2026-08-04 (retired)

Res + investment banks both net-buying ≥$5k same day, volume ≥2× ADV, no price-sensitive news that day. Registered 2026-07-03; retires at the 2026-08-04 re-registration — record intact.

16 hits16 resolved56% win · median 5d +7.6%
DateTickerRSI5d
2026-07-27SNX56-2.5%
2026-07-28ALR50+22.6%
2026-07-28MTMRSI<4027-16.1%
2026-07-29DRORSI<4023+22.4%
2026-07-30APX69+23.6%
2026-07-30AYARSI<4022+9.5%
2026-07-31NXT49+7.0%
2026-08-03PNN67+14.3%
show all 16 listed hits
DateTickerRSI5d
2026-07-03BOA590.0%
2026-07-08KTA50+9.1%
2026-07-16EXRRSI<4036+8.3%
2026-07-16MSB94-16.3%
2026-07-17LRVRSI<4032+10.8%
2026-07-20BRNRSI<4030-11.5%
2026-07-22AON44-25.9%
2026-07-23GNM69-15.9%
2026-07-27SNX56-2.5%
2026-07-28ALR50+22.6%
2026-07-28MTMRSI<4027-16.1%
2026-07-29DRORSI<4023+22.4%
2026-07-30APX69+23.6%
2026-07-30AYARSI<4022+9.5%
2026-07-31NXT49+7.0%
2026-08-03PNN67+14.3%

RSI<40 subset — of 16 hits, 16 had RSI data, 6 of those <40 · resolved: 67% win, median +8.9% (n=6).

Calibration history — 2026-05-14 → 2026-07-02

In-sample. These hits shaped the rule; they can never count as evidence for it.

42 hits42 resolved43% win · median 5d 0.0%
DateTickerRSI5d
2026-06-25EVRRSI<40300.0%
2026-06-25MTMRSI<4035+14.7%
2026-06-26GL1RSI<4028+11.4%
2026-06-26KRR85+5.5%
2026-06-29GL1RSI<4036+11.9%
2026-06-29KRR85+5.6%
2026-06-29TLGRSI<4017+40.0%
2026-06-30QPMRSI<4021-30.8%
show all 42 listed hits
DateTickerRSI5d
2026-05-14OR3-3.5%
2026-05-15OR3-3.5%
2026-05-20SNX-20.0%
2026-05-20TMX0.0%
2026-05-21ACWRSI<4021+14.3%
2026-05-21CY541+9.5%
2026-05-22TLG770.0%
2026-05-22TM161+2.8%
2026-05-25PNN58+20.0%
2026-05-27SNM62+4.3%
2026-05-27WBT80-8.8%
2026-05-29DRO46-18.0%
2026-05-29LIN49+5.3%
2026-05-29PNN65-13.3%
2026-06-02AIS44-20.4%
2026-06-02CBE73-12.5%
2026-06-02PNN61-13.8%
2026-06-02SYR64-12.0%
2026-06-04BRN73-7.9%
2026-06-04PNN55+7.4%
2026-06-08ATV52+55.0%
2026-06-09AT4RSI<4017-12.0%
2026-06-09DYMRSI<406-1.1%
2026-06-09LKYRSI<4024-12.8%
2026-06-10CY5580.0%
2026-06-10DTRRSI<4022+29.6%
2026-06-10HLSRSI<4031+30.2%
2026-06-12KLIRSI<400-9.1%
2026-06-17ATV77-28.6%
2026-06-17KLI400.0%
2026-06-17RCMRSI<4028-11.8%
2026-06-23KRR80+10.4%
2026-06-23QPMRSI<4029-25.0%
2026-06-24NEURSI<4039+36.8%
2026-06-25EVRRSI<40300.0%
2026-06-25MTMRSI<4035+14.7%
2026-06-26GL1RSI<4028+11.4%
2026-06-26KRR85+5.5%
2026-06-29GL1RSI<4036+11.9%
2026-06-29KRR85+5.6%
2026-06-29TLGRSI<4017+40.0%
2026-06-30QPMRSI<4021-30.8%

RSI<40 subset — of 42 hits, 38 had RSI data, 16 of those <40 · resolved: 50% win, median +5.7% (n=16).

How the machine works

A pipeline reads announcements, prices and broker-level flow every morning; deterministic rules decide what matters; an LLM adds context and never overrides the rules. This section is the manual.

Philosophy

Reading the ASX before the market reacts.

Everything's algorithmic. The more AI enters the market, the more patterns it leaves behind. I use LLMs to read mass amounts of data — announcements, volume, broker flow — and interpret it before it shows up in price.

>20%
Retail share of daily ASX flow — institutions move the rest. A small, concentrated pool where interpretation pays.
T+3
Broker-flow lag tracked — net buying & selling by group, reconstructed from the tape.
100s
Stocks read at once. By hand the ceiling was ~20 a morning; the repository removed that bottleneck.
$ cat thesis.md
The ASX has a small retail liquidity pool. There are no official reports, but retail holds only ~20%+ of daily flow — institutions, banks and funds move the vast majority. That imbalance is where this began: tracking volume on individual stocks, watching for spikes on random days. Done by hand, the ceiling was about 20 stocks a morning. The bottleneck wasn't the idea — it was doing it manually.
$ why llm
Pattern recognition is one of the strongest use cases for LLMs: reading mass amounts of data, interpreting it, making sense of announcements faster than any one person can. Read the whole information surface at once and you see the picture the market is still assembling piece by piece.
$ what changed
The measurement layer changed the project: every flagged name-day now gets stamped with its forward returns as they mature, and most of what I believed didn't survive the counting. What did survive is tracked in public on the track record page — wins and losses alike.

How to read the letter — 60 seconds

The homepage is a morning letter rebuilt from the day's data. Top to bottom:

  • Read theseToday's announcements worth minutes, not seconds — triaged by deterministic rules (a raise, a result into live flow, quantified materiality). The LLM annotates; it never picks the bucket.
  • Also worth a skimPrice-sensitive but routine — quarterlies and updates worth a headline-level pass.
  • Skip pileCollapsed on purpose: ownership notices and admin filings. The flow data already captures what these would tell you.
  • Broker tapeWho bought and sold, by broker cohort, on a T+3 lag — spikes vs each stock's own baseline, multi-session streaks, and warnings where 'buying' is likely someone absorbing an exit.
  • Pattern trackerThe pre-registered quiet pattern, tallied out-of-sample since 2026-07-03 — every hit counted in public, wins and losses. Small n, on purpose.
  • What changedNew names versus yesterday's letter, so a continuing story doesn't read as fresh news.

The one rule underneath everything: READ / SKIM / SKIP is decided by deterministic rules (a capital raise, a drilling result into live institutional flow, quantified materiality, an ownership notice). The LLM writes the takeaway, materiality and priced-in lines — it never picks the bucket and never overrides a classification. When a number it would need is missing, it says "insufficient data" rather than guessing.

The pipeline in one diagram

INPUTS
Market announcementsPrice & volumeFilings & documents
LAKE
Scraped every morning, cross-checked between independent sources, and normalized into one data lake.
CLASSIFY — DETERMINISTIC
Ratio-based rules over broker-group flow, volume and catalysts produce a tier per ticker. Rules only — no model in the loop.
LLM CONTEXT — NEVER OVERRIDES
An LLM reads the filings and writes the narrative: takeaways, materiality, priced-in, why-dossiers. It decorates the deterministic output; it cannot change a label.
MEASURE
Every flagged name-day is stamped with +1/+5/+10/+20-session forward returns as they mature — the feedback loop the claims live or die by.
Daily letter · radar · track record

The exact feeds stay private — the edge is in the interpretation, not the source.

Glossary

RSI
Relative Strength Index compares recent up-days to down-days over 14 sessions. Low values (<40) mean the stock has been persistently sold; high values (>70) mean it has run hard. It describes where price has been, not where it's going — oversold stocks can keep falling for a long time.
Volume ×ADV
2× means twice the typical day's turnover. Unusual volume says someone is doing something — it never says who, or which direction. High volume at a low price is just as often an exit finding its buyer as an entry.
Price-sensitive announcement
The exchange requires companies to flag announcements that could affect price — drill results, raises, contracts. The flag is set by the company and the rules, not by importance: routine quarterlies carry it, and genuinely material detail sometimes hides in unflagged filings.
Priced in?
A one-line read of the pre-announcement run-up: a stock up 40% into a halt has often already paid for the news that follows — a heuristic, not a rule. Computed from 5- and 20-day returns into the announcement date. It's an inference from price, not knowledge of who knew what — quiet run-ups also happen by coincidence.
Materiality
A $2.7m asset sale is transformative for a $5m shell and a rounding error for a $70m company, so we quantify against market cap, cash and float where the numbers exist. Where they don't, it says 'insufficient data' rather than guessing. The line is written by an LLM from the filing — it sizes the announcement, it does not verify it.
Free float
We estimate float as shares on issue minus the Top-20 register (founders, cornerstones, escrow). A tightly-held explorer with 30% float moves on a fraction of the money a liquid name needs, so flow is normalised by float where we have a confident register read. Register data is disclosed sporadically — estimates go stale between filings. Where we don't have a confident register read, we don't use it — no estimate beats a bad denominator.
Quiet pattern
The pre-registered setup: resource specialists AND investment banks both net-buying the same day, volume ≥2× average, and no price-sensitive announcement in the prior 7 days. The silence is the point — volume at the lows after news has historically been distribution; before news, accumulation. Found by exploring the data (11 hits, membership frozen before pre-registration), which is exactly why it's tracked out-of-sample in public.
Momentum states
COILED (flat base, RSI 40–60; no recent directional move) · BREAKOUT (pushing highs with trend) · UPTREND / PULLBACK / DOWNTREND (as named) · EXTENDED (RSI ≥70 or +25% in 5 days — has risen sharply in recent sessions) · NEUTRAL / NO_DATA. Derived purely from past prices; a state describes what has already happened, it doesn't predict what comes next.
Flow surge / spike / reversal
Today's institutional net dollars against the same stock's trailing 5-session baseline: a flow spike is ≥2.5× baseline, a flow surge ≥5×, and a flow reversal means a net seller flipped to buyer. These measure acceleration, not size — and a big print can be one fund absorbing another's exit, which reads as 'buying' while meaning the opposite; the exit-absorption warnings alongside the tape flag when that is likely.
Win rate / median forward return
Every flagged name-day is stamped with its forward return at 1, 5, 10 and 20 sessions as those windows mature. Win rate is the fraction above zero; the median is the middle outcome, which one +42% winner can't drag around the way an average can. Both are only meaningful against the watchlist baseline (which was falling over the measured window), and n matters most: a 3-of-4 win rate is an anecdote.
Episode (14-day dedupe)
Flags recur daily while a condition persists, which silently multiplies the same trade in the stats. Where marked, we dedupe to one episode per ticker per 14 days. The window is a judgment call — a slow accumulation over five weeks still counts two or three times.
Pre-registration / out-of-sample
Anything found by exploring past data is suspect — toggle enough filters and something always shines. So the quiet pattern's exact definition was frozen on 2026-07-03 and every qualifying hit since is tallied publicly, wins and losses alike. Out-of-sample results are the only numbers here that can't have been curated; the cost is that n grows slowly.
Logged
A radar appearance whose 5-session forward return has been measured and moved to the track record. Names leave the radar when they log — the radar shows open questions, the track record keeps the answers. Flow data runs ~3 sessions behind, so a hit often arrives already part-way through its window.
5d price
Price change over the trailing 5 trading sessions, computed from the most recent price snapshot — the 'prices' as-of date in the page header. Trailing, not forward: it says what the stock just did, unlike the forward returns on the track record, which are measured from a flagged day onward.

One email per market day. Zero when nothing happened.

Just the letter. No promotion, unsubscribe anytime.