Recommendations
0 to acquire · 2 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 |
|---|---|---|---|---|---|---|---|---|---|
| Z74 | Singtel | 4.56 | SELL 50% | 4.56 | 4.50 | 4.58 (+0.4%) | 4.71 (+3.3%) | 4.65 (+2.0%) | Singtel has run to the top of its own 12-week forecast and the momentum behind that run is fading, so we bank half the position and let the rest ride. The stock closed at the day's high on a bullish trend, but the model's 12-week view (4.65) now sits essentially level with the price and RSI is diverging from it - the classic point where a strong move stops paying. Valuation is neutral-to-rich (GROWTH_PRICED_IN, margin of safety -0.61) and there is no news catalyst either way, so this is a discipline trim, not a call that Singtel is broken. || ADR-0012 profit-take: ARMED (PROFIT_ARMED, T12_Progress 98.06) + 2 TICKS - (a) RSI_DIV on the same row, (c) dead 12wk 4.65 < 1.02 x 4.56 = 4.6512 (MARGINAL, 0.026%) -> profit_take_2 = 50%. Tick (b) does not fire (conviction ROSE. G1 protection unavailable: signal is FailedBreakdown_Up_20D at cv73, not a fresh BreakoutUp/MomentumContinuation at cv>=80. Valuation inert: MoS -0.61 is neither <=-3 (no bump) nor UNDERVALUED (no step-down), tier unchanged at 50%. RE-ISSUE of the 09-08 card that the Auto-Executor never filled, REPRICED 4.54 -> 4.56 per the provenance rule (+0.44%, well inside the 1.5% gap gate). L3 applies - execute the de-risk promptly, do not let it roll a third session. Retain 30,900 on the 4.50 stop (chandelier 4.41 and row stop 4.41 are both below the watermark, no raise available). Counter-argument recorded: Z74 is still above EMA20/50/200 with Trend and Momentum both Bullish and the position is two sessions old (bought 09-07 @4.52, +0.88%), so the trim banks only ~Sagainst round-trip slippage; taken because the fire rule is mandatory. Scorecard notes against it: FailedBreakdown_Up_20D|buy is 0-for-4 at 1w and 4w (report-only), and the optional_trim counterfactual reads [saved] only +0.59% at 1w / -1.12% at 4w. · news |
| J36 | Jardine Matheson | 57.63 | SELL 30% | 57.63 | 56.74 | n/a | n/a | 45.14 (-21.7%) | Jardine Matheson gapped down and closed below every major moving average it tracks, and the model's 12-week view now sits 22% under the current price - the trend has turned against the position. We cut the smallest disciplined slice (30%) rather than exiting, because the shares still screen genuinely cheap on fundamentals (UNDERVALUED, margin of safety +0.42, quality screen passed) and the price is still above our stop. This is trend risk management on a name whose long-term value case remains intact. || ADR-0012: ARMED (PROFIT_ARMED, T12_Progress 127.67 on an INVERTED span - target 45.14 sits BELOW cost 58.07, the known artifact) + 1 TICK - (c) dead 12wk, 45.14 = -21.7% vs the 57.63 action price. Ticks (b) and (d) DELIBERATELY NOT COUNTED: today's NO TRADE is a mechanical 'Liquidity gate failed' print, which SGO-4 classifies as 'not evaluated', not deterioration - the cv collapse is the gate blanking the row, not a real conviction drop. INDEPENDENT trend-based basis per CLAUDE.md section 9, unaffected by the G1/G2/G3 gates: close 57.63 is below EMA20 59.83, EMA50 61.56, EMA100 63.50 AND EMA200 63.61, Trend Neutral_Bearish_Context, Pillar_Consensus Consolidation_Bearish, with a negative 12wk. NOT a full exit: L2 unmet - the close is 1.57% ABOVE the 56.74 stop (today's low 56.91 came within 0.3% but did not breach). Valuation argues the tier DOWN (UNDERVALUED, MoS +0.4205, Quality_Pass True - 'trim the minimum'); 30% is already the minimum tier, so no change. Scorecard bias -2 from NoTrade (PROFIT_ARMED)|sell (n=5, ACTIONABLE) also argues down - again, already at the floor tier. 30% x 4,800 = 1,440 rounded DOWN to the SG 100-lot = 1,400 (effective 29.2%). RE-ISSUE of the 09-08 card the executor never filled, REPRICED 58.71 -> 57.63 (-1.84%). Retain 3,400 on the 56.74 stop - do NOT adopt the row Stop_Price, which is blank on a NO TRADE row. News: dividend went ex on 2026-08-20 and explains part of the drift; no in-window override found. · news |
| D05 | DBS Group Holdings | 77.50 | HOLD | 76.81 | 77.93⚠ | n/a | 79.58 (+3.6%) | 90.84 (+18.3%) | DBS dipped fractionally through our trailing stop but we are holding: the business is at record profitability and the forward view is still strongly positive, so this reads as noise rather than a trend break. Second-quarter net profit hit a record S08bn (+9% year on year) with fee income up 22%, and management has guided the quarterly dividend higher. The price is still well above its 20-, 50- and 200-day averages and the model's 12-week view is 17% above today's close, so the single condition that would justify selling - a decisive break WITH a negative forward view - is not met. || *** STOP BREACH, HELD BY RULE. *** Settled close 77.50 is 0.55% below the recorded 77.93 stop (open 77.95, high 78.11, low 77.40). L2 requires a decisive close below stop AND a negative 12wk to constitute an exit; the 12wk is +17.2% (90.84), so the second condition FAILS and no exit is taken. This was PRE-AUTHORIZED in the 09-08 card, which flagged the 77.93 stop as a hair-trigger 7 cents under that day's low and wrote 'if it trips on noise rather than a genuine trend break, treat re-entry as live rather than accepting the exit as a signal.' Structure intact: close above EMA20 76.62, EMA50 73.41, EMA100 68.76, EMA200 62.71; Trend Bullish; Regime Trending; signal PullbackBuy_VWAP cv60. Catalyst-aware hold reinforces it - US August CPI 09-11 and FOMC 09-16 both land on the bank leg inside 5 sessions, and the doctrine is hold/trail THROUGH the event. STOP WATERMARK DELIBERATELY NOT LOWERED to the row's 75.77 - a risk line is not moved down to avoid an inconvenient print. It stays at 77.93 and the monitor will keep flagging it; the OPERATIVE exit trigger is now a close below EMA20 76.62 or below the model stop 75.77, either of which would convert noise into a genuine trend break. Not a buy either: adj conviction 60 - 3 (val_adj, MoS -0.68) + 2 (PullbackBuy_VWAP|buy flipped -3 -> +2 this grading) = 55, ten points under the 65 floor, and the position is already 60.0% of NAV (cap-blocked). · news |
| O39 | OCBC Bank | 31.35 | HOLD | 31.39 | 31.11 | n/a | 33.15 (+5.6%) | 39.19 (+24.8%) | OCBC is sitting on a large gain but nothing has deteriorated, so we raise the risk line rather than take money off the table. Conviction is steady, momentum has not rolled over, and the 12-week view is still 25% above the current price. Holding a winner while it is still working is the point. || ADR-0012 profit-take path: ARMED (PROFIT_ARMED, Gain_ATR 5.14, unrealized +9.5%) with ZERO ticks fired for a THIRD consecutive session - (a) no other Exit_Warning code on the row, (b) conviction FLAT, (c) 12wk alive at 39.19 = +25.0% vs 1.02 x close 31.98, (d) Action is HOLD, not NO TRADE. Armed-without-a-tick is a MANDATORY TRAIL-RAISE, never a trim. However no raise is available: the ADR-0012 tightened chandelier (close 31.35 - 2.0 x ATR 0.5292 = 30.29) and the row Stop_Price 30.33 are BOTH below the existing 31.11 watermark, and a watermark is never lowered. Stop held at 31.11 for a third session. Today's low 31.20 cleared it by 0.3%. Position is small (, S0.5% of NAV) - the trail is discipline, not materiality. Not an add: adj 60 - 0 + 2 = 62, under the 65 floor. |
| BN4 | Keppel | 11.80 | WATCH | — | — | n/a | n/a | 12.30 | Keppel was last night's best buy candidate and it is off the table today - the signal collapsed outright. Nothing is bought. || Trail WATCH 53 -> BUY 62 -> BUY 73 (Buy_Rank #1) -> NO TRADE cv0 in one session; NoTrade_Reason 'Consensus conflict + low conviction', Pillar_Consensus Conflicted, Momentum pillar flipped to Bearish, Regime Transitional. Yesterday's card had it at adj conviction exactly 65 (73 - 10 val_adj + 2 bias), clearing the floor and stopped only by the hard quality gate (Quality_Pass False, IsFinancial False so SGO-3's financials carve-out does not apply). Tonight the floor question is moot - conviction is zero, so BOTH the gate and the floor block it. The price actually held up (11.80, still above EMA20 11.52 / EMA50 11.37 / EMA200 10.81) but the engine will not underwrite it. Recorded so the counterfactual grader prices what not buying at 11.80 cost or saved. Re-arm requires BOTH: conviction back >= 65 AND a Quality_Pass flip to True on the next fairvalue refresh. |
Outcome & track record
Accuracy at the time of this record.
47 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.124 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.