Building a market dashboard that admits when the data is late
How I built a publicly available S&P 500 research dashboard with market summaries, signal explanations and automation that treats stale data as a problem to show, not hide.
A stock-market dashboard is easy to make look impressive. Put some prices next to a line chart, highlight a few companies, and the screen begins to resemble professional trading software.
The hard part is making sure it doesn’t imply more certainty than the data supports.
That’s what I’ve been working on with my public S&P 500 market dashboard. It’s a browser-based market-information and learning project with stock analysis, sector comparisons, market news and experimental research tools. It’s not a brokerage account, an investment adviser or a claim that a trading model has found a reliable edge.
Here’s how the actual site works and some of the decisions behind it.
The homepage should answer a small number of questions
I wanted someone opening the dashboard to find the useful parts quickly.
The homepage brings together a short market briefing, sector performance and Buy TOP 3 / Sell TOP 3 candidates. There are also separate pages for stocks, research, and beginner explanations.
That sounds simple, but the labels matter. A top-three list can easily look like an instruction to buy or sell immediately. In the actual implementation, these are relative candidates for further review, not promises of a good trade. The site also separates a stock’s technical score from its entry conditions and from how a person might manage an existing position.
A stock can rank highly and still fail the conditions for a new entry. I consider that a feature of a transparent tool, not a defect to hide.
Try it: Open the S&P 500 dashboard.
The ranking isn’t a mysterious AI verdict
The public methodology page explains that the short-term trend assessment is a rule-based score, using information such as moving averages, recent returns, RSI and MACD.
The site then applies separate checks for breakout or pullback setups, market conditions, observed resistance and the age and completeness of the underlying prices.
The buy and sell candidate lists use that assessment to prioritize what to examine. But a technical score isn’t a percentage chance of going up, and a relative sell ranking doesn’t mean a stock with strong long-term performance must immediately fall.
The important part is exposing the conditions and the reasons, not dressing a heuristic up as a guaranteed forecast.
Making refreshes reliable is real engineering work
Prices, financial indicators, market news and macroeconomic data don’t all update at the same time.
The dashboard’s public documentation describes GitHub Actions workflows that collect and validate material before the static site presents it. Python handles parts of the collection and preprocessing, while HTML and JavaScript display the published data in the browser.
Some sources are market-close data rather than live exchange feeds. Some economic figures arrive on their own release schedules. A failed upstream feed should not be treated as a newly published number simply because a dashboard refresh ran.
That led to a fairly important UI requirement: show the underlying observation date, the update status, and whether data is cached or delayed.
I would rather leave a card unchanged with a clear date than quietly substitute a fabricated “latest” value.
Research and production signals shouldn’t be mixed together
A separate part of the website explores longer-horizon research and model evaluation.
It’s tempting to promote the model with the smallest error from an early experiment. But error on one historical sample is not the same as proven performance after publication, and a model can have low average error while doing badly at identifying declines.
The public site distinguishes observed technical rules from AI research, shows rejected or unverified candidates and identifies limitations in historical tests. It also separates the performance of published signals from what a retrospective backtest suggests.
That distinction is especially important for a market site, because readers may mistake a model-development experiment for financial advice.
Explore: Research and methodology · Advanced analysis.
How it’s built and how to try it
At the interface level the website is a set of linked HTML pages with JavaScript-driven tables, charts, search and filters. The data and evaluation logic live in Python scripts, JavaScript modules and generated files inside a public GitHub repository.
Visitors can look up a company, explore sectors, read a market summary and see what the dashboard currently knows. They don’t need to install a desktop trading terminal to do it.
If you want to explore the actual project rather than just read about it, start with the live dashboard. The methodology page explains the calculations and limitations, and the public repository shows how the site evolves.
The next step for this blog is to show real screenshots and short browser walkthroughs of those specific features—not simulated profit graphs or videos suggesting trades the system never made.
This is a software-development case study and a description of an educational site. It is not investment advice. Figures and rankings can be delayed or incorrect; past research results do not guarantee future returns.