Main Dashboard

Finance.shrum.net
Data as of loading… · - tickers Data & API · Changelog :: [ Site ] [ Tickers ] · Email :: [ Bug / Correction ] [ Feature Request ]
All sections · Daily Heatmaps · Sector Performance · Portfolio Allocation · Tickers Table · Ticker Profile Portfolio Editor

Daily BriefHide section

Notes
The range buttons above the grid control every sparkline's timeframe at once (default 3M); the Rows checkboxes show/hide a whole row without affecting the others. Keypress+click shortcuts work on every card's own sparkline too: CTRL+click jumps every card's range to 1Y; SHIFT+click jumps to YTD; CTRL+SHIFT+click jumps to 5Y - same hint shows at the bottom of each card's own hover tooltip. A plain click keeps its existing behaviour below (opens the card's source), so there is no click shortcut for a custom start date here - use the "Start" date control above the grid for that instead. Click a card to open its source in a new tab for further evaluation - US stock indices go to that index's own official provider (S&P DJI, Nasdaq, FTSE Russell, Cboe), international indices/commodities/FX/Bitcoin/the Energy row go to Yahoo Finance, BLS releases (PPI/CPI/Unemployment/Jobs) go to bls.gov, PCE goes to bea.gov (a different agency than the BLS releases), Treasury yields go to home.treasury.gov (the original source, not FRED), and FED %/BOJ % go to FRED, since both are FRED series in this project's own backfill with no more-original public page of their own. Latest close against the prior close - like the rest of this dashboard, sourced from daily closing data, not an intraday feed, so these mini charts plot CLOSING sessions only - wide enough at the default 3M range to see a monthly step series like Jobs move across a couple of prints, not just the last one; switch to a longer range (6M+) to see more of them at once. This section re-checks for a newer value every 5 minutes while the tab is open (and immediately on returning to the tab), but what that re-check can actually FIND depends on the symbol: USD (DXY), USD/JPY, Bitcoin and every Metals/Oil & Gas row symbol trade near-24 hours a day, and an HOURLY server-side job (every day, weekends included - see _frequent_cron.sh) keeps THEIR most recent value genuinely current, not just a daily close held stale over a weekend. VIX and the five international indices are NOT part of that hourly job - each only trades its own market's hours, so they still update once per relevant session the same way every NYSE-hours symbol does, and the 5-minute client re-check just re-fetches that same value until the next session's close lands. The Energy row (CCJ/BTU/TAN/XLU/LIT) is ordinary NYSE/NASDAQ-listed stocks and ETFs, same one-close-per-session shape as VIX. PPI, CPI, Unemployment, Jobs, PCE, FED % and BOJ % are step functions, flat between monthly releases - an "Update" badge marks whichever of those just stepped to a new value within the last 3 days, so a fresh release is easy to spot without checking every card's own change line. Those seven cards' own change line is ALSO different from every other card's: it compares the current value against the PRIOR report's reading, not yesterday's - a plain day-over-day comparison would show +0.00 on every day except the exact day a release lands, since the value is flat in between. The five Treasury yields are plain daily observations, so they move every session like the market rows. CPI and FED % share the Price History chart's overlay methodology (announcement-date-shifted for CPI, see that section's hint text); PPI and PCE use the same approach with their own approximate release-day shifts (day 14 for PPI, day 28 for PCE - PCE comes from BEA, later in the month than the BLS releases). Unemployment and Jobs come from the same monthly BLS report, shifted to the FIRST FRIDAY of the following month rather than CPI's fixed day-13 rule -- an approximation of that report's actual release date, not the exact historical calendar. Jobs (NFP) is itself a signed monthly change in nonfarm payrolls (thousands), not a level - its own change line compares against the PRIOR month's change, not a day-over-day move. Because NFP is a preliminary figure that the BLS revises for the following two-plus reports as more complete survey data arrives, the daily collector re-fetches and re-patches the trailing 4 months of Jobs values every run, not just today's - so a past bar in this chart can change value after the fact, on purpose, reflecting the corrected figure. BOJ % is the Bank of Japan's overnight call rate, a realized monthly average rather than a scheduled announcement, so it's shifted to the 1st of the following month instead of a specific release date. USD/JPY is a currency quote, not a broad yen index - no daily-traded broad index exists the way DXY does for USD. The "China" card is the Hang Seng (Hong Kong), not a mainland index, and the "India" card is the Nifty 50, not the Sensex - see the Intl Mkts row's own sourcing note above for why. Oil & Gas (nat gas/WTI/Brent/RBOB/heating oil) and Energy are deliberately separate rows - Oil & Gas is extraction/refining commodity prices, Energy is power generation and the energy transition (uranium via Cameco/CCJ, coal via Peabody/BTU, solar via the Invesco Solar ETF/TAN, the grid via the Utilities Select Sector SPDR/XLU, and battery storage via the Global X Lithium ETF/LIT). CCJ, BTU and XLU are ordinary tickers already tracked in the Tickers Table with their own full history; TAN and LIT are not, and were backfilled the same way Bitcoin was.

