No history data yet. Click "Refresh Now" to run your first scrape.
Daily Activity, Last 365 Days
LessMore
Loading…
Top 10 Most Valuable Cards
No valued cards yet. Run a scrape to populate values.
Hot Movers
Top Gainers
No gainers in this window.
Top Losers
No losers in this window.
Alerts
Get told when one of your cards crosses a price or moves sharply. Checked after each scrape; fired alerts show here and in the Telegram daily summary.
Fired
Loading…
Your Alerts
Add card from PriceCharting / SportsCardsPro
Paste a /offer/<id> URL from your PC or SCP collection page.
Use this for cards graded by services not on Collectors (TAG, BGS, CGC, etc.).
We'll pull the card name, grade, value, "If Graded" tiles, and recent sales in one shot.
Card
Grade
Estimate
Trend
My Cost
Gain/Loss
24h Change
Velocity
No data yet. Click "Refresh Now" to scrape your collection.
Card
Grade
Removed
Reason
My Cost
Sold For / Last Known
Realized Gain
Loading…
Allocation Breakdown
Every active card in your collection that has a current value. Cards without a cost basis are included.
Bucket
Items
Value
Loading…
P&L Deep Dive
Paper Gains on cards you still own. Value = current CL / PSA / PC estimate.
Overall ROI
--
--
Winners / Losers
--
of -- priced cards
Best Source ROI
--
--
By Source (Where You Find the Deals)
Among cards with a recorded cost basis only — ROI math needs both buy and sell prices. The Allocation Breakdown above includes all cards.
Source
Cards
Total Cost
Total Value
Gain / Loss
ROI
Loading…
Per-Card Unrealized ROI
Card
Source
Cost
Value
Gain / Loss
ROI
Loading…
Sold Cards
0
with sale price entered
Realized Gain
--
--
Realized ROI
--
across sold cards
Total Proceeds
--
sum of sale prices
By Platform (Where You Sold)
Platform
Cards
Total Cost
Proceeds
Realized Gain
ROI
By Source (Which Acquisition Channels Paid Off)
Source
Cards
Total Cost
Proceeds
Realized Gain
ROI
No sold cards yet
Per-Card Realized ROI
Card
Source
Platform
Sale Date
Cost
Sold For
Realized Gain
ROI
No sold cards yet. Categorize a removed card with reason "Sold" and enter a sale price to see it here.
Grading ROI
For each PSA 8/9 card OR raw card with PC "If Graded" tile data, projected value at PSA 10 minus grading fee.
Grading outcome not guaranteed — PSA may grade lower than the target. The Target-Share column is the target grade's share of the recorded population at the target and the grade below — not your card's chance of getting the target. Already-graded cards more than 2 grades below the target are excluded — they have no realistic path. Raw (Ungraded) cards always included.
Regrade candidates
Card
Grade
Current Value
PSA 10 Tile
Net Uplift
ROI on Fee
Target-Share
Total Pop
10÷9
Gem Rate
Loading…
Sell Advisor
Recommended list price = median of recent comparable sales (last 90 days). Profit = sale median × (1 − fee %) − cost.
Trend compares last 30 days vs prior 30-90 days. Sales count and last-sold date hint at liquidity — a card with 1 sale 80 days ago is shakier than one with 12 sales last week.
Sell candidates
Card
Grade
Cost
Sale Median
Profit
Trend
Sales
Last Sold
Loading…
Population Census
For each card in your collection with PSA pop data, see how many exist at a given grade. Pick a grade to see all cards' pop at that tier (lets you answer "of my whole collection, which would be rarest if it were a PSA 10?"). Pick Own Grade to show each card's pop at the grade it's already at, grouped by tier descending.
Loading…
Card
Grade
Pop at PSA 10
Total Pop
Value
Loading…
Pop data refreshes on every Full scrape via PSA's pop report. Some cards may show 0 at their own grade if PSA's pop hasn't been updated since the card was graded.
Portfolio Risk
Volatility, drawdown, and return for the whole collection and per card. Advisory heuristics — values are daily scrape snapshots (illiquid, and flat between repricings), so read volatility as a relative signal, not finance-grade risk.
Loading…
Per-Card Risk
Card
Grade
Volatility
Max Drawdown
Period Return
Value
Loading…
Needs ≥6 dated value points per card; thinner-history cards are omitted. Window = trailing 30 / 90 / 365 days of scraped values. Annualized volatility assumes ~daily sampling.
Liquidity
How easily each holding converts to cash near fair value, inferred from recorded sales — sale frequency, recency, and price consistency. Advisory heuristic: a card with no scraped sales scores low for lack of evidence, not proven illiquidity. Window = trailing 12 months.
Loading…
Per-Card Liquidity
Card
Grade
Liquidity
Sales/mo
Est. Days to Sell
Value
Loading…
Score = 0.45·sale-frequency + 0.20·12-mo depth + 0.20·recency + 0.15·price-consistency. "Est. Days to Sell" ≈ 30 ÷ sales-per-month. Cards with no recorded sales show as "No Data". Tune the weights in src/lib/liquidity-stats.js.
Hold vs Sell
A per-card Hold / Trim / Sell / Watch lean from price momentum, demand trend, your profit position, and how easily the card sells. Advisory only — it pairs with the Sell Advisor (which gives the list price) and doesn't know your taxes, conviction, or grading plans. Watch = too few recent sales to call. Hover a signal for the reasons.
Loading…
Per-Card Signal
Card
Grade
Signal
30d Momentum
Unrealized
Liquidity
Value
Loading…
Signal = a 0–100 pressure score from price momentum + demand trend + profit position + liquidity, bucketed Sell ≥68 / Trim ≥58 / Hold below; Watch when <3 recent comps. A full Sell also needs a real measured decline (≤−8%). Pairs with — never overrides — the Sell Advisor. Tune the model in src/lib/hold-sell-stats.js.
Scenario
Scenario projections are advisory heuristics, not financial advice. They model hypothetical price moves over your current marked values — not a forecast of actual prices.
Segment Shock Sensitivity
Model a hypothetical market move by segment — "Pokemon −20%", "PSA 10 +15%". Shocks stack multiplicatively (a Pokemon PSA 10 hit by both = ×0.92), and the result is your hypothetical portfolio value, not a prediction.
Loading…
Top Movers
Card
Grade
Sport
Current
Shocked
Δ $
Δ %
Add a shock to see the impact.
Shocks apply to each card's current marked value (CL / PSA / PC / manual). A card matched by several shocks gets the product of their multipliers. Hypothetical only — pairs with, never replaces, the per-card forecast. Engine: public/js/scenario-shocks.js.
Liquidation Modeling
Model selling a basket of cards: gross → fees → net cash, plus realized P&L vs your cost basis and a liquidity-realism read. Fees ignore taxes and listing effort — it's an advisory estimate, not a guaranteed payout.
Basket
Fees
Loading…
Basket
Card
Grade
Value
Your Cost
Gain
Liquidity
Days to Sell
Net Share
Pick a basket to model a sale.
Net = gross − (platform % + per-card shipping). Realized P&L is computed only over the cards in the basket that have a cost basis. "Days to Sell" is a per-card estimate (selling many at once may take longer). Engine: public/js/scenario-liquidation.js.
Portfolio Value Projection
A Monte Carlo cone of where your portfolio's value could land, bootstrapped from its recent daily moves. It's a hypothetical range from past volatility — not a forecast of actual prices, and the downside only reflects the co-movements seen in the last ~90 days (a broad market crash where everything falls together isn't in this history).
Reconstructs the active-collection daily NAV from per-card history (intentionally differs from the Dashboard total, which includes removed cards), then runs the same Monte Carlo bootstrap as the per-card forecast. Capped at 90 days — a 1-year projection from 90 days of data is statistically meaningless. Engine: public/js/scenario-portfolio-mc.js.
Concentration & Diversification
How concentrated is your collection's value, and what would diversify it? The effective number of holdings is how many equal-sized positions your value is as concentrated as — fewer than your card count means a handful of cards dominate.
What if I trim my top
Loading…
Largest Positions
#
Card
Grade
Sport
Value
% of Value
Cumulative
Loading…
Effective holdings = 1 / HHI (the Herfindahl index, Σ of squared value-shares). Top-N share = the % of value in your biggest cards. "Trim my top N" recomputes over the collection minus those positions — a diversification what-if, not a P&L estimate. Engine: public/js/scenario-concentration.js.
Engine Track Record
Backtested against your own history — every signal is recomputed as of a past
date from the sales on record before it (including sales the app only learned
about later), and graded on what the card's value actually did next.
Descriptive, not a guarantee — windows overlap and one market
regime can dominate.
Loading…
Market Indexes
How prices moved in each part of your collection, with buying and selling taken out. Every line starts at 100 on the first day of the range: 110 means those cards are worth 10% more than they were then. Only cards you held on both days of each step count, so adding or selling a card never moves a line.
Compare Cards
Pick up to 5 of your cards to see which grew fastest. Each line starts at 100 on its first day in the range above.
Movers
Best/Worst Performers across the chosen window. Period Change = current value − value at start of window. Total Gain = current value − cost basis (cards without cost are omitted from this column).
Movers
Card
Grade
Sport
Cost
Current Value
$ Change
% Change
Total Gain
Loading…
Type:
Grade:
Status:
Card:
Loading…
Loading active listings…
Page 1 of 1
Loading…
Loading activity…
Paste a CardLadder (app.cardladder.com/search?cert=...), PriceCharting (pricecharting.com/offer/...), or SportsCardsPro (sportscardspro.com/offer/...) URL to start tracking sales for a card you're considering buying. For PriceCharting/SportsCardsPro, click a grade tab (e.g. PSA 10 Sold Listings) and copy that URL — the #completed-auctions-… suffix is preserved so only that grade's sales are tracked.
Item
Source
Grade
Est. Value (median recent sales)
Trend
7d
30d
Loading watchlist…
Scheduled Scrapes
Automatically run Full scrapes at set times. Windows wakes the PC when needed and runs the scrape independently of the dashboard. After a wake-triggered scrape, the PC can return to sleep if you have been idle long enough. If a slot is missed while the PC is off, the dashboard can run a catch-up after you return.
Current status
Loading…
Auto-start setup
Run this one-time setup from a PowerShell window in the project folder to install the Windows tasks and enable wake timers. Scheduled Full scrapes then run even when the dashboard is closed:
node scripts/install-autostart.js
Setup installs separate dashboard-login, scheduled-scrape and backup tasks. After setup, Save above automatically synchronizes the Full scrape times and enabled state with Windows and verifies the result. Re-run setup only if the wake task is missing or needs repair.
Off-site backup
Daily compressed (Brotli) snapshots of data/psa-scraper.db, plus your centering and custom card photos, pushed to the private collection-site-backup repo on GitHub. The last 7 days are kept on GitHub and 14 days on this PC. Runs automatically at 17:30 (local time) via Windows Task Scheduler; manual trigger below for off-cycle backups (useful before turning off the PC).
Loading…
PSA Sales Refresh
PSA auction-price data for the if-graded tiles and your cards' own-grade sales. Runs as one small, capped job right after a Full scrape finishes — never alongside one. Each run is listed below with the cards it covered; per-run log files are in logs/apr-runs/.
Loading…
Telegram Notifications
Choose which messages the bot sends. Messages that need you and the once-a-day summary are on by default; the other status updates are off, and everything they report is still on the dashboard. Replies to your own bot commands always come through.
Loading…
Display v5.0.23+
Visual density of tables, lists, and cards across the app. Stored in your browser's localStorage only — doesn't sync to the mirror or other devices.
Display density
Comfortable matches the original spacing. Compact fits ~50% more rows per screen — useful when scanning 200+ cards. Spacious adds more breathing room for cleaner-looking screens or presentations.
Preferences
Personal defaults for the Forecast view. Set once on the desktop; the read-only mirror picks them up on the next publish, so phone access shows the same values.
v5.2.5 cleanup: Grading ROI / Sell Advisor / Discounted Listings preferences moved to live in-tab — adjust them directly on each tab and they persist automatically. The duplicate controls here were silently out-of-sync depending on which surface was last edited.
Read-only on the mirror — edit your preferences on the home server. Changes appear here after the next publish.
Price Forecast
Default horizon chip selected when you click the Forecast view on a card's value chart.