Over the past few weeks, I’ve been working on a project called Pulse.

The idea started pretty simply: instead of looking at stock charts one at a time and trying to decide whether something “looks interesting,” could I use market data and a consistent set of calculations to identify interesting behavior across thousands of companies?

That question turned into a much bigger project.

Pulse now collects daily market data and analyzes stocks using several quantitative signals. The goal isn’t to predict exactly what a stock will do next. It’s to make a large amount of market data easier to explore and identify situations that may deserve a closer look.

One of the first things I started measuring was price compression.

A stock sometimes trades in an increasingly narrow range before making a larger move. Visually, this can look like the price is being squeezed into a smaller area.

Rather than relying only on a chart, Pulse attempts to measure that behavior using recent price ranges.

Another measurement looks at where a stock closes within its daily range.

If a stock trades between $90 and $100 during the day and closes near $100, that tells us something different than if it closes near $90.

That doesn’t tell us what will happen tomorrow, but it gives us another piece of information about how the stock behaved during that session.

Volume adds another dimension.

Instead of looking only at raw trading volume, I wanted to compare current activity with what is normal for that particular stock. Relative volume makes it easier to identify when trading activity is unusually high or low compared with its recent history.

I also started looking for tight coils — stocks whose trading ranges have become unusually narrow over multiple sessions.

None of these measurements are particularly useful by themselves.

The interesting part comes from combining them.

A stock showing price compression, a strong close, increasing relative volume, and a tight recent range may be more interesting to investigate than a stock triggering only one of those conditions.

Building the calculations was only part of the challenge.

The other problem was scale.

Looking at 20 or 30 stocks is easy. Looking at thousands of publicly traded companies every day changes how the application needs to work.

I had to think about how the data is collected, stored, processed, and presented without forcing the browser to load thousands of records at once.

That led to building a backend that processes market data separately from the website, stores the results, and lets the frontend retrieve only what it needs through an API.

The project has also changed the way I think about AI.

I don’t want AI to replace the underlying calculations.

If Pulse says a stock has high relative volume or is experiencing price compression, that conclusion should come from reproducible math using market data — not from an AI model guessing what a chart means.

AI becomes more useful after those calculations have already been made.

For example, it can take thousands of calculated observations and help summarize what is happening across the broader market: how many stocks are showing compression, how market participation has changed, whether more companies are reaching recent highs or lows, or which types of setups are becoming more common.

That separation is important to me.

The data provides the evidence.

The calculations provide the measurements.

AI helps explain the results.

There is still a lot I want to improve. Some of the methodology will almost certainly change as I collect more data and learn which measurements are actually useful.

And that is really the point of the project.

Pulse isn’t an attempt to build a machine that predicts the stock market.

It’s an experiment in taking a large, messy dataset and turning it into something structured enough to explore, measure, question, and learn from.

That’s the part of building it that I’ve found most interesting.