Daily Heatmap - By IndustryHide section

✕ clear sector / industry filter
Notes
Sector blocks are sized by market cap; industry cells inside are sized by their combined market cap. Click a sector header or an industry cell to filter the Tickers Table to it. Shares the same sector/industry filter as the Tickers Table below.

Daily Heatmap - By TickersHide section

✕ clear sector / industry filter
Notes
Sector blocks and ticker tiles are sized by market cap; colour is the 1d move. Click a sector header to filter the Tickers Table to it; click a tile to select that ticker (same as clicking its Tickers Table row) - CTRL+click (CMD on a Mac) a tile for Yahoo Finance instead. Gold outlines symbols in ?portfolio= or saved on the Portfolio Editor. Shares the same sector/industry filter as the Tickers Table below.

Sector Percentage HistoryHide section

Sector Momentum % (range)
Sector Momentum % (range)
Notes
Each line is a market-cap-weighted price index for that sector (ETF excluded), chain-linked daily and normalized to 100 at the start of prices.ser's own 10-year window, then plotted here as percent change from the start of the SELECTED range - same convention Ticker Price History uses when comparing 2+ tickers. Weights use each company's CURRENT market cap applied across its whole history (no historical cap series exists in this data), and sector membership is also current, not historical - both are documented approximations, see build_sector_index.py. A ticker missing on a given session (halted, not yet listed, delisted) is simply excluded from THAT day's weighted return rather than from the sector entirely. Click a legend entry to show/hide that sector's line without affecting the others (Chart.js's own built-in toggle); the range buttons control the whole chart's timeframe, independently of Ticker Price History's own range below. Keypress+click shortcuts on the chart itself: a plain click sets the "Start" date control to that point's date; CTRL+click jumps to 1Y; SHIFT+click jumps to YTD; CTRL+SHIFT+click jumps to 5Y - same hint shows at the bottom of the chart's own hover tooltip.

ATH PullbackHide section

Sector ( expand / close all ) Tickers Pulled back Breadth Avg % off high Median % off high Momentum Composition
Notes

ATH Pullbacks - by IndustryHide section

Industry Tickers Pulled back Breadth Avg % off high Median % off high Momentum Composition
Notes

Earning Report DatesHide section

Next 20 days
Past 20 days
Notes
Next 20 days (left) lists every report date from today through 20 calendar days out, earliest first. Past 20 days (right) lists every report date from 20 calendar days ago through yesterday, latest first. Both are CALENDAR days, not trading days - weekends are not filtered out, since a handful of companies (Berkshire Hathaway is the standing example) genuinely report on a Saturday or Sunday, and excluding weekend dates would silently drop those. Upcoming tickers split into Before Open / After Close / Unspecified rows - NASDAQ's own before-the-open / after-the-close indication, where reported; a ticker NASDAQ gives no timing for lands in Unspecified rather than being guessed at. Past does not split by timing - a settled report's timing is no longer actionable. Within every row, tickers are ordered by market cap, largest first. Gold marks a ?portfolio= or saved-position holding. Click a ticker to select it in the Profile/Price/Volume sections above (or to load its Ticker Profile directly, when none of those three sections are in the current view). CTRL+click (CMD on a Mac) opens its Ticker Profile. ALT+click opens it on Yahoo Finance. The Active Filters section's Portfolio only=Y/N (bottom of page) applies here too - toggling it narrows both columns down to your own holdings, same as it narrows the Tickers Table.

Economic CalendarHide section

Notes
Six weeks, Sunday through Saturday, from data/econ_calendar.csv (_collect_econ_calendar.py) - the same source the "Happening today"/"Upcoming this week" banners above read. Today's week is the 3rd row, so the grid shows the 2 weeks just past alongside the 3 weeks ahead. Macro releases (CPI/PPI/PCE/the Employment Situation release, which covers both Nonfarm Payroll and the Unemployment Rate) come from FRED's own release-dates API. Market Structure (Triple Witching, S&P 500 quarterly rebalance, Russell reconstitution, Nasdaq-100 annual reconstitution) and Market Closure (NYSE/Nasdaq holidays, full closures and 1:00 PM ET early closes) are both computed directly from each provider's own published methodology, not fetched from anywhere. IPO lists upcoming, not-yet-priced listings with a CONFIRMED expected date (from Nasdaq's own IPO calendar, SPACs excluded) - frequently empty, since a confirmed date usually only appears a handful of days ahead, not weeks or months. Fed lists FOMC interest rate decisions, scraped directly from the Federal Reserve's own published meeting calendar - dated to the SECOND day of each two-day meeting (when the rate decision/press release actually happens), not the first; "+ Press Conference" marks the quarterly meetings that also carry a Summary of Economic Projections. Split lists upcoming stock splits (from Nasdaq's own splits calendar, scoped to tickers already in this dashboard's universe) - a DIFFERENT, genuinely forward-looking source than data/splits.csv (this project's own mart, which only ever records a split after it has already happened). A portfolio-held ticker with an upcoming split also gets its own separate banner above, pointing to the Portfolio Editor. See the collector script's own comments for the exact rules and an explicit flag that this is Claude's understanding of each provider's methodology, not a live-verified feed.

