3.4 KiB
3.4 KiB
2026-08-25 — Multi-theme platform + Capital simulation
Scope
Took the single-theme tourism demo and built a full multi-theme SET50 research platform with capital-allocation simulation, all in Thai UI, on real Thai data.
Milestones (all verified + pushed)
| # | Commit | Milestone | Status | Last verified |
|---|---|---|---|---|
| 1 | f6dd630 |
Auto Credit (TradingEconomics) + EIA collectors | complete | live fetch |
| 2 | 2fa8055,fdfd832 |
BOT regional consumption (north; NE = 0.0 placeholder disabled) | complete | live (idx 100.3) |
| 3 | 674dcfd |
Scope: national-only Thai factors; cancel DLT province scraping | complete | docs |
| 4 | 3f7fccd |
Thai Energy (TOP) collector replacing EIA US proxy | complete | live (Q2/2026 net 19,481) |
| 5 | affc29a |
theme registry + scoring engine (60 theme / 40 Siamchart) | complete | tests |
| 6 | 63058ec |
daily cache (fetch-once/day, stale fallback, atomic) | complete | tests |
| 7 | 7643764 |
GET /api/v1/themes combined board (3 themes + frequency) | complete | live HTTP 200 |
| 8 | 90e63e3 |
frontend Thai theme panel (3 cards + signals) | complete | browser |
| 9 | 2caf814 |
Localize dashboard to Thai; fix fixture-badge honesty | complete | browser |
| 10 | c3a1461 |
capital allocation engine + MT5 bridge | complete | tests + live |
| 11 | aae1d13 |
Fix bucket3 rank by dividend yield (ignore score) | complete | review passed |
| 12 | e24023c |
Thai Simulation UI; remove legacy Paper ledger section | complete | browser |
Key decisions
- Factors must be Thailand-specific (auto = Thai car sales, energy = TOP Thai refinery, NOT US EIA/Gulf crack spread).
- Regional = national ภาพรวมไทย only — no province/region-level scraping.
- Frequency matters: tourism/auto = monthly, energy = quarterly, Siamchart = annual. Don't mix different-cadence factors as same-timestamp.
- Simulation buckets (user-confirmed): b1 50% score+dividend · b2 20% score no dividend · b3 30% highest dividend yield (ignore score, exclude b1) · min 100 shares · cash fallback.
- Paper ledger replaced by simulation (backtest + forward test share one engine; forward may optionally dispatch MT5, live gated).
Verified (evidence)
- Full backend suite: 185 tests OK
- Live HTTP:
/api/v1/themes200 (3 Thai themes),/api/v1/simulation200 (1,000,000 → buckets; b1 AOT/MINT/AWC, b3 CRC after yield fix) - Independent reviews:
deleg_1682c760(found bucket3-by-score blocker) → fixed →deleg_43b165e0passed=true (no security/logic errors) git diff --checkclean, static secret scan clean, compileall ok
Risks / remaining work
- Price universe = 8 symbols (Yahoo snapshot); full SET50 needs extending the price collector.
bot_regionalonly north enabled (NE=955 is a 0.0 BE-2570 placeholder).- BOT portal API (
portal.api.bot.or.th) requires auth — JSON alternative future. - MT5 live dispatch is interface-only (dry-run); needs MT5_SEND_ORDERS=1 + config.
- M2.9 legacy work (prices.py, research.py, event_study.py, vintages.py, etc.) is still uncommitted/dirty — separate, unrelated to this session, untouched.
Next action
Extend price-history collection to the full SET50 universe so simulation can
allocate across all names (currently limited to the 8 symbols that have Yahoo
history in backend/data/prices/snapshots/).