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 |
|---|---|---|---|---|---|---|---|---|---|
| J36 | Jardine Matheson | 58.43 | SELL 50% | 58.43 | 56.74 | n/a | n/a | 45.96 (-21.3%) | We are selling half the Jardine Matheson position because the trend has broken decisively. The shares closed at S, below every major moving average we track - the 20, 50, 100 and 200-day lines - and the model's own three-month projection now points 21% lower, to about S. The engine has flagged this as its single strongest sell candidate for a second consecutive session, which makes it a stable signal rather than a one-day wobble. The stock does screen as genuinely cheap on intrinsic value, and that is precisely why we are trimming half rather than exiting: a falling price on an undervalued asset argues for taking the minimum risk reduction, not the maximum. News flow is strategically interesting but undated - Hongkong Land is in talks for over US$1bn of prime Tokyo mixed-use property as part of Jardine's shift from conglomerate to returns-focused investment holder - and optionality without a catalyst does not reverse a broken chart. We keep working with a stop at S. OPS: STABLE REDUCE, 2nd consecutive print - STRONG SELL - REDUCE cv71, Sell_Rank #1, 80.07, Position_Status CLOSING. Signal-originated TREND EXIT per CLAUDE.md s9 (gate-immune); G1/G2/G3 do NOT apply, nothing is uptrending. The row's PROFIT_ARMED is the inverted-span artifact (T12_Progress 127.13 on a +0.62% position) and is DELIBERATELY NOT the basis. Valuation amplify-only: UNDERVALUED MoS +0.4205, Quality_Pass True, DCF 132.13 -> ONE TIER DOWN, 80.07% -> 50% (, SG 100-lot ok), proceeds SScorecard FailedBreakout_Down_20D|sell 4-for-4 at BOTH horizons but n=4 -> report-only, bias 0, 4th straight grading locked out. NOT a full exit: L2 unmet, close is 2.98% ABOVE the 56.74 stop (low 57.32). Stop HELD at the 56.74 watermark - row prints 55.67, a watermark is never lowered. Repriced 58.08 -> 58.43 (+0.60%, favourable, inside the 1.5% gap gate) after the executor failed to fill for a FOURTH session. 1wk/4wk n/a (Target_Price blank; f would have been 0.124); model band 57.14-59.60. NO J36 catalyst anywhere in the 10-day horizon window. L3 four sessions overdue. · news |
| Z74 | Singtel | 4.50 | SELL 30% | 4.50 | 4.50⚠ | 4.52 (+0.4%) | 4.65 (+3.3%) | 4.55 (+1.1%) | We are trimming 30% of Singtel - a smaller cut than the half-position we proposed last night, because the case for selling genuinely weakened. Conviction in the name recovered from zero back to 50 and the momentum reading came off bearish, so the sharp deterioration that justified a larger reduction has reversed. What has not improved is the forward view: the model projects roughly Sin three months against today's Sclose, a flat 1.1% over a full quarter, and the shares are now sitting exactly on the Slevel we set as our risk line. A flat outlook on a stock resting on its stop, heading into a US inflation print that Singapore will price at Monday's open, is a reasonable place to take some risk off. The valuation argument cuts the other way - Singtel trades on about 12 times earnings against an Asian telecom average of 16.5 - but cheapness alone does not cancel a deteriorating outlook, and Singapore operating profit did fall 4.6% on mobile competition and travel-eSIM roaming pressure. We keep. OPS: ADR-0012 ARMED (PROFIT_ARMED, T12_Progress 98.90) + EXACTLY ONE TICK: (c) dead 12wk, 4.55 < 1.02 x 4.50 = 4.59, a 0.87% margin -> profit_take_1 = 30%. DOWNGRADED from the thrice-unfilled 50%: tick (b) NO LONGER FIRES (conviction ROSE, Momentum Bearish -> Neutral_True, consensus Conflicted -> Consolidation_Bullish); tick (a) no 2nd Exit_Warning; tick (d) needs 2 consecutive NO TRADE and the label went NO TRADE -> HOLD. Three unfilled 50% cards do NOT entitle tonight's card to inherit their size. G1 unavailable (HOLD cv50, not a fresh breakout at cv>=80). SGO-4 not needed - this is a live HOLD row, not a mechanical NO TRADE. Valuation inert (neither <=-3 nor UNDERVALUED, no tier change). Scorecard bias 0: tonight's cell is FailedBreakdown_Up_20D (PROFIT_ARMED)|sell n=1 report-only; the ACTIONABLE -2 on NoTrade (PROFIT_ARMED)|sell does NOT key to a HOLD row. STOP EXACTLY AT THE MARKET: settled close 4.50 == the 4.50 watermark (low 4.48 pierced); L4 - a close AT a stop is not a close BELOW it, NO stop-out; L2 fails both legs (12wk +1.1% positive). OPERATIVE TRIGGER: a settled close below 4.50 converts this into the full L2 exit. Estimates at f=0.124 (scorecard-measured, L5 stood down); 12wk 4.55 carries the exceeds-DCF-anchor flag (DCF 1.95; Z74 not financial so SGO-3 suppression does not apply). CAVEAT (systemic #4, 3rd session): the position is LOSING - cost 4.52, close 4.50, Unreal_PnL -0.44%, Gain_ATR -0.27 - so 'profit-take' is a category error; the card stands on the flat forward view. Price still above EMA20 4.482/EMA50 4.437/EMA200 4.402 with Trend Bullish - recorded as the counter-argument. Repriced 4.52 -> 4.50 (-0.44%, ~Son this leg). FTSE ST review 09-21 is 6 sessions out, weight-only. · news |
| D05 | DBS Group Holdings | 77.00 | HOLD | 77.00 | 77.93⚠ | 77.19 (+0.2%) | 78.56 (+2.0%) | 88.13 (+14.5%) | We are holding DBS in full despite the shares closing below our risk line for a third session, because the margin narrowed rather than widened and the underlying trend is intact. The stock closed at Sagainst a Sstop - 1.2% below, improved from 1.5% - and posted its first up-close in four sessions, back above its 20-day average. Crucially, the model's three-month view remains strongly positive at about Sroughly 14% higher, and our exit rule requires both a decisive break and a negative forward view before we cut. The business news confirms the hold: record second-quarter profit of S08bn, up 9%, on record total income of S09bn, with a combined Sper share dividend. US inflation data lands tonight and Singapore prices it at Monday's open, with the Federal Reserve decision three sessions later - both hit bank shares directly, and our discipline is to hold through a scheduled event rather than trim into it. This is a 60% position and it goes into that print unhedged by design. OPS: STOP BREACH 3rd session, margin NARROWED -1.46% -> -1.19%. L2 second leg FAILS (12wk +14.45%), no exit; pre-authorized in the 09-08 card. Close +0.43% above EMA20 76.6708 (was +0.20%), EMA50 73.68, EMA100 69.08, EMA200 63.00; Trend Bullish, Regime Trending. The MODEL'S OWN STOP TIGHTENED 75.90 -> 76.75 - the engine walking its risk line back up toward the watermark. THE 77.93 WATERMARK IS AGAIN DELIBERATELY NOT LOWERED; the monitor will keep flagging it and that is the honest state. OPERATIVE EXIT TRIGGER: a close below EMA20 76.6708, or below the model stop 76.75. Adjusted conviction 57 (60 raw, val_adj -3, bias 0) = 8 UNDER the 65 floor, so no add either; position is S = 59.83% of NAV, the largest single risk in the book. CATALYST-AWARE HOLD is immediate and decisive: US Aug CPI 20:30 SGT tonight -> SGX prices it at the SAME open these cards execute in; FOMC 09-16 (band -2.0%/+2.5%, stance hold-through). New news item: DBS-Citi first weekend cross-border USD settlement on Swift's digital ledger via tokenised deposits (05-Sep) - infrastructure credibility, not a price catalyst; Paredes retirement is a 2027 succession item. 1wk 77.19 at f=0.124. Not PROFIT_ARMED (Gain_ATR 1.07, T12_Progress 87.37). · news |
| O39 | OCBC Bank | 31.60 | HOLD | 31.60 | 31.11 | 31.71 (+0.3%) | 32.52 (+2.9%) | 38.72 (+22.5%) | We are holding OCBC and leaving the trailing stop where it is. The position is sitting on a healthy 10% gain, which arms it for profit-taking, but none of the deterioration triggers we require alongside that gain have fired: conviction slipped only slightly, no new warning flags appeared, the shares closed up on the day, and the three-month projection remains strongly positive at about S, some 22% higher. Our rule in that situation is to raise the trailing stop rather than trim - but the stop the model calculates, S, still sits below the Sline we have already set, and we never walk a protective stop backwards. So the stop stays at Sfor a fifth session. The business picture supports patience: record total income, strong wealth-management and insurance contributions, a new AI-driven wealth app, and a 71% one-year total return. At this is a token holding worth under S - the discipline here is about process, not exposure. OPS: ARMED (PROFIT_ARMED, Gain_ATR 6.44, Unreal +10.37%, T12_Progress 81.61), ZERO TICKS for a FIFTH session - (a) no 2nd Exit_Warning code; (b) conviction, only -7, inside the 20-pt bar; (c) 12wk 38.72 >> 1.02 x 31.60 = 32.23, alive; (d) not NO TRADE. MANDATORY TRAIL-RAISE path per ADR-0012, but chandelier (31.60 - 2.0 x ATR 0.4611 = 30.68) and row Stop_Price 30.68 are BOTH below the 31.11 watermark -> NO RAISE AVAILABLE, stop held 31.11. Today's low 31.35 stayed clear, unlike last session's one-cent pierce of the watermark. Valuation amplify-only and inert on a hold (OVERVALUED_VS_RI MoS -0.7956; SGO-3 - O39 IsFinancial True so Quality_Pass False and the DCF anchor 32.21 are structurally non-binding). Position S = 0.48% of NAV. Same CPI 09-11 / FOMC 09-16 hold-through as D05 (stance hold-through, band -2.0%/+2.5%). News confirms; Tan Yen Yen board retirement is routine governance; 16.6x P/E vs a ~15.1x fair estimate. 1wk 31.71 at f=0.124. · news |
| — | Keppel | — | NO ACTION | — | — | n/a | n/a | n/a | Keppel is the only name in the book printing a genuine buy signal tonight and we are still not buying it, for three independent reasons. First, intrinsic value: the shares screen as substantially more expensive than our valuation work supports, which applies the maximum penalty to an otherwise decent setup and leaves conviction thirteen points under our minimum bar. Second, our quality screen - profitability trend and cash generation - fails outright, and that screen is a hard block on opening a brand-new position, as opposed to adding to something we already own. Third, the entry price the model wants, S, sits above today's Sclose, which means the order would be chasing the stock higher rather than buying a pullback. The company news is genuinely good but undated: Apollo has committed US5bn to Keppel's offshore energy fund against a roughly S7bn programme to monetise ten legacy rigs, first-half revenue rose 24.6%, and the company bought back S of its own shares. Good strategy is not a trading catalyst, and it does not close a thirteen-point gap. OPS: floor is adj conviction >=65; 60 raw, val_adj -10 (clamped from round(-3.062 x 5) = -15), scorecard bias +2 (PullbackBuy_VWAP|buy ACTIONABLE) = 52, THIRTEEN SHORT. Buy_Rank #1, 69.18. QUALITY GATE HARD BLOCK: Quality_Pass False AND IsFinancial False, so the SGO-3 financials carve-out does NOT reach it, and BN4 is = a NEW ENTRY, exactly what the gate blocks. SGO-5 SUPPRESSION: model entry 11.54 is ABOVE the 11.43 close (Entry_Distance_ATR +0.50) - the rule suppresses the reprice when the entry sits at/above the close, so NOT QUEUED at any price. Size modulator would have been 0.5x (MoS <= -3). Target_12Week 11.55 clears the close by only +1.05%. RE-ARM TRIGGER: conviction >=65 WITH a Quality_Pass flip, at an entry at or below the close. 1wk 11.52 at f=0.124 shown for reference only - no position taken. Ledgered direction=none/optional=true so the counterfactual grader prices the pass. Standing counterfactual no_chase_queue n=28 median +9.02% at 4wk [cost] argues the other way and is recorded, not obeyed. |
Outcome & track record
Accuracy at the time of this record.
51 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.