Data stored in Cloudflare KV — auto-syncs across all devices
💡 Export XLSX regularly for personal backup
🆕 Empty database
This account has no schema-v2 data yet. Initializing seeds your 9 known funds
(PVD, TLWORLD-X, TLWORLDRMF, TLMMRMF, SGOV, DIME FCD, SCBGOLDE, ONE-GOLD-X-UX, BTC) —
no snapshots or transactions, those you re-enter yourself.
If you have old data, export an XLSX backup from it first — this does not touch
or delete that data (it lives under separate keys), but you won't see it here anymore.
—Portfolio history (snapshots)
—Transactions
—Last updated
📊 Manage Funds
Toggle a builtin fund off to hide its input from the snapshot form (historical data is kept).
Custom funds are tracked by value only — perfect for new RMFs, ETFs, crypto, etc.
🗂️ Manage Asset Classes
Core classes count toward the retirement checkpoint (equity/cash/gold by default). Satellite
classes (Crypto by default) are tracked separately, excluded from the ฿53.3M trajectory — a
capped-loss sleeve, not part of the compounding math. At least one Core class is required.
📚 Instructions & Schema
XLSX file structure (schema v2) — key sheets:
Sheet: Funds — the fund registry (Id, Label, Type, Color, HasUnits, Currency,
Section, ClassId, Active, Order, PriceSourceKind, PriceSourceRef). REPLACES the current registry on import.
Sheet: Asset_Classes — (Id, Label, Color, Target, Order, Sleeve). REPLACES on
import. Sleeve = core (counts toward the retirement checkpoint) or sat
(tracked separately — the Satellite card, excluded from the ฿53.3M trajectory). A file exported
before this column existed has no Sleeve values; on import Crypto is re-derived as sat and
everything else as core (same self-heal a first load after upgrading applies).
Sheet: Snapshots — Date, USD_THB, Contribution, Notes, then a
<fundId> / <fundId>_units / <fundId>_cost triple per fund
(columns are generated from the Funds sheet in the same file). Merged by date.
Sheet: Transactions — Date, FundId, Type, Units, CostPerUnit, Fx, Amount, Note, Timestamp. Fx (USD/THB) is set only for USD-denominated funds (e.g. SGOV) — CostPerUnit is in the fund's native currency, Amount is always THB.
Type = buy / sell / div. Merged by timestamp.
A file with no Funds sheet is a pre-v2 export and can't be imported here.
Retirement Portfolio · Updated —
Portfolio Value
฿—
—
Portfolio NAV
—
—
🛰️ Satellite ฿0
TWR
—
Time-Weighted
MWR / IRR
—
Money-Weighted
Gain / Loss
—
Total invested —
Portfolio vs Target
—
Total / ฿53.3M (age 60)
Portfolio Value
— Current Value— Cumulative Cost
📈 Portfolio vs Target Checkpoint
⚡ Comparing whole portfolio (equity + bond + cash) against checkpoint
Asset Allocation
100%
Fund Details
Fund
Value
Units
NAV
Cost
Gain/Loss
Type
🛰️ Satellite
Tracked, but excluded from the retirement checkpoint — a capped-loss sleeve, not part of the ฿53.3M trajectory
Fund
Value
Units
Cost
Gain/Loss
Satellite total: ฿0
🎮 Portfolio Checkpoints
🥚
タマゴ
Egg
☆☆☆☆☆
財の種、まだ眠る...
Next Checkpoint (Total)
—
—
—%
Reached
📸 Save Portfolio Snapshot
Enter only current prices/NAV — units and cost basis derived from Transactions