ANALYST REPORT — ML (SET:ML)¶
Data-quality preface (binding). The auditor graded this package D. The only trustworthy artefact is the 10-year daily OHLCV from yfinance. The SET profile, financial-highlights, shareholders and filings pages are JS shells or outright 404s; the news, blogs, forums and Stocktwits feeds are 100% ticker-collision noise (machine learning, Mobile Legends, "set" as a verb, and US-listed MoneyLion). The config string "Microlistens (Thailand) PCL — hire-purchase financing for trucks, THANI competitor" is unverified by anything in the package — the name "Microlistens" reads like a tech/audio brand, not an auto-finance lender, and I could not confirm either the registered name or the business line from the bytes provided. I therefore cannot deliver a defensible fundamental case. What follows is a structured statement of what is actually knowable and where the holes are.
1. The business in 200 words¶
Cannot be verified from this package. The config asserts ML = "Microlistens (Thailand) PCL", Services/Commerce sector, hire-purchase financing for trucks and commercial vehicles, framed as a THANI competitor. None of those four claims can be cross-checked: the SET profile page in the package is a Nuxt SSR shell with no business-description text, and the shareholders/filings pages return Thai "ขออภัย ไม่พบข้อมูลที่คุณต้องการ" (404) errors.
Note also that on the actual SET, ticker ML has historically been associated with Mida Assets PCL (consumer hire-purchase of electrical appliances and a real-estate arm) — which the auditor flagged as a possible identity mismatch with the config string. I will not pretend to know which entity this is. Until the business description, paid-up capital, shareholders, and last 56-1 One Report are recovered, every downstream claim about customers, concentration, pricing power, and moat would be fabrication.
What I can say: this is a low-priced Thai small-cap (sub-฿2) that trades on tens to hundreds of thousands of shares on a normal day. That is the population from which speculative momentum names are drawn.
2. 10-year financial trajectory¶
No income statement, balance sheet, or cash-flow data is present in the package. The SET financial-highlight HTML is a 428 KB JS shell with no rendered numbers. I therefore cannot quote revenue, EBITDA, EPS, DPS, NIM, NPL ratio, loan-book size, ROE, ROA, leverage, dividend history, or book value. To do so would be invention.
What the price tape tells us (source: data/prices/ML.csv, 2,451 rows, 2016-05-26 → 2026-06-22):
- First close in series: ฿1.68. Latest close (2026-06-22): ฿1.51. Net change over ~10 years is roughly flat-to-negative.
- Summary-row annualised return: –10.2% p.a. — i.e. a long, grinding de-rating for most of the decade.
- Max drawdown: –86.25% (plausible given a sub-฿0.50 trough visible in the recent 60-row excerpt vs. the ฿1.68 start).
- (The summary-row Sharpe of +0.21 is internally inconsistent with the negative annualised return; auditor flagged it as a pipeline bug. I am ignoring it.)
That price path is the typical shape of a Thai small-cap whose earnings power has eroded — consistent with either (a) a hire-purchase / consumer-finance book that suffered through the 2020–2024 Thai household-debt cycle, or (b) a sub-scale services name that lost share. I cannot tell which without the financials.
3. Sector & peer comparison¶
The config says "Services / Commerce, THANI competitor." Those two descriptors do not belong together — THANI (Ratchthani Leasing) sits in Financials / Finance & Securities, not Services/Commerce. Either the sector tag is wrong or the peer tag is wrong. Logical Thai peer sets if the business is genuinely commercial-vehicle hire-purchase would be THANI, ASK (Asia Sermkij Leasing), GL, MTC, SAWAD; if the business is consumer-appliance hire-purchase + property (the Mida profile), peers would be SINGER, AEONTS, IFS plus mid-cap property names. No peer financials are in the package, so I cannot benchmark margins, NIM, NPLs or cost-of-risk.
4. Capital allocation track record¶
Unverifiable from this package. No dividend history, no buyback record, no M&A disclosures, no insider-transaction list, no shareholder register (404), no filings list (404), no capital-action log. The Adj Close column equals Close on every visible row, which suggests no split/dividend adjustments were processed — but that itself is unverified and is just as likely a data-pipeline limitation as a true "no dividends paid" signal. Do not infer a dividend policy from this.
5. Macro sensitivities (with rough quantification)¶
I will not quantify sensitivities for a company whose business model I cannot verify. Generic directional priors if the THANI-competitor framing is correct (Thai commercial-vehicle hire-purchase):
- BoT policy rate — every +25 bp without re-pricing power compresses NIM ~10–20 bp for a typical Thai non-bank lender. Thailand's policy rate cycle through 2023–2025 was the relevant headwind.
- Thai household debt / truck-operator cash flow — Thai HH debt ~90% of GDP has been the binding constraint on hire-purchase NPLs since 2023; commercial-vehicle financiers were hit by weak freight rates and a soft pickup-truck market.
- Used-truck residual values — direct hit to loss-given-default; correlated with China steel/scrap and domestic construction activity.
- THB/USD — second-order only (funding is mostly THB).
If the business is consumer hire-purchase / appliances / property (the Mida profile), the sensitivities skew to household disposable income, BoT rate path, and Thai residential property turnover. Either way, I cannot quantify EPS impact without a P&L.
6. Recent news flow & narrative (last 12 months)¶
The package contains zero verified company-specific news. Every Google News hit is a ticker-collision on the word "set" (SET = Stock Exchange of Thailand, "set to launch", "On-Set Beauty Secrets from The White Lotus"). Every Stocktwits post is about $ML = MoneyLion (US Nasdaq), an unrelated entity going through a $12.75m investor settlement. Reddit endpoints 403'd. The SET news page in the package is an unrendered Nuxt shell.
What the tape shows, with no narrative attached (this is fact, not interpretation):
- 2026-03-25 to 2026-05-22: range-bound ฿0.41–0.48 on volumes typically 20k–500k/day.
- 2026-05-25 onward: a vertical move. ฿0.46 (25 May) → ฿0.55 (27 May) → ฿0.76 (29 May, vol 15.1m) → ฿0.99 (2 Jun, vol 23.0m) → ฿1.25 (4 Jun) → ฿1.45 (5 Jun intraday high ฿1.44, vol 35.8m) → ฿1.49 (12 Jun, vol 31.1m) → ฿1.51 (22 Jun).
- That is ~3.5× in ~1 month on volume up ~100× versus the prior baseline.
There is no event in this package that explains it. Candidates a real analyst would chase next: SET surveillance/cash-balance notice, a capital action (RO/PP/warrant), a backdoor-listing or change-of-business rumour, a major shareholder change, or pure pump-and-dump activity. Until the SET filings page is recovered, the move is unexplained.
7. 2-year forecast¶
Withheld. A responsible FY+1 / FY+2 model requires at minimum the last 3 years of P&L, balance-sheet leverage, a verified loan-book or revenue base, and dividend policy. None of these are present. Producing point estimates for revenue, EBITDA, EPS or DPS from this package would be fabrication and I refuse.
Fair value range: also withheld for the same reason. I will note only that the spot price ฿1.51 sits roughly 3.5× above the ~฿0.43 base where the stock spent most of Q1–Q2 2026, and that the 10-year price arithmetic is a negative ~10% CAGR — meaning whatever the fundamentals are, the market spent the prior decade marking them down.
To unblock a forecast, the following must be retrieved: 1. Last 3 annual reports / 56-1 One Reports (revenue mix, loan-book composition, NPL stages). 2. Most recent quarterly MD&A. 3. Shareholder structure (top-10 + free float + NVDR). 4. Dividend history and any 2025–2026 capital actions. 5. SET news/filings feed for May–June 2026 to explain the spike.
8. Key risks (ranked)¶
- Identity / data risk (highest). Until the company name and business line are confirmed from a primary source, every fundamental statement is at risk of being attached to the wrong issuer.
- Unexplained 3.5× run on heavy volume. Sub-฿2 Thai small-caps that triple in a month on no disclosed news historically mean-revert violently when the catalyst (rumour, corner, or pump) fades. SET has standing surveillance tools (cash-balance, trading-halt) that can be invoked without warning.
- Sector / credit-cycle risk if the hire-purchase framing is correct: Thai household debt at ~90% of GDP, residual-value pressure, and a BoT that has been slow to cut have squeezed every consumer/commercial-vehicle financier's NIM and cost-of-risk since 2023.
- Liquidity / float risk. Pre-spike ADV was often <500k shares. Exit liquidity for any institutional position is poor and asymmetric.
- Governance & disclosure opacity — at the package level, four of four primary SET pages failed to render real content. That is not a fundamentals signal, but it does mean a buy-side desk would be flying blind.
9. Rating: HOLD — but functionally NO-COVERAGE¶
I cannot in good conscience publish a BUY or SELL on a name whose business model, financials, shareholders, and recent corporate actions are all absent from the data package, and whose recent 3.5× price move has no explanation in any verified source. The honest output here is:
- Rating: HOLD / Suspend coverage pending data recovery.
- Action for the desk: do not initiate, do not chase the breakout. If already long from below ฿0.50, recognise that the ฿0.43 → ฿1.51 move is a price event, not an earnings event in anything we can see. A standing stop and partial profit-taking is the only defensible posture.
- Re-rate trigger: retrieval of (i) the verified company identity, (ii) FY2023–FY2025 P&L and balance sheet, (iii) the May–June 2026 SET filings, and (iv) shareholder register. Give me those and I will produce a real 2-year model within 48 hours.
Sources used: data/prices/ML.csv (yfinance, 2,451 rows, 2016-05-26 to 2026-06-22); 10-year summary row from same file (with the Sharpe field discarded per audit); config block in the data package header (flagged as unverified); auditor's data-integrity note (Grade D). All news, social, and SET-HTML excerpts were inspected and discarded as either ticker-collision noise or unrendered shells, per the DO-NOT-FABRICATE list.