Loading your portfolio…
v2.3 · September 27, 2026
Portfolio insights, made clear

Discover the hidden insights in your portfolio

Upload your portfolio export(s) or PDF statement(s) to uncover your true company exposure across ETFs, mutual funds, direct holdings and options. A statement is imported only when its figures add up to the totals printed on it.

  • Opens up your funds Your ETFs and mutual funds are broken down to the companies inside them, so one holding in three funds shows up as one position.
  • Reads broker exports and statements Works with major brokerages and account types.
  • 24 analyses from one upload Concentration and overlap, stress tests, retirement and Roth projections, tax-loss harvesting, option delta — all from the same statement.
How it works
  1. 1UploadDrop your files or click to browse.
  2. 2AnalyzeFunds opened up, exposures and risks worked out.
  3. 3UnderstandSee what you really own across all your accounts.
Drag & drop one or more files here,
or click to browse
Supported file types
CSV Fidelity — Accounts & Trade → Portfolio → Download
Schwab — Accounts → Positions → Export
PDF Fidelity · Schwab · Vanguard · Robinhood · Morgan Stanley and others — the statement you download, not a scan or a photo
CSV exports and PDF statements, from most major brokerages.
STATEMENT REVIEW
Portfolio Comparison
Load two exports or statements for the same account (mix and match brokerages if you like) to see what changed — positions added, removed, and value shifts
Snapshot A Earlier date
📂
Drop earlier file
e.g. May 26, 2026
→
Snapshot B Later date
📂
Drop later file
e.g. Jun 2, 2026
Portfolio Change Report
This compares two files you supplied. Differences shown are arithmetic, not an assessment of your decisions, and nothing here is a recommendation to buy, sell or hold anything. Verify this independently before acting on a change you see here.
XRay My Portfolio
Advisor workspace

Welcome back.

Select a client or portfolio to continue, or add a new one.

  • Each client is kept
    apart from the others
  • Many clients and
    households, one login
  • Twenty-three analyses
    from one statement

Whose portfolio are you working on?

Pick a client to import a statement for them, or add a new one. Everything you enter — the portfolio, the plan, assets outside it — is kept against that client and nobody else.

Analysis, not advice. Nothing in XRay My Portfolio is a recommendation to buy, sell or hold any security, and it is not financial, investment, tax or legal advice. Figures come from public data and from assumptions you enter, and have not been audited. Privacy · Terms · How it works
Demo data — not your portfolio DEMO

Accounts & Holdings

# Company Sector Total exposure % of total Direct Via Funds Options (net MV) Sources
Sector allocation
Across every account, with fund holdings attributed to the companies inside them
Key insights
Read off the same figures as the chart
Exposure by sector
What makes up each sector — companies held directly, through funds, or whole funds placed by category
Thematic allocation
High risk / high reward growth themes
Same totals as the breakdown below — a stock like NVIDIA counts toward more than one theme, so these bars don't sum to 100% of your portfolio. Click a bar to jump to its detail below.
Key insights
What the bars add to, and what they actually cover
Exposure by theme
high risk / high reward growth themes
Semiconductors, AI infrastructure, software, biotech, crypto, and robotics tend to carry more volatility — and more upside — than the broader market. These bars overlap on purpose (a stock like NVIDIA counts toward more than one), so they won't sum to 100%.
Target allocation tracker
set your goals, see the gap in real dollars
Enter your target % for each sector. The bars show current vs target — green means under-allocated, red means over-allocated. Preset profiles give you a starting point you can customize.
Green = under-allocated Red = over-allocated
Iconic investor allocations — for comparison
Reference allocations built from public filings and published writing, for comparison only. They are not model portfolios, the investors named have not endorsed this tool or seen these figures, and matching one is not a recommendation. Verify this independently before adopting any of them as a target.
Allocation Comparison
Hover or click any row or slice to link all three together.
Current Allocation
Every holding you own — equity sectors, bonds, alternatives and real assets
Sector Allocation Comparison
Overweight vs. target Underweight vs. target On target (±0.5%)
SectorCurrentTargetGap
SectorCurrentTargetGap
Target Allocation
Your target mix
Style box
market cap × valuation
See how your portfolio's shape compares across cap size and growth/value style — independent of sector. The right column shows where your selected target model concentrates, when available.
Your portfolio
Click any cell to see holdings
Target — My Current
⚖ Rebalancing trade plan
$
Deployed first — no tax cost
Holdings ledger
all positions across all accounts
Symbol ↕ Description Type ↕ Shares ↕ Price ↕ Market Value ↕ Cost Basis ↕ Gain / Loss $ ↕ Gain / Loss % ↕ Accounts
Gain/Loss figures use your broker's reported cost basis, as printed in the file you uploaded. Where that figure is missing for a position, it is calculated instead as current value − cost basis. Positions with no cost basis at all show — for gain/loss. Options and money market excluded. Click any column header to sort.
Market benchmarks vs your portfolio
Pre-built database () · click Fetch to populate YTD and Δ 52-Wk High
Symbol ⇕ Description ⇕ Mkt Value ⇕ YTD ⇕ Δ 52-Wk High ⇕ 1 Year ↓ 3 Year ⇕ 5 Year ⇕ 10 Year ⇕ 15 Year ⇕ Type ⇕
Multi-year returns annualized · price return only (excl. dividends) · YTD, 1yr, and Δ 52-Wk High live from Finnhub once fetched · † = 1yr still showing a static estimate (unverified, click Fetch above) · * = fund's 52-Wk High estimated from its tracking ETF · 3/5/10/15yr have no free live data source and come from a hand-maintained database — treat as rough estimates, not verified figures
Pre-buy impact analysis
Add one or more positions you're considering — the tool shows you instantly how they change your portfolio before you commit any capital. No API calls needed; uses your existing data.
Tax-loss harvesting scanner
Identifies positions in taxable accounts only where you can sell at a loss to offset capital gains and up to $3,000 of ordinary income per year. IRA / Roth / 401k positions are excluded — losses inside tax-advantaged accounts cannot be harvested.
%
Ordinary income rate (losses held <1yr)
%
LTCG rate (losses held >1yr)
$
Skip positions below this loss
Roth conversion planner
Estimates how much of your pre-tax IRA/401(k) balance you could convert to Roth this year without leaving a target tax bracket — or model converting steadily over several years to shrink future RMDs. Uses federal tax brackets only (state tax isn't modeled). This is a planning estimate, not tax advice — confirm with a tax professional before converting.
$
Convert until you'd hit the next one

Retirement planner

Project your portfolio through retirement — see how long your money may last, how withdrawals may work across taxable, pre-tax and Roth accounts, and the potential tax impact.

Federal tax only3% inflationPlanning estimate
Who are you planning for?
Tell us if you are planning for yourself or for you and your spouse.
Your personal details
This helps us estimate your retirement timeline and tax considerations.
Your information
Life expectancy
Spouse’s information
Life expectancy
There is no such thing as a joint IRA — each account belongs to one of you. It matters because the withdrawals the IRS forces from 73 are worked out on each person’s own accounts at their own age, and one of you cannot take the other’s.
Your income and savings
Tell us about your current income, savings, and expected growth.
Monthly income
$ /mo
$ /mo
Gross, before tax, in today’s money. Each person’s income stops when they retire.
Monthly savings
$ /mo
Put aside from that income each month, on top of whatever the portfolio earns.
Expected annual growth rate
What your savings are assumed to earn each year until you retire. Income itself is held flat in today’s money.
Add additional capital (optional) Add expected amounts such as inheritance, home sale, 401(k) rollover, etc.
Assumes the amount is already tax-effected when it arrives (e.g. inherited assets get a stepped-up basis, sale proceeds are net) — no additional tax is applied on receipt.
Retirement income sources
Tell us about your expected Social Security, pension, and other retirement income.
Social Security
$ /mo
Spouse’s Social Security
$ /mo
Add pension or other income (optional) Company pension, annuity, or other guaranteed income.
Pension
$ /mo
Spouse’s pension
$ /mo
Goals and assumptions
Set your expected retirement spending and other key assumptions.
Retirement assumptions
$ /mo
Spending is in today’s money and inflation is added for you. The target bracket is used by the “fill bracket” strategy only, and the growth rate applies once you have retired.
Your spending plan
Change it at a given age (optional) Most plans spend more in the early years and less later, or allow for care costs at the end.
Charitable giving optimizer
Donating appreciated securities directly to a Donor-Advised Fund (DAF) or charity eliminates capital gains tax entirely AND generates a deduction for the full market value — significantly more efficient than selling first and donating cash.
% of portfolio
Adjustable — default 1%
%
For deduction value
%
20% + 3.8% NIIT
Fund overlap analysis
holdings redundancy between your funds
Overlap % = share of holdings weight that two funds have in common. Higher = more redundant. Hover any cell for shared companies.
0% no overlap50%100% identical
Correlation heatmap
your holdings
Correlations based on 2-year rolling daily returns · hover a cell for details
−1.0 perfect inverse0 uncorrelated+1.0 perfect
Portfolio growth projection
future value based on historical returns
Each position is projected using its own verified historical CAGR. The portfolio total is the weighted sum of all individual projections. Use Custom Rate to override with your own assumed growth rate. Past performance does not guarantee future results.
Based on historical performance
Weighted portfolio CAGR: —
Project forward 25 years
1yr10yr25yr50yr75yr100yr
Monthly DCA contribution
$ /month
e.g. $1,000/day = $22,000/mo
Starting value
$0
→
Projected value
$0
Total gain
+$0
0×
DCA contribution
$0
All positions — projected individual value (click any column to sort)
Symbol ↕ Description ↕ Current Value ↕ CAGR ↕ Projected Value ↕ Multiple ↕
⚠ Projections use historical CAGR compounded annually. Returns are not guaranteed. 1yr CAGR figures are highly volatile and not recommended for long-term projection. Sources: financecharts.com, averageannualreturn.com, portfolioslab — verified June 2026.
Whose historical return/risk to simulate with
Longer basis smooths out recent volatility
%
Long-run assumption
%
S&P 500 avg: ~15% · Growth-tilt: 18–22%
ⓘ How is this calculated?
$
yrs
Goal calculator
what does it take?
Enter a target and timeline. The tool works backwards across three levers — returns, savings, and time — to show exactly what each path requires. Reuses your portfolio's current CAGR and Monte Carlo volatility estimate.
$
$
%
Portfolio weighted 5yr
%
Stress test simulator
pick a scenario below to estimate the impact on your portfolio
〰️ Rate Change ScenarioSlide right for a rate hike · slide left for a rate cut · each step = 25 bps · max ±400 bps
✂️ Rate Cut
0 bps
Move the slider to set a rate change
📈 Rate Hike
−400 −200 0 +200 +400
Estimated sector impact:
🛢️ Oil Price SensitivityDrag to set WTI crude price per barrel · Base: $90/bbl (Oct 2026) · Historical range: $10–$147 · Slider: $10–$150
$90
per barrel · base price
$10 $40 $90↑base $107 $150
Historical reference prices — click to jump
💵 U.S. Dollar Index (DXY)Slide right = stronger dollar · slide left = weaker dollar · Base: 99.2 (Jun 2026) · Range: 70–130
99.2
base value · no change
70 90 99↑base 110 130
Historical reference levels — click to jump
🥇 Gold Price SensitivityDrag to set gold price per troy ounce · Base: $4,517/oz (Jun 2026) · Range: $500–$8,000
$4,517
per troy ounce · base price
$500 $2K $3.5K $4.5K↑base $6K $8K
Historical reference prices — click to jump
📊 Inflation Rate (CPI) SensitivitySlide to set annual CPI rate · Base: 3.8% (Apr 2026 — BLS) · Range: 0%–15% · Step: 0.1%
3.8%
annual CPI · base rate
0% 2% ▼
Fed target
3.8%↑
base
6% 9% 12% 15%
Historical reference levels — click to jump
🏭 Producer Price Index (PPI) SensitivityAnnual PPI rate · Base: 6.0% (Apr 2026 YoY — BLS) · Range: 0%–20% · Step: 0.1% · PPI leads CPI by ~2–3 months — a margin compression indicator
6.0%
annual PPI · base rate
0% 5% 6%↑base 10% 15% 20%
Historical reference levels — click to jump
📈 GDP Growth Rate SensitivitySlide to set annualized real GDP growth rate · Base: 1.6% (Q1 2026 — BEA) · Range: −4% to +8% · Step: 0.1%
1.6%
annualized real GDP · base rate
−4% 0% 1.6%↑base 3% +8%
Historical reference levels — click to jump
Custom scenario — set shocks per sector or companyDrag sliders to apply a % change. Positive = gain, negative = loss.
−$0
Impact breakdown by position
⚠ Estimates assume linear price movements. Options impact uses net delta × price change (first-order approximation — ignores gamma, theta, vega). Fund impacts are calculated only on tracked top holdings; actual fund NAV changes may differ. Not financial advice.
Top 20 exposures by total dollar value
Direct stock Via fund / ETF Options net MV
Spread P&L tracker
net cost, current value, and return multiple per position
Underlying ⇕ Structure ⇕ Contracts ⇕ DTE ⇕ Cost basis ⇕ Current value ⇕ P&L $ ↓ Current × ⇕ Max $ (at expiry) ⇕ Max × ⇕ % of max ⇕ Breakeven ⇕
⚠ Cost basis and P&L are computed from each leg's own broker-reported cost basis and gain/loss — not estimated. Max $ and breakeven assume the position is held to expiration and apply only to clean two-leg vertical spreads. Spreads are paired when contract counts match exactly between a long and short leg in the same underlying/expiry/type, or when the remaining legs on one side sum exactly to a single leg on the other — brokers report one row per contract, not per trade, so a strike sold as the hedge for two separate spreads shows up as one combined row; that row is split proportionally by contracts to recover each spread. Anything that still can't be paired is shown individually below instead of guessed at. Click any row to see its legs. Options parsing currently covers Fidelity exports only — Schwab option positions are detected but not yet included here.
Finnhub API Click Refresh to fetch live data
Dividend & income tracker
estimated annual income
Database vintage: · fund yields via look-through · use ↻ Refresh Live for current Finnhub data · 📦 Rebuild DB quarterly
Annual dividend income
—
fetch live data to calculate
Monthly income
—
average monthly run rate
Portfolio yield
—
weighted avg yield
Positions paying
—
of total positions
Symbol ⇕ Description ⇕ Market Value ⇕ Annual Yield % ↓ Est. Annual Income ⇕ Est. Monthly Income ⇕ Frequency ⇕
Click ⚡ Fetch Income Data to load dividend yields from Finnhub
Italic rows = fund look-through estimates (weighted avg of constituent yields). Coverage % = fraction of fund weight mapped. Stock yields live from Finnhub.
Fee drag analyzer
annual cost of fund expense ratios
Shows the annual dollar cost of expense ratios across all your fund holdings and estimates the 10-year compounded opportunity cost — what those fees could have grown to if invested instead. Direct stocks have zero expense ratio. Data pre-built; refresh annually as expense ratios change.
%
Used to compute 10yr opportunity cost
XRay Score
style-aware fundamental rating
A 0–100 composite score covering valuation, profitability, financial health, and risk — compared against peers in the same market-cap × style category, not the whole market. A high-P/E growth stock isn't automatically penalized for being growth; it's judged against other growth names, and where trailing growth data is available, valuation also factors a PEG-style check (P/E ÷ growth rate) — so a 30%-grower at a premium multiple isn't scored the same as a flat-growth stock at the same P/E. Click any row to see the four sub-scores that make up the total.
Finnhub API Fetches fundamentals (P/E, P/B, ROE, debt/equity, beta, growth) per position
Symbol ↕ Description ↕ Style Box ↕ Market Value ↕ XRay Score ↕ Rating
Click ⭐ Fetch Ratings to load fundamentals from Finnhub
⚠ The XRay Score is this tool's own arithmetic on public fundamentals, scored against approximate category benchmarks — not a rating from any agency, and not a buy, sell or hold call. A high score is not a reason to buy, and a low one is not a reason to sell. Benchmarks are derived from approximate 2026 market data by style-box category (Russell 1000 Growth/Value spreads, sector P/E surveys) and are themselves approximations, not live peer medians. Score components: Valuation 25pts · Profitability 25pts · Financial Health 25pts · Risk Profile 25pts. Funds/ETFs are scored as the weighted average of their tracked underlying holdings.