Market IndicatorsHide section

Indicator ( expand / close all )Reading20d TrendStatus
Notes
Each chart plots the indicator itself (a ratio is charted as the single derived value, not its two underlying legs) over its full available history: solid is the derived value each card is scored on, dashed are the two raw legs it's built from.

Charts - Rate CurveHide section

Loading…

Charts - CreditHide section

Loading…

Charts - VolatilityHide section

Loading…

Charts - BreadthHide section

Loading…

Charts - Risk AppetiteHide section

Loading…

Charts - Growth vs SafetyHide section

Loading…

Charts - LiquidityHide section

Loading…

Portfolio Sector AllocationHide section

Notes
Sector weight by current market value, across every position that carries both a share count and a cost-basis lot. Hover a slice for the tickers inside it, each shown with its own share of total portfolio market value.

Portfolio PerformanceHide section

Loading…
Notes

Market Scatter Plots - by 1Y%Hide section

Ctrl+scroll or drag to zoom/pan · Reset zoom
Notes
Every ticker in the current sector/industry scope (or the full universe if unscoped) is one dot, plotting two related-but-distinct facets of one question against each other - the same "how often vs. how much" idea behind actuarial frequency/severity analysis, applied here across several different lenses on ticker health, not just volatility. Pick a function above to switch what's plotted; each button's own hint text (below) explains that function's two axes. Every dot's FILL is its trailing 1-year return on the same red/green intensity ramp the Daily Heatmap sections use, shown for context only - not YTD, which resets toward zero every January and would leave every dot a near-meaningless grey-ish green/red for weeks. A dot's OUTLINE is solid gold for a portfolio holding, the same colour every other portfolio-highlighted element on this dashboard uses, regardless of its own return (its fill still reads the same red/green ramp as everything else) - or the same red/green colour as its own fill for every other ticker. The dashed lines mark the median of whatever's currently displayed on each axis, not a fixed threshold - both the dots and the medians move with every sector/industry/search/portfolio-only filter change. Click a dot to open that ticker's Profile. Ctrl+scroll (or pinch, on touch) to zoom into a crowded cluster, drag to pan once zoomed in, and the legend's "Reset zoom" link snaps back to the full view - plain scrolling past the chart still scrolls the page normally.

Portfolio Scatter Plots - by G/L%Hide section

Ctrl+scroll or drag to zoom/pan · Reset zoom
Notes
Same functions as Market Scatter Plots above, and the same sector/industry scope (or the full universe if unscoped) - but narrowed further to your OWN portfolio holdings only (any position within that scope that carries a current market value), and sized by each position's own G/L% since cost basis instead of its 1-year market return - the market chart answers "how does this ticker behave", this one answers "how has MY entry into it actually done". Pick a function above to switch what's plotted; each button's own hint text (below) explains that function's two axes. Every dot's FILL is also G/L% since cost basis - same value as its size, on the same red/green intensity ramp the Daily Heatmap sections use - so a bigger dot reads green/red exactly as strongly as its own size implies. A dot's OUTLINE is solid gold, since every dot here is a portfolio holding by definition. The dashed lines mark the median of whatever's currently displayed on each axis, across the current scope of your portfolio. Click a dot to open that ticker's Profile. Ctrl+scroll (or pinch, on touch) to zoom into a crowded cluster, drag to pan once zoomed in, and the legend's "Reset zoom" link snaps back to the full view.

Ticker ProfileHide section

Select a ticker below

Ticker Price HistoryHide section

Overlays: Single ticker only - hidden while comparing
Notes
One ticker plots dollars; two or more plot percent from the start of the window, so the lines are comparable. With one ticker, a right-hand axis mirrors the $ line as percent move from the window's first close to its last - same line, two scales, so the move over the range is readable at a glance without hovering. Green E marks an earnings date, blue D an ex-dividend date, light-yellow S a stock split, gold P a purchase lot from your portfolio - plotted at that lot's own cost per share, not on the price line itself, so it shows where the purchase sits against the line rather than just when it happened. A held ticker also draws a dashed gold horizontal line at cost basis (or the cost-weighted average across lots, with more than one) - its legend entry doubles as the % move from that cost basis to the window's own latest close. SHIFT+click a table row to overlay it here - there is no limit on how many. Keypress+click shortcuts on the chart itself (not the table row): a plain click sets the "Start" date control to that point's date; CTRL+click jumps to 1Y; SHIFT+click jumps to YTD; CTRL+SHIFT+click jumps to 5Y - same hint shows at the bottom of the chart's own hover tooltip. The range buttons drive BOTH charts. SMA(200), SMA(20) and Donchian(20) draw by default with one ticker selected - click their entry in the legend above the chart to hide or show them, same as any other line there; there is no separate checkbox for either anymore. Donchian(20) plots the 20-session rolling high/low of CLOSING prices - the mart holds no intraday high/low, so this is a close-based approximation of the classic channel. VIX and USD draw on their own right-hand axis, not the left one - neither shares a price scale with any stock. With BOTH on, that axis is fixed to 0-135 (VIX 9-83, USD 89-114 over the last 10 years) so the two sit at opposite ends without crossing; with only one on, the axis auto-scales to that series' own visible range instead. USD is the ICE U.S. Dollar Index (DXY), the commonly-quoted 6-currency benchmark. CPI, FED % and BOJ % share a THIRD axis (0-10% fixed with all three on, auto-scaled with fewer), drawn as STEP lines rather than smoothed ones since all three are genuinely flat between releases, not continuously moving. CPI (YoY%) updates monthly; its step lands on an APPROXIMATE announcement date (day 13 of the following month, BLS's typical release window), not the exact historical release calendar, which is not available from this data source. FED % is FRED's daily DFF, which needs no such approximation. BOJ % is a realized monthly average shifted to the 1st of the following month, same approximation shape as CPI but simpler (no scheduled release date to approximate in the first place - see the Daily Brief hint text).

Ticker Volume HistoryHide section

Notes
One bar per traded session, split-adjusted. Colour is that session's PRICE move on the same ramp the heatmaps use - green as it accrues, grey as it churns, red as it declines - so a heavy bar's colour says which side the volume went. The line is the 20-session average, the same window as VAvg20d on the card.

Active FiltersHide section

Notes
The search box takes space-separated terms, and can mix two kinds:
• A plain word matches ticker or name and is OR'd with any other plain words - e.g. AAPL MSFT NVDA matches any of the three.
• A col+operator+value term is a value filter and is AND'd with every other term - e.g. beta>1.5, or 52wH%<=-20 for tickers 20% or more below their 52-week high. Operators: > < >= <= = != ~ !~ (~/!~ are text contains/not-contains, usable on non-numeric columns too) - e.g. account=IRA for an exact account match, or account~IRA to also catch "Traditional IRA".
• Combine both kinds freely - e.g. AAPL MSFT beta>1 matches AAPL or MSFT, then narrows that set to rows where beta>1.
These are the same operators and col names the ?col= clause URL syntax uses. Look up any column's name and stored definition in the Data & API page's Column Reference.

Tickers TableHide section

Layout:
Table columns
Available
Shown, in order
Ticker is locked - it carries the row click target and the portfolio colour. Selection and order are saved to a cookie.
Notes
Click a row to select it in the Profile/Price/Volume sections above. CTRL+click (CMD on a Mac) opens its Ticker Profile. SHIFT+click overlays it on the price chart above, on THIS page, as a compare instead. ALT+click opens it on Yahoo Finance, reusing one window. CTRL+SHIFT+click filters THIS table to that row's sector. Gold marks a ?portfolio= or saved-position holding.

Portfolio totals and price drift: prices here update once per trading day, at market close, not continuously through the session. A live brokerage statement checked mid-day will show a small gap against portfolio totals on this page -- the size of the day's price move on each held ticker -- because the brokerage is quoting a live tick and this page is still showing the prior close. That gap is not an error and does not accumulate: it opens fresh every trading day and closes back to essentially zero once the next daily update captures that day's settled close, before opening again the following morning.