Dashboard
Your complete financial picture —
FX updated:
—
Total Portfolio
$0
HK$0
Investments + Cash
Monthly Income
$0
HK$0
Divs + Interest
Monthly Expenses
$0
HK$0
Mortgage + Bills
Net Monthly
$0
HK$0
Income − Expenses
Avg Portfolio P/E
—
Weighted avg
Annual Yield
—
On invested capital
12-Month Cash Flow Forecast (USD)
Portfolio Allocation
Monthly Income Breakdown (USD equiv.)
Monthly Expense Breakdown (USD equiv.)
Cash Flow
Projected monthly cash flow — all figures converted to USD and HKD
Projected Div Income
$0
HK$0
CD / Savings Interest
$0
HK$0
Total Monthly Outflow
$0
HK$0
Annual Net Surplus
$0
HK$0
12-Month Forecast (USD equiv.)
Income Sources
| Source | Type | Native CCY | Monthly (USD) | Monthly (HKD) | Annual (USD) |
|---|---|---|---|---|---|
| No income sources yet | |||||
Brokerage Accounts
Import or manually enter holdings — prices/dividends in any currency
Robinhood CSV: App → Account → Statements & History → Export. Columns: Symbol, Quantity, Average Cost, Current Price. Currency defaults to USD unless a Currency column is present.
Drop Robinhood CSV here
or click to browse · .csv files accepted
IBKR CSV: Flex Web Service → Activity Statement → Positions. Columns: Symbol, Quantity, CostBasis, ClosePrice, AssetClass, Sector, Currency, Country.
Drop IBKR CSV here
or click to browse · .csv files accepted
Add Holding Manually
All Holdings (0) — values shown in native CCY + USD equiv.
| Symbol | Name | Qty | Cost | Price | CCY | Value (USD) | G/L | Div/Yr (USD) | P/E | Sector | Geo | Acct | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| No holdings yet — import a CSV or add manually | |||||||||||||
Portfolio Analysis
All values converted to USD equivalent using current FX rates
Total Invested
$0
Market Value
$0
Total G/L
$0
Weighted P/E
—
Annual Dividends (USD)
$0
Div Yield
—
By Sector
By Geography
By Currency
Top Holdings by Value (USD equiv.)
Bank Accounts
Cash accounts and Certificates of Deposit — any currency
Add Bank Account
Add Certificate of Deposit
Bank Accounts
| Name | Type | CCY | Balance | Balance (USD) | APY | Monthly Int. (USD) | |
|---|---|---|---|---|---|---|---|
| No accounts added | |||||||
Certificates of Deposit
| Name | CCY | Principal | Princ. (USD) | APY | Maturity | Monthly Int. (USD) | |
|---|---|---|---|---|---|---|---|
| No CDs added | |||||||
Total Cash (USD)
$0
Total Cash (HKD)
HK$0
Total CD Value (USD)
$0
Monthly Int. (USD)
$0
Monthly Int. (HKD)
HK$0
Mortgage
Track your home loan — enter amounts in the property's local currency
Mortgage Details
Payment Breakdown
Monthly P&I (native)
—
— USD
Monthly Interest
—
— USD
Monthly Principal
—
— USD
Total Monthly PITI
—
— USD
LTV Ratio
—
Equity (USD equiv.)
—
Amortization — Principal vs Interest over remaining term
Utilities & Subscriptions
Monthly recurring expenses — enter in whichever currency you pay
Add Expense
Expense Summary (USD equiv.)
All Expenses
Monthly (USD): $0
Monthly (HKD): HK$0
Annual (USD): $0
| Name | Category | CCY | Native/mo | USD/mo | HKD/mo | Annual (USD) | Cycle | |
|---|---|---|---|---|---|---|---|---|
| No expenses added | ||||||||
FX Rates
Set exchange rates vs USD. All conversions use these rates across the dashboard.
Note: Rates below are defaults. Click ↻ Fetch Live Rates to attempt to load current rates from a public API, or edit any rate manually. All rates are expressed as units of foreign currency per 1 USD.
Exchange Rates (per 1 USD)
Quick Reference — HKD Conversions
| Currency | Rate vs USD | HKD per 1 unit | USD per 1 unit |
|---|
API Connections
Link brokerage accounts for automatic position sync
Note: API keys are stored only in your browser's localStorage and never sent anywhere except the broker's own endpoints.
Robinhood
OAuth via unofficial community API — no official public API exists
Not connected
⚠ Important: Robinhood has no official API. Use CSV export for reliable sync. Third-party API access may violate ToS.
Interactive Brokers
IBKR Client Portal API (OAuth 2.0)
Not connected
IBKR Setup: Download and run the Client Portal Gateway locally, then connect here.
Auto-Sync Settings
Backup & Sync
Export your data as a backup file, or restore from one. Google Sheets sync below (for later).
Export / Import — Local Backup
Recommended for now: Export downloads all your data as a single backup file. Import restores it on any device. Move the file between your laptop and iPhone via AirDrop, email, or iCloud.
Export includes: holdings, bank accounts, CDs, mortgage, utilities/subscriptions, and FX rates.
The backup is a .json file — keep it somewhere safe as your master copy.
The backup is a .json file — keep it somewhere safe as your master copy.
Google Sheets Sync — set up later
Secure two-way sync via Cloudflare Worker — credentials never leave Cloudflare
How it works: Your Cloudflare Worker holds all Google credentials securely. The dashboard only talks to the Worker URL — no API keys or private keys are ever stored in the browser.
Connection Settings
Your Cloudflare Worker URL — from Workers dashboard after deployment
Status: not configured — enter Worker URL above
Setup Guide
STEP 1 — Google Sheet
Go to sheets.google.com → create a new blank spreadsheet → name it "My Dashboard" → copy the Sheet ID from the URL
Go to sheets.google.com → create a new blank spreadsheet → name it "My Dashboard" → copy the Sheet ID from the URL
STEP 2 — Service Account
Go to console.cloud.google.com → new project → enable Google Sheets API → IAM & Admin → Service Accounts → Create → name it "dashboard-sync" → Keys → Add Key → JSON → download
Go to console.cloud.google.com → new project → enable Google Sheets API → IAM & Admin → Service Accounts → Create → name it "dashboard-sync" → Keys → Add Key → JSON → download
STEP 3 — Share Sheet
In your Google Sheet → Share → add the service account email (from the JSON file) → give it Editor access. Do NOT set "Anyone with link"
In your Google Sheet → Share → add the service account email (from the JSON file) → give it Editor access. Do NOT set "Anyone with link"
STEP 4 — Deploy Worker
In Cloudflare → Workers & Pages → Create → Worker → paste the worker.js code → Deploy
In Cloudflare → Workers & Pages → Create → Worker → paste the worker.js code → Deploy
STEP 5 — Set Worker Variables
Worker → Settings → Variables → add: GOOGLE_SERVICE_ACCOUNT_EMAIL, GOOGLE_PRIVATE_KEY, SHEET_ID, ALLOWED_ORIGIN (your pages.dev URL)
Worker → Settings → Variables → add: GOOGLE_SERVICE_ACCOUNT_EMAIL, GOOGLE_PRIVATE_KEY, SHEET_ID, ALLOWED_ORIGIN (your pages.dev URL)
STEP 6 — Connect
Paste your Worker URL above → Save & Connect → Test Connection → Sync Now
Paste your Worker URL above → Save & Connect → Test Connection → Sync Now
Sync Log
No sync activity yet