SG Off-the-Radar — End-of-Day Verdict
3 ACQUIRE (D05 ADD 2,500 @75.07 at market; O39 ADD 6,600 GTC limit @28.82; S68 BUY 12,200 GTC limit @24.00, both exp 08-12) + 1 DISPOSE (J36 SELL 1,700 = 50%, trend exit below EMA200 with a -7.8% 12wk). G07 armed but not re-fired - trail 20.64 -> 20.80. All three 08-05 cards filled cleanly; no double-fill recurred.
Recommendations
3 to acquire · 1 to dispose
| Ticker | Name | Close | Action | Action Price Where to act — a buy-limit on a pullback or a buy-stop above resistance, not the current price. Sanity-check vs Close: on a held name, an action price stranded above the close means the queued level was set when the stock was higher — stale, awaiting reprice. | Stop The risk-defined exit, set below the entry for a long (~1.2–1.8×ATR). A held long whose Stop sits at/above the Close is already below its stop — a stale box awaiting reprice. | 1wk Model estimate of the likely price at this horizon — a forward projection, not a guarantee, and separate from the trade's Action Price or Stop. Where the ML estimator is enabled these are per-ticker calibrated forecasts (~80% coverage band) that are refreshed periodically and can drift between refreshes; otherwise they're interpolated from the signal's swing target. Confirm against the settled close. | 4wk Model estimate of the likely price at this horizon — a forward projection, not a guarantee, and separate from the trade's Action Price or Stop. Where the ML estimator is enabled these are per-ticker calibrated forecasts (~80% coverage band) that are refreshed periodically and can drift between refreshes; otherwise they're interpolated from the signal's swing target. Confirm against the settled close. | 12wk Model estimate of the likely price at this horizon — a forward projection, not a guarantee, and separate from the trade's Action Price or Stop. Where the ML estimator is enabled these are per-ticker calibrated forecasts (~80% coverage band) that are refreshed periodically and can drift between refreshes; otherwise they're interpolated from the signal's swing target. Confirm against the settled close. | Rationale |
|---|---|---|---|---|---|---|---|---|---|
| D05 | DBS Group Holdings | 75.08 | ADD | 75.07 | 72.50 | 77.51 (+3.3%) | 83.19 (+10.8%) | 92.58 (+23.3%) | DBS is being doubled up on the back of a record quarter. The bank reported second-quarter net profit of S08bn, up 9%, with total income crossing S$6bn in a single quarter for the first time, fee income up 25% and wealth-management fees up 42% to a record S - and it raised the shareholder payout to Sfor the quarter including a capital-return dividend. The shares responded by breaking to a fresh high, closing 2.1% up on heavy volume and above every major moving average, which flipped the signal engine from a quiet hold to its strongest possible reading. The offsetting risk is honest and worth stating: net interest income fell 2% as the margin narrowed 18 basis points, so fees are carrying the bank while rates drag - one wire headline framed the quarter as an estimates miss with earnings set to dip this year. The market weighed both and bought it. Three-month view roughly 23% higher. || OPERATIONAL: Action price is the anchor's printed model Entry_Price, unmodified; Entry_Distance_ATR -0.01 so this is at-market, not a queue and not a chase (RSI 69.4 < 75). L6 does not bind - the open gapped only +0.41%, the move was intraday accumulation. G1 audit: the RSI_DIV on this held row is NOT a trim trigger on a fresh BreakoutUp at cv>=80 - trail, do not trim; row is not PROFIT_ARMED (Gain_ATR 2.07 < 3.0, T12_Progress 81.10 < 90). Quality_Pass False does not block - ADD to a held name, plus SGO-3 financials carve-out; DCF-anchor annotation suppressed per SGO-3. Size: Portion 114.38% x 2,200 = 2,516 -> x 1.0 = S = 9.3% of book; post-add exposure 17.4%, 60% cap not binding. Stop raised 70.95 -> 72.50 (model chandelier) now that the hold-through print has landed. f=0.30 (L5/SGO-2). Scorecard 0 - BreakoutUp_20D|buy has NO live cell in this book. · news |
| O39 | OCBC Bank | 29.33 | ADD — QUEUED @28.82 | 28.82 | 27.73 | 29.34 (+1.8%) | 30.55 (+6.0%) | 37.37 (+29.7%) | OCBC is being added to on a pullback order rather than bought at the close. The bank closed at its high of the day, 2.4% up and above every major moving average, on the most reliable buy pattern in the framework printing for a sixth straight session - conviction jumped from. Its own second-quarter results land tomorrow, and DBS's record print this morning is the read-across that matters: the same fee-and-wealth engine, the same capital-return playbook OCBC has already guided to, and the same margin compression as the shared risk. Standing guidance is mid-single-digit loan growth, a 50% dividend payout and a S5bn capital return on track. Because the shares have already run nearly a full day's volatility past the model entry, the order sits 1.7% below the close: it will not chase a good-news gap, and it will fill on exactly the post-results dip this pattern is built for. Three-month view about 30% higher. || OPERATIONAL: QUEUED GTC limit at the anchor's printed model Entry_Price 28.82, expires 2026-08-12 (08-07, 08-11, 08-12; 08-10 National Day excluded). Entry_Distance_ATR -0.97 trips the no-chase bar (close IS the high) -> limit style per SGO-5; suppression clauses clear (RSI 66.2 < 75; entry 1.7% below close, not marketable). Quality_Pass False does not block - ADD + SGO-3; DCF annotation suppressed. Size: Portion 114.38% x 5,800 = 6,634 -> x 1.0 = S = 9.4% of book; post-add 17.8%. Stop HELD at 27.73, deliberately NOT raised to the model 28.17 - the hold-through in-band gap floor is 29.33 x 0.96 = 28.16, so 28.17 would sit Sabove the floor and an at-the-limit print would clip the whole line; adopt the model level at the 08-07 EOD once the print is absorbed. Withdraw triggers: adj conviction < 65, expiry passed, RSI > 75, or entry rising to/above the close (reprice, never re-publish). Scorecard 0 - PullbackBuy_VWAP|buy is n=3 hit_1w 1.000 but REPORT-ONLY (n<5), must not bias. f=0.30. · news |
| S68 | Singapore Exchange | 24.32 | BUY — QUEUED @24.00 | 24.00 | 23.47 | 24.42 (+1.8%) | 25.40 (+5.8%) | 26.07 (+8.6%) | A new position in the Singapore exchange operator, bought on a pullback order. SGX has just closed its strongest year in nearly two decades: full-year turnover of S7bn with the highest average daily trading value in 18 years, daily securities value up 35%, half-year net revenue up 7.6% and adjusted profit up 11.6%, and management has committed to raising the quarterly dividend by a quarter-cent every year through 2028. The shares have climbed out of a three-week consolidation into the framework's most reliable buy pattern, and at a relative-strength reading of 58 this is the least stretched of today's three purchases. The honest counterweight is valuation: on a residual-income basis the exchange screens as priced at roughly twice its intrinsic anchor, which is why the position is cut to three-quarters of standard size and why the three-month view here, about 9%, is the shallowest of the three. This is a momentum trade with a modest forward view, sized accordingly. || OPERATIONAL: QUEUED GTC limit at the anchor's printed model Entry_Price 24.00, expires 2026-08-12. Entry_Distance_ATR -0.76 -> limit style per SGO-5; entry 1.3% below the 24.32 close (not marketable), RSI 58.3 << 75. The limit is how L6 is respected structurally rather than by abstention - it cannot chase a results gap up, and a gap down fills at the model entry with the stop only 2.2% below. Quality_Pass TRUE - the only acquire today clearing the hard gate on its own merits rather than via SGO-3. val_adj -10 is the maximum haircut (MoS_FV -1.9651); DCF-anchor annotation suppressed per SGO-3 (OVERVALUED_VS_RI = ResInc method = IsFinancial). Size: Portion 96.51% x Sx 20% = Sx 0.75 = S / 24.00 = 12,203 -> = 14.5% of book; 60% cap and not binding; 0.37% of today's volume. Adj 71 = thinnest clearance of the three. Withdraw triggers: adj conviction < 65, expiry passed, RSI > 75, entry rising to/above the close. f=0.30. · news |
| J36 | Jardine Matheson | 63.41 | SELL 50% | 63.41 | 61.76 | n/a | n/a | 58.48 (-7.8%) | Half the Jardine Matheson position is being sold because the trend has broken. The shares now sit below their 20-, 50- and 200-day averages, and the model's three-month view has fallen for four consecutive sessions to a level 8% under the current price - the signal has degraded from a buy, through a failed-breakout warning, to no tradeable read at all. What makes this a half rather than a full exit is that the business is doing fine and the price is cheap: first-half underlying profit rose 9% to US, free cash flow rose 21%, the interim dividend was lifted 8% and a fresh US buyback was announced, while the valuation work puts intrinsic worth far above the current quote. This is a classic sell-the-news fade - the stock has drifted 2.7% lower in the four sessions since those results - so the sensible response is to cut exposure to the fade, not to abandon an asset that is worth more than it trades for. || OPERATIONAL: Origination = Step 6 'Contrast' trend exit (close below EMA200 65.19 with a negative and deteriorating Target_12Week), unaffected by G1/G2/G3. NOT an ADR-0012 profit-take despite the PROFIT_ARMED flag on the row - the position is at -0.22% with Gain_ATR -0.07; the arm is a FALSE POSITIVE from T12_Progress 108.43 computed across an inverted span (Target_12Week 58.48 < Avg_Cost 63.55) - see systemic #1. NOT the L2 stop-break case either: the 61.76 stop is intact, close 2.7% above it; and note-B's stricter combination is unmet (this AVOID degraded from BUY, not from SELL-REDUCE) - that asymmetry is exactly why the cut is 50% not 100%. Tier: section 9(b) - an UNDERVALUED name's trim argues DOWN one tier,. Gate audit: G1 not engaged (NoTrade cv0); G3's substantive test satisfied anyway (forward view negative AND signal bearish). ESCALATION (L3, written down so it is not re-litigated daily): a decisive close below Stakes the remaining in full; absent that this trim is DONE and must not be re-proposed session after session. Proceeds Srealised -S (-0.22%). 1wk/4wk n/a - the NO TRADE row prints no Target_Price, never synthesised (SGO-4). CURRENCY caveat carried: fairvalue reads Price_Currency=USD while the scan renders S$ (systemic #5); all arithmetic here uses the book's own SGD units. · news |
| G07 | Great Eastern | 22.00 | HOLD | 22.00 | 20.80 | n/a | n/a | 31.35 (+42.5%) | The remaining Great Eastern stake is held, with the protective stop lifted rather than another slice sold. The position is 20% ahead of cost and the three-month view is still more than 40% higher, so there is no case for cutting further today - yesterday's profit-take of 30% already banked the deterioration signal, and the same unchanged signal does not justify selling again. What has improved is the risk line: as the shares have settled, the trailing stop ratchets up to S, five and a half percent below the current price, so more of the gain is locked in without giving up the upside. The insurer also pays its Sinterim dividend later this month, worth Son the retained holding. || OPERATIONAL: Armed but NOT re-fired. Row still prints PROFIT_ARMED (Gain_ATR 4.97, +20.42%) and tick (d) is still literally true (4th consecutive NO TRADE, last three genuine 'Consensus conflict'; the 08-03 liquidity-gate print stays suppressed per SGO-4) - but that tick FIRED on 08-05 and was executed this morning ( @ 21.98). A tick fires once per instance; re-firing a standing unchanged condition would ladder the entire winner out, which ADR-0012 forbids ('never 100% from profit-take alone'). Fresh-tick audit: (a) other Exit_Warning code - NO, PROFIT_ARMED stands alone, RSI_DIV last seen 08-03; (b) conviction drop >=20 - UNCOMPUTABLE, cv 0 both sessions (systemic #6); (c) dead forward view - NO, T12 31.35 = +42.5% vs the 22.44 threshold; (d) 2 consecutive NO TRADE - true but ALREADY ACTIONED. Price flat 21.98 -> 22.00, peak close unchanged at 22.30. -> mandatory trail-raise per Step 6. Trail arithmetic: 2.0 x ATR chandelier off the 22.30 peak close = 22.30 - 2 x 0.7510 = 20.80 (ratchet from 20.64 as ATR tightened 0.8312 -> 0.7510). RE-ARM TRIGGER: a NEW Exit_Warning code (RSI_DIV/CLIMAX_VOL/AVWAP_BREAK/EMA10_BREAK), a computable conviction collapse >=20, Target_12Week below 22.44, or a fresh close through 22.30 that resets the peak and then deteriorates. 1wk/4wk n/a - NO TRADE row prints no targets. · news |
| S58 | SATS | 4.82 | HOLD | 4.85 | 4.50 | n/a | n/a | 6.17 (+27.2%) | The new SATS position, bought this morning, is held unchanged. The buy-stop did its job - it triggered only because the shares traded up through S - though the strength faded into the close, leaving the holding fractionally underwater on day one. Nothing about the case has changed: the aviation-services group still trades above all its major moving averages and the three-month view is 28% higher, essentially where it was when the order was placed. The signal engine produced no read today for a purely mechanical reason (a liquidity filter), not because the setup deteriorated, so the position simply sits behind its Sstop. || OPERATIONAL: Today's row is NO TRADE / 'Liquidity gate failed' - MECHANICAL, not deterioration (SGO-4): it blanks Action/conviction/entry/stop/targets on a name that traded 8.55m shares (systemic #2). Hold on the manual stop 4.50. Row also prints Held=N with blank position columns - executor write-lag, scan 18:00:29 vs fill 18:00:31 (SGO-4d, systemic #3). Marks: fill 4.85, close 4.82 (-0.6%), range 4.79-4.96; above EMA20 4.664 / EMA50 4.382 / EMA200 3.836; Target_12Week 6.17 vs the 6.19 that underwrote the buy. Stop 4.50 = -6.6%, risk S = 0.95% of book. 1wk/4wk n/a - gated row prints no targets, never synthesised. |
| U11 | United Overseas Bank | 43.58 | NO ACTION | 43.58 | 43.06 | 44.00 (+1.0%) | 44.97 (+3.2%) | 49.30 (+13.1%) | UOB qualified today and was still not bought - it lost on ranking, not on merit. The third Singapore bank jumped from a watch reading to a buy at 71 conviction and cleared the bar, but it finished fourth of four candidates for three slots, behind two banks with stronger signals and a cheaper exchange. Two things justify that ordering rather than making it arbitrary: the pattern triggering it is the framework's least reliable buy setup, historically wrong three times in four, and the entry price is exactly where the shares closed, meaning any order would fill instantly with no margin. UOB also reports second-quarter results tomorrow and, unlike the two banks already owned, there is no existing position to defend - so there is no reason to step into an unpriced result on the weakest of the four setups. Recorded so that the cost of not acting gets measured. || OPERATIONAL: adj 68 = 71 val_adj -3, three points clear of the 65 floor - excluded on slots only. L1 explicitly discounts FailedBreakdown_Up_20D (~0.25 hit, ~60% stop-first in the reference book); its only live cell here is n=1 with hit_1w 0.0. Entry_Distance_ATR -0.00 -> entry IS the close, a marketable limit SGO-5 warns against republishing. Quality_Pass False would NOT have blocked it (SGO-3 bank carve-out). Ledgered optional=true for the counterfactual grader - the near-miss most likely to prove the no-chase style expensive again (no_chase_queue currently reads cost, median withheld 1wk 5.57%, n=19). target_1w computed at f=0.30 for grading purposes only. · news |
Outcome & track record
Accuracy at the time of this record.
12 Graded decisions Past recommendations old enough to score against what actually happened (target hit / stopped out / closed). This is the evidence base — the bigger the number, the more history behind the calls. Click to inspect every one. See the decisions →
0.141 1-week calibration How much of the eventual 4-week move typically shows up in the first week (0 = almost none, 1 = most of it). Use it to read the 1-week estimates: a low number means prices drift toward the target slowly, so don't over-read a soft week-1.
50 Published records How many dated end-of-day verdicts exist for this book — the length of the public track record you can browse in the Archive below.