QUANT REPORT — XPG (X Spring Capital PCL)¶
As-of date per package: 2026-06-22 | Spot: ฿0.45 | Data window: 60 daily obs visible (2026-03-25 → 2026-06-22). Full 2,450-row CSV referenced but not provided in the package body — all stats below are computed from the visible 60-day window only. SET Index series: not provided. Factor/macro series (oil, USD/THB, US 10Y): not provided. Fundamentals: not provided.
1. Return statistics (60 trading days, 2026-03-25 → 2026-06-22)¶
Computed from visible OHLC close. SET comparison unavailable (no benchmark series in package).
| Metric | XPG (60d) | SET Index |
|---|---|---|
| Obs (non-zero-vol) | 56 | n/a |
| Period return | −8.2% (0.49 → 0.45) | n/a |
| Mean daily return | −0.09% | n/a |
| Daily vol (σ) | ~2.4% | n/a |
| Annualised vol | ~38% | n/a |
| Annualised drift | ~−23% (60d extrapolated; unstable) | n/a |
| Skew | ≈ +0.4 (right-tail from 2026-05-25 jump) | n/a |
| Kurtosis (excess) | ≈ 4–5 (one +9% day on 56 obs) | n/a |
| Sharpe (60d) | negative | n/a |
| Max DD (60d) | −12.2% (0.49 → 0.43) | n/a |
10y summary row from package is REJECTED per audit (first=0.42, last=0.45 cannot yield total_return=6.99 or CAGR=15%). Do not use.
Price tick-size friction is severe: stock prints on a ฿0.01 grid at the ฿0.43–0.49 level → minimum tick ≈ 2.2%. Most of the "volatility" is discretisation noise, not true price discovery. True σ is over-stated by tick noise; treat 38% as an upper bound.
2. Volatility regimes¶
Cannot identify multi-year regimes — only 60 days visible. Within the window:
| Sub-period | Range | Behaviour |
|---|---|---|
| 2026-03-25 → 04-30 | 0.43–0.50 | Drifting lower from 0.49 → 0.44; vol elevated |
| 2026-05-01 → 05-22 | 0.43–0.45 | Pinned at 0.44 ± 1 tick; vol near zero (discretisation floor) |
| 2026-05-25 → 06-05 | 0.44 → 0.48 spike | +9% gap up on 56m volume (vs 10m median); 8-session pop, faded |
| 2026-06-08 → 06-22 | 0.45–0.47 | Fading back; ends at 0.45 |
Current regime: post-spike mean-reversion / drift down. Volume on the May 25 pop (56.1M) is ~5× median (10–12M) — episodic, not regime change.
3. Beta & factor exposures¶
β to SET, oil, USD/THB, US10Y, China property: NOT COMPUTABLE. No benchmark series provided in package. Cannot regress. Cannot publish t-stats or R².
Style factor ranks (value/size/momentum/quality/yield): NOT COMPUTABLE. No P/E, P/B, ROE, dividend, market-cap or shares-outstanding data in package (shareholders & filings pages 404'd; financial page body not extracted).
Only structural priors usable: - Size: micro-cap (penny stock, ฿0.45 print) — bottom-decile likely. - Momentum (60d): −8% — negative. - Liquidity proxy: median daily volume ~10M shares × ฿0.45 = ~฿4.5M/day notional. Very thin.
Anything more specific would be fabrication.
4. Mean reversion vs trend¶
On 56 observations only — statistical power is low.
| Test | Value | Interpretation |
|---|---|---|
| Hurst exponent (R/S, 60d) | ≈ 0.35–0.45 (rough) | Slight mean-reverting bias, but indistinguishable from 0.5 at n=56 |
| Variance ratio VR(5)/VR(10) | ≈ 0.7–0.9 (rough) | Consistent with mean-reversion / tick-noise dominance |
| Pinning behaviour | strong (10 consecutive 0.44 closes May 11–22) | Liquidity-starved, not trending |
Implication: at this price/liquidity, the name behaves as a tick-bounded random walk with episodic gaps. Trend-following models will be whipsawed by the ฿0.01 grid. Mean-reversion anchor likely the most useful within the visible range — but the anchor for a 2-year horizon is unknown without the full 10y series.
5. Drawdown profile¶
60-day window only: - Max DD: −12.2% (peak 0.49 on 03-25 → trough 0.43 on 04-20) - Recovery: partial — never reclaimed 0.49 high - Number of −5%+ drawdowns: 2 - Mean recovery time: not estimable from window
10y max DD: audit flagged the −90.8% summary figure as plausible directionally for a Thai penny-stock that restructured in 2021, but unreconcilable with the published total-return number. Treat as unverified but directionally consistent with a name trading at ฿0.45.
6. 2-year forecast — model comparison¶
Inputs used: S₀ = ฿0.45; σ_ann = 38% (60d, upper bound); μ_ann = 0% (60d drift unreliable, set to risk-neutral assumption given absent fundamentals); mean-reversion anchor = ฿0.46 (60d mean close). Naive EPS×P/E model cannot be run — no EPS data.
| Model | 12m point | 12m 90% CI | 24m point | 24m 90% CI |
|---|---|---|---|---|
| GBM (μ=0, σ=38%) | ฿0.45 | [฿0.24, ฿0.84] | ฿0.45 | [฿0.18, ฿1.13] |
| GBM (μ=−10%, σ=38%) | ฿0.41 | [฿0.22, ฿0.76] | ฿0.37 | [฿0.15, ฿0.93] |
| Mean reversion (anchor ฿0.46, half-life 60d) | ฿0.46 | [฿0.32, ฿0.66] | ฿0.46 | [฿0.28, ฿0.75] |
| Multi-factor regression | N/A | — | N/A | — |
| Naive EPS × P/E | N/A | — | N/A | — |
| Median of available | ฿0.45 | [฿0.24, ฿0.76] | ฿0.43 | [฿0.18, ฿0.93] |
Caveats baked in: - GBM ignores fat tails; on a name with a −90.8% historical drawdown (audit-flagged), the left tail is wider than lognormal by 1.5–2×. - Mean-reversion anchor is from 60 days, not the 5-year valuation average normally used — it is short-window and unstable. - All CIs ignore delisting/restructuring jump risk, which for a sub-฿1 Thai holding company is non-trivial. - Tick discretisation (฿0.01 ≈ 2.2%) creates a hard lower resolution; CIs below ฿0.20 imply the stock would also clear a separate SET penny-stock review threshold.
7. Where models disagree and why¶
| Pair | Disagreement | Source |
|---|---|---|
| GBM(μ=0) vs MR | GBM 24m CI [0.18, 1.13] is 3.6× wider than MR [0.28, 0.75] | GBM lets variance compound; MR damps it. The truth depends on whether ฿0.45 is "fair" or just where the order book happens to sit. |
| GBM(μ=0) vs GBM(μ=−10%) | 24m point: ฿0.45 vs ฿0.37 | 60d realised drift is −23% ann.; using it gives a much darker path. We don't trust 60d drift estimation, so we publish both. |
| Mean-reversion anchor | ฿0.46 (60d) vs unknown 5y/10y anchor | Without the full 10y series in-package we cannot test whether ฿0.45 is below, at, or above the long-run mean. |
Bottom line of disagreement: the spread between ฿0.18 and ฿1.13 at 24m is not analytical uncertainty — it is data uncertainty. With proper benchmark series and fundamentals, this CI should compress materially.
8. Confidence: LOW¶
What this analysis CAN say¶
- XPG trades at ฿0.43–0.49 on thin volume (~฿4–5M/day notional).
- Within the 60-day window, σ_ann ≈ 38% (upper bound — inflated by ฿0.01 tick noise).
- Price behaviour is tick-bounded random walk with episodic volume gaps (e.g., 2026-05-25), not trending.
- A symmetric 24-month GBM cone implies roughly ฿0.18–฿1.13 at 90% confidence; mean-reversion suggests ฿0.28–฿0.75.
What this analysis CANNOT say (and why)¶
- No beta, no factor exposures — benchmark and macro series absent from package.
- No multi-factor or fundamentals-based forecast — financial statements absent (SET shareholders/filings pages returned 404; financial page body not extracted).
- No regime identification beyond 60 days — full 10y CSV referenced but not delivered in package body.
- No reliable long-run drift — the 10y summary row is mathematically broken (audit-confirmed) and must be discarded.
- Tail risk likely understated — restructured 2021, audit-flagged −90.8% historic DD, sub-฿1 holding-co structure → real left-tail mass exceeds lognormal.
Bare-minimum data needed to upgrade confidence to Medium¶
- Full 10y daily CSV (rows, not just summary) for clean σ, skew, kurtosis, Hurst, VR tests.
- SET TRI daily series → β, R², residual vol.
- Latest BVPS / NAV per share (this is a holding co; the only honest valuation anchor is NAV).
- Shares outstanding + free float → liquidity-adjusted CI.
- Restructuring date + any share consolidation/dilution events → adjusted-series sanity check.
Until then, treat the median point estimate of ฿0.45 (12m) / ฿0.43 (24m) as "no information" — equivalent to spot — with a very wide cone.