Dashboard
Tip: har table ke kisi bhi column header par click kar ke us column se sort karein — dobara click se order ulta ho jayega (▲ / ▼ nishani header par nazar aayegi).
Concentration Alerts
Rule: warn when any single stock >15% of priced market value, or any sector >25%. Weights use current market values only. Unpriced holdings are noted separately and are never counted as zero.
Net Worth (Multi-Asset)
| Bucket | Value | Weight % |
|---|
Generic buckets only — no amounts are pre-filled and no account is assumed open. Add accounts in Assets & Net Worth.
Holdings
| Symbol | Sector | Qty | Avg Cost | Lowest Buy | Price | Market Value | Cost Basis | Unrealized P/L | Weight % |
|---|
Sector Allocation
Doughnut chart uses priced holdings only — unpriced holdings are excluded (never counted as zero), same as the table below.
| Sector | Market Value | Weight % | Share |
|---|
Holdings
| Symbol | Sector | Qty | Avg Cost | Lowest Buy | Price | Market Value | Cost Basis | Unrealized P/L | Weight % |
|---|
Holdings are calculated chronologically from purchases and sales. A sale can never take a holding below zero. Lowest Buy is the lowest purchase rate ever entered for that stock (pure rate, before brokerage/SST/levies); Avg Cost already includes charges. A stock you fully sold still shows its Lowest Buy in Stocks & Prices.
Purchases
| Date | Symbol | Qty | Rate | Brokerage | SST | Levies | Total Cost | Action |
|---|
Sales
| Date | Symbol | Qty | Rate | Brokerage | SST | Levies | Net Proceeds | Action |
|---|
Bonus Shares
| Date | Symbol | Bonus Shares | Note | Action |
|---|
Dividends
| Date | Symbol | Shares | Rate | Gross | WHT | Zakat | Net | Status | Action |
|---|
Stocks & Prices
Prices are manual in this version. Enter the price in Stocks & Prices — it keeps working in Local Mode and in Firebase Cloud Mode.
| Symbol | Sector | Price | Lowest Buy | Price Date | Active | Shariah | Action |
|---|
Sectors
| Sector | Stocks | Action |
|---|
Import & Backup
Where is my data saved?
Purchases CSV Import
Columns: Date, Symbol, Qty, Rate, Brokerage, SST, Levies, Sector. Missing stocks and sectors are auto-created. Sector goes to the stock record, not the purchase record.
Broker Statement CSV Import (with Preview)
Flexible headers: the importer detects Date, Symbol, Type (BUY/SELL), Qty, Rate, Brokerage, SST, Levies, Sector. Nothing is imported until you press Import Previewed Rows. Invalid rows are listed and skipped; sells that would oversell are listed as errors and not imported.
JSON Portfolio Backup
Export downloads a FULL backup: every table in the app (sectors, stocks — including each stock's price and price date, purchases, sales, bonus shares, dividends, corporate actions, SIP plans/log, assets, snapshots, benchmarks, screener, audit log) plus the filer setting and theme, with the export date/time and the latest price date written in the file. Restoring a new full backup or an old v1 backup both work — old backups keep your current filer/theme, missing v2 sections default to empty.
Restore first asks for confirmation, then deletes existing data in order dividends, bonus shares, sales, purchases, stocks, sectors, then inserts sectors, stocks, purchases, sales, dividends. Record IDs are stripped before insert.
Corporate Actions & Dividend Calendar
| Symbol | Type | Ex-Date | Days to Ex-Date | Rate | Book Closure | Payment Date | Status | Expected Dividend (estimate) | Action |
|---|
Expected dividend = current remaining qty × rate. This is an estimate only — it depends on your holdings on the ex-date, which may change before then.
SIP Planner
One plan is used at a time (the latest). Targets are percentages that should sum to 100%.
Targets
| Symbol | Target % | Current Weight % | Action |
|---|
Suggestions
Rules: suggestions only for underweight stocks vs target; a stock already above 15% weight, or in a sector above 25%, is skipped; overweight stocks are skipped. Suggestions sum to the monthly amount within rounding — any rounding remainder goes on the largest suggestion. Suggested shares = amount / current price; if the price is missing, the amount is shown with "Price Not Updated" and no shares. Edit quantities before applying.
Applied SIP History
| Date | Total Amount | Details |
|---|
Assets & Net Worth
Generic only: no amounts are pre-filled and nothing here assumes any account is opened. Enter only accounts you actually hold. Invested Amount is what you actually put in; if you leave it blank, the app treats it as equal to Current Value, so that account's gain shows as zero until you enter the invested amount.
| Name | Type | Invested | Current Value | Monthly Contribution | Rate % | Notes | Action |
|---|
Total Investments
Sab jagah ka total aik nazar mein — PSX stocks plus har asset account (mutual fund, bank savings, Atlas MMF, VPS, SITA/SISA, gold, cash, waghera). Click any column header to sort.
| Place | Type | Invested | Current Value | Gain / Loss | Gain % | Share of Invested |
|---|
Definitions, taake total ghalat na samjha jaye: PSX Invested sirf abhi maujood holdings ki cost hai (jo shares bech diye, wo is mein nahi — un ka realized profit/loss Dashboard par alag nazar aata hai). PSX Current Value sirf priced holdings ki hai; unpriced holdings is total se bahar hain, zero nahi. Asset accounts ke liye Invested wohi hai jo aap ne Assets & Net Worth mein Invested Amount mein likha; khaali chhora to Current Value hi Invested mana jayega. Naya mutual fund ya bank account add karna ho to Assets & Net Worth mein add karein — ye tab khud update ho jayega.
Performance History
A snapshot stores market value, cost basis, realized P/L, credited dividends and total return for today, using the same accounting as the Dashboard.
XIRR formula: find r with sum(flow_i / (1+r)^((date_i - date_0)/365)) = 0 by bisection. Cash flows: purchases negative (total cost incl. charges), sales positive (net proceeds), credited dividends positive (net), plus the final market value as a terminal flow on the last snapshot date. N/A if there are fewer than 2 dated flows, no sign change, or bisection does not converge. CAGR = (last market value / first market value)^(1/years) - 1, using snapshot dates; N/A if either value is ≤ 0 or years ≤ 0.
Snapshots
| Date | Market Value | Cost Basis | Realized P/L | Dividends (Credited) | Total Return | Action |
|---|
Benchmark Comparison
| Date | KSE-100 | KMI-30 | Action |
|---|
Comparison: portfolio % change vs benchmark % change since the first snapshot date (first vs last values in each series). Benchmark values are entered manually.
Screener
Score = 45% cheapness vs 52-week low + 30% low-P/E score + 25% momentum score. Cheapness = 1 - (price - low52)/(high52 - low52), clamped 0-1 (0 if high52 = low52). Low-P/E score = clamp(1 - PE/30, 0, 1) vs a 30x cap (negative PE scores 0). Momentum score = (clamp(momentum_1y, -1, +1) + 1)/2, where momentum_1y is a fraction (e.g. -0.55 = -55%). Stocks down >50% in 1y (momentum_1y < -0.50) are skipped: score shown as — with the reason, per the value-trap guard.
Screener CSV columns: Symbol, Price, PE, Low52, High52, Momentum1y, Shariah (TRUE/FALSE/1/0/yes/no).
| Symbol | Price | PE | Low52 | High52 | Momentum 1y | Shariah | Score |
|---|
Reports
Tax Report (Pakistan tax year, July–June)
Realized P/L per symbol counts sales whose date falls in the selected July–June year, using the same chronological WAC engine (sale proceeds net of charges minus cost basis sold at the then-current average cost). Dividend totals count dividends dated in the year.
Shariah Report
The Shariah flag must be verified in the broker app / current KMI list. This app gives no fatwa and no guarantee of compliance; a blank flag means unknown, not compliant.
Audit & Undo
Every delete writes an audit entry FIRST, before the record is removed. Restore re-inserts the deleted record from its saved old_data.
| When | Table | Record | Action | Restore |
|---|
Cloud Config — Firebase
Firebase Realtime Database se sync — koi SQL, koi table, koi library download nahi. Sirf 2 fields aur aik Sign In. Dono fields visible (type="text") hain, taake copy karna aasan ho.
Firebase Auth (zaroori)
Not signed in.
Sirf signed-in user apna data dekh/badal sakta hai — ye neeche wale Rules se pakka hota hai. Sign In ke baad app khud cloud data load kar legi, aur har change ke baad khud cloud par save kar degi.
Firebase Rules — sirf aik dafa lagani hain
Steps: 1) Firebase Console > Realtime Database > Rules tab kholen, 2) neeche Copy Rules dabayein, 3) purane rules ki jagah paste karein, 4) Publish dabayein. Ye rules har user ko sirf apna data kholne deti hain.