Holdings
Charge is treated as included in the amount (same as your Excel): Net = Amount ÷ (1 + charge%). Leave unit price blank to use the NAV on that date from price history.
Value vs. capital invested
Recovery & averaging calculator
Average down to a target cost
What-if NAV
All funds for this client
Collects the testator's instructions and an inventory of assets from the uploaded statements, then produces a summary PDF for the lawyer or trust company to draft the will.
Fund performance calculator
Key in the fund, each investment amount, sales charge % and unit price – everything else is calculated like the Excel sheet. Leave the unit price empty to use the daily price on that date (if on file).
| # | Date of investment | Investment amount (RM) | Charges % | Amount charges | Net amount | Unit price | Units |
|---|
Backtest an investment plan
Lump sum investments
Value of the plan
Investment schedule
Each debit / lump sum buys units at the fund's NAV on that date (or the next business day's NAV).
Calendar-year returns (NAV)
Period returns
Backtests use the NAV history stored in this app. Past performance is not a reliable indicator of future returns; distributions are included only if the NAV history is distribution-adjusted.
Daily prices
Paste daily price list
Open FIMM daily price or AHAM daily fund price, select all (Ctrl+A), copy and paste here. Each line "FUND NAME 1.2345" is detected.
Import price history (CSV)
Format A: date,price for the selected fund. Format B: date,fund name,price. Dates as YYYY-MM-DD or DD/MM/YYYY.
Add / edit fund
Upload AHAM statements
AHAM One Look / Investment Overview → unit trust holdings valued at the latest NAV. Bank savings, fixed deposit, ASNB (ASB/ASB2) and EPF statements → the client's net worth for Financial Planning.
Automatic daily prices
Your browser is not allowed to read the AHAM/FIMM websites directly, so the app needs a small free "price service" on your Cloudflare account to fetch the daily NAVs for it (one-time, about 2 minutes):
- Cloudflare dashboard → Workers & Pages → Create → Start with Hello World! → name it e.g.
ut-prices→ Deploy. - Edit code → delete everything → paste the contents of
price-worker.js→ Deploy. - Copy its link (e.g.
https://ut-prices.yourname.workers.dev), paste below, press Save, then Test.
Keep price history (needed for backtests) – one-time, 3 minutes
- Cloudflare → Storage & Databases → KV → Create → name it
PRICES. - Open your
ut-pricesworker → Settings → Bindings → Add → KV namespace → Variable namePRICES, namespacePRICES→ Save. - Same worker → Settings → Trigger events → Add → Cron trigger →
30 1,11 * * *(9:30am & 7:30pm Malaysia) → Add. - Make sure the worker has the latest
price-worker.jscode, then openhttps://ut-prices…workers.dev/saveonce.
From then on the price list is stored every day, even when the app is closed, and the app loads the stored days automatically.
Branding
Clients
Backup & transfer
All data stays on this device. Export a backup file to move it to another device or hand a client their own file.