Investment-tracking apps (Personal Capital, Wealthfront, Empower, Yodlee-based apps) aggregate accounts across brokerages, banks, and retirement plans. The interview is multidisciplinary: financial-data aggregation, performance calculation, tax-aware reporting, and the security implications of holding read-only access to a user’s entire financial life.
Functional requirements
- Connect bank, brokerage, retirement, and credit card accounts. Users link accounts once and expect balances to flow in on their own. Interviewers probe how you handle the many account types — checking, a 401(k), a taxable brokerage, and a credit card each expose different fields — and what happens when a login breaks or an institution isn’t supported.
- Show net worth over time. Net worth is assets minus liabilities, snapshotted daily so you can chart a trend line. Decide how far back to backfill and how to handle gaps when an account fails to sync on a given day.
- Calculate portfolio performance (TWR, MWR). These are the return numbers users compare against benchmarks. The two methods (covered below) answer different questions, so be ready to explain which one you show by default.
- Asset allocation visualization. A breakdown of holdings by asset class, usually a pie or bar chart. Interviewers want to know how you classify each holding and keep the chart accurate as prices move during the day.
- Tax-loss harvesting suggestions. Flag positions trading below cost basis that a user could sell to offset gains. Watch the wash-sale rule — repurchasing the same or a substantially identical security within 30 days disallows the loss.
- Goal tracking (retirement, down payment). Let users set a target amount and date, then project whether current savings plus their contribution rate get there. A compound-growth projection with an assumed return is enough to discuss; call out that the assumed return is the biggest source of error.
Account aggregation
Connecting external accounts:
- Plaid (and similar): OAuth to thousands of US financial institutions. It’s the default choice for most fintech products; you get an item token per linked account and webhooks when data changes. Be ready to discuss link failures and re-authentication when a bank rotates credentials or a connection goes stale.
- Yodlee: older but broad coverage. It predates Plaid with wide institution and international reach, but the integration is heavier. Teams pick it when they need accounts Plaid doesn’t cover.
- MX: alternative aggregator. Known for data cleansing and transaction categorization, sometimes run alongside another provider so one can cover the institutions the other misses.
- Direct OAuth: for fintech-native institutions (Robinhood, Coinbase). Some modern platforms expose their own APIs, so you connect directly instead of through an aggregator. That gives fresher data but means maintaining a separate integration per institution.
Read-only access is the norm. Modifying accounts requires direct integration with each institution.
Data refresh
Most aggregators sync nightly. Real-time updates are rare for traditional accounts. Cache last-known balance with timestamp.
Performance calculation
Two ways to calculate portfolio performance:
- Time-weighted return (TWR): measures portfolio performance independent of cash flows. The standard for benchmarking.
- Money-weighted return (MWR / IRR): measures actual return to the investor. Includes timing of contributions.
Both have edge cases (deposits, withdrawals, dividends). Get the math right; users will notice errors.
Asset allocation
Map holdings to asset classes:
- US Equity (large/mid/small cap). The core of most portfolios. Split by market cap, since large caps (an S&P 500 fund like VOO) behave differently from small caps in a downturn.
- International Equity (developed/emerging). Separate developed markets (Europe, Japan) from emerging (India, Brazil); emerging carries higher volatility and currency risk, which is why users want to see it broken out.
- Bonds (gov / corporate / high-yield). Group by credit quality — Treasuries are near risk-free while high-yield trades more like equity. Duration matters too, because it drives sensitivity to interest-rate moves.
- Real estate. Usually captured through REITs held in a brokerage account. A user’s primary home is typically tracked as a separate manual asset, not as market-priced holdings.
- Cash. Checking, savings, and money-market balances. Simple to value, but easy to forget when you compute allocation percentages, which throws off the whole chart.
- Alternative. Commodities, crypto, private equity, and anything that doesn’t fit the buckets above. Classification is fuzzy, so decide how you bucket each type and stay consistent across users.
Use lookup tables for ETFs and mutual funds (Morningstar, Bloomberg). For individual stocks, use sector classifications.
Tax-aware reporting
Track:
- Cost basis per lot. Track the purchase price of each individual lot, not just an average, so a user can choose which shares to sell. Lot selection (FIFO, LIFO, specific-ID) changes the taxable gain on the same trade.
- Short-term vs long-term holding period. Gains on positions held over a year are taxed at lower long-term rates, so record the acquisition date per lot to know which side of the one-year line a sale lands on.
- Realized vs unrealized gains. Unrealized gains are paper gains on positions still held; realized gains come from actual sales and are what gets taxed. Keep them distinct in the UI so users don’t confuse the two.
- Tax-loss harvesting opportunities. Surface lots sitting at a loss that could be sold to offset realized gains, and flag the 30-day wash-sale window so a suggestion doesn’t quietly disallow the loss it was meant to capture.
This is detail-oriented work. Errors create audit risk for users.
Security
Investment apps hold sensitive data. Practices:
- Multi-factor authentication mandatory. Require a second factor on login and on sensitive actions. TOTP or push-based MFA is standard; SMS is a weaker fallback because of SIM-swap risk.
- Read-only access; never write. The app aggregates and reports but never moves money, which shrinks the blast radius if credentials leak. Say this out loud in an interview — it’s a deliberate security choice, not just a limitation.
- Tokens encrypted in HSM-backed storage. Aggregator access tokens are the keys to a user’s financial life, so store them encrypted with keys held in a hardware security module rather than in plaintext config or a regular database column.
- No PII in logs. Scrub account numbers, balances, and tokens before anything reaches a log line or error tracker. A single stack trace carrying a token is a breach.
- SOC 2 Type II audits. Expect a recurring third-party audit of your controls over a period of time; institutions and aggregators often require it before they’ll share data with you.
Mobile-specific concerns
- Biometric login (Face ID / Touch ID). Let users unlock with biometrics after the first password login, keeping the session token in the secure enclave / keystore rather than in app storage.
- Auto-lock after 5 minutes. Require re-authentication after a short idle period, and also lock when the app is backgrounded, so a phone left open doesn’t expose balances.
- Disable screenshots on sensitive screens. Block screenshots and hide balances in the app-switcher preview so financial data doesn’t leak into the OS screenshot store or recents thumbnail.
- Push notifications: balance changes, transactions, no specifics. Alert on activity but keep the actual dollar amounts out of the notification body, since lock-screen previews are visible to anyone holding the phone.
Battery and data
Investment apps are not always-on. Battery impact: minimal. Data: low — fetches happen when the app opens, not continuously.
Frequently Asked Questions
Why does my balance lag the brokerage by a day?
Aggregators sync nightly. Real-time balance requires direct integration, which most aggregators do not offer for retail users.
How does cost-basis tracking work for transferred shares?
Cost basis transfers with the shares. Aggregator provides the data when available; for older transfers, may be missing — user enters manually.
What about crypto?
Coinbase, Kraken, and major exchanges integrate via OAuth. DeFi wallets require manual import or wallet-watch addresses.
Keep sharpening your system design:
