XR
XRay My Portfolio
v2.2 · June 26, 2026
See what you really own
Drop your portfolio CSV export(s) for a complete breakdown of your true company exposure across every ETF, mutual fund, direct holding, and options position — fully offline. Supports Fidelity and Schwab; upload more than one file to combine multiple accounts or brokerages into a single view.
📂
Drop one or more CSVs here, or click to browse
Fidelity → Accounts & Trade → Portfolio → Download (CSV)  ·  Schwab → Accounts → Positions → Export
Fully offline · no API keys · no internet required
Holdings database sourced from stockanalysis.com — updated May 2026
XR
XRay My Portfolio — Compare
Portfolio Comparison
Load two CSV exports (Fidelity or Schwab — mix and match if you like) to see what changed — positions added, removed, and value shifts
Snapshot A Earlier date
📂
Drop earlier CSV
e.g. May 26, 2026
Snapshot B Later date
📂
Drop later CSV
e.g. Jun 2, 2026
XRay My Portfolio — Comparison
Portfolio Change Report
XRay My Portfolio
Accounts & holdings
# Company Sector Total exposure % of total Direct Via Funds Options (net MV) Sources
Sector allocation
Exposure by sector
Thematic allocation
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.
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 — teal means under-allocated, red means over-allocated. Preset profiles give you a starting point you can customize.
Iconic investor models
Quick shape comparison — hover or click any row/slice to link them together
Current
SectorCurrentTargetGap
Target — My Current
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 from the CSV. 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
Projects your portfolio through retirement — when the money runs out (if it does), how to withdraw across taxable / pre-tax / Roth accounts, and what that costs in tax. Compares two withdrawal strategies side by side. Federal tax only, flat 3% inflation, single-filer (one person's age/life expectancy) scope — this is a planning estimate, not tax or financial advice.
Your timeline
Additional capital — optional, e.g. inheritance, home sale, 401(k) rollover
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.
Before you retire
$/mo
$
After you retire
$/mo
$/yr
Used by the "fill bracket" strategy only
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 — top 30 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
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.
Monte Carlo simulation — 1,000 scenarios
Samples annual returns from a normal distribution to show the realistic range of outcomes — not a single line, but a probability fan. Adjust the expected return and volatility to match your assumptions.
Whose historical return/risk to simulate with
Longer basis smooths out recent volatility
%
Portfolio weighted CAGR
%
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 — estimate portfolio impact under shock scenarios
〰️ Rate Change Scenario
Slide 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 Sensitivity
Drag to set WTI crude price per barrel · Base: $92/bbl (Jun 2026) · Historical range: $10–$147 · Slider: $10–$150
$92
per barrel · base price
$10 $40 $92↑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 Sensitivity
Drag 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) Sensitivity
Slide 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) Sensitivity
Annual 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 Sensitivity
Slide 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 company
Drag 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
⚠ XRay Score is a transparent, rules-based composite — not a recommendation to buy or 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.