How we score competitor Momentum
The math behind Ripplewatch's Momentum score: up to ten signal types rolled into one directional number, weighted by how reliable each one actually is for a given competitor.
Ripplewatch's Momentum score compares two adjacent 30-day windows across up to ten signal types (hiring, pricing activity, product changes, press and funding, relevance-score trend, win rate, review sentiment, mention buzz, and two opt-in ones: GitHub commit activity and ad activity) and averages whichever have real data into a single -100 to +100 index, weighted by how reliably each one actually reports for that specific competitor. Above +15 is Heating up, below -15 is Cooling, and everything in between is Steady.
Every competitor page in Ripplewatch shows a Momentum badge: Heating up, Steady, Cooling, or Not enough history yet. It answers one question at a glance: is this competitor speeding up or slowing down right now? Here's exactly how it's computed.
What goes into the Momentum score?
Momentum compares two adjacent 30-day windows (this month against the one before it) across everything Ripplewatch already tracks for a competitor:
- Hiring: open role count, or job posting volume once there's enough history to measure real magnitude
- Pricing activity: entry-tier price movement, or pricing-change volume
- Product changes: homepage and positioning changes we've detected
- Press & funding: whether news and funding coverage is trending more positive or more negative for the competitor, not just how much of it there is
- Relevance trend: how the average relevance score of scored signals is moving
- Win rate: whether you're winning or losing more deals against them lately
- Review sentiment: their G2/Capterra rating trend
- Buzz: how much they're coming up on Reddit and Hacker News
- Product activity (opt-in): GitHub commit velocity, if they're open source and you've added their repo
- Ad activity (opt-in): Meta Ad Library active-ad count, once you've connected it
Pricing activity depends on actually being able to read a competitor's pricing page in the first place; see getting pricing data reliably for how we handle pages that block scraping.
Each component turns into a bounded index from -100 to +100. Zero means no change between windows. The score approaches ±100 as activity swings almost entirely into one window or the other. A small smoothing constant keeps a single new signal (one this month, zero last) from immediately maxing out the score the way a raw percentage-change calculation would.
Press & funding is the one component that isn't a pure volume count. A competitor getting hit with a wave of negative coverage isn't "heating up" just because there's more of it. We classify each news and funding story as positive, negative, or neutral for the competitor's own business: a funding round or a well-received launch is positive; a lawsuit, an outage, or a data breach is negative. Then we compare the average sentiment between the two windows. More coverage that's more favorable reads as Heating up; a swing toward negative coverage reads as Cooling, regardless of volume.
Why don't all ten inputs count the same?
Not every competitor gives you the same kind of signal. One might have real pricing history but zero GitHub activity, since they're not open source. Another might get regular press coverage but barely show up on review sites yet. Each component's weight in the final score scales with how consistently we've actually had real data for it, for that specific competitor, over the last six months, rather than a flat average across whatever happens to be populated this period. A component that's normally reliable for a competitor still pulls the score down when it goes quiet for a stretch; one that's always been sparse for them barely moves anything when it's absent, since it was never expected to carry real weight in the first place. Below a certain number of populated components, the score also carries a "limited data" flag, so a read built off one or two thin signals doesn't get shown with the same confidence as one built off real breadth.
Worth saying directly: we used to track SEO and traffic data too, and left it out of Momentum as a stub. We've since pulled it out of the product entirely. A competitor's organic traffic just doesn't say much about whether they're actually winning customers, and it was rarely populated anyway. Better to drop it than keep dressing up a fake number as a real signal.
Where do the Heating up, Steady, and Cooling thresholds land?
The final score is a reliability-weighted average of whichever components have data. Above +15, we call it Heating up. Below -15, Cooling. Everything in between is Steady. Those thresholds are intentionally conservative, so a single noisy week of hiring doesn't flip a competitor's label back and forth. Momentum is one of eight things worth tracking about a competitor overall; see what a competitive intelligence dashboard should track for the fuller list and where most tools have gaps.
It's also why Momentum shows up in two places, the Trends dashboard and the Competitors list badge, pulling from the exact same calculation. The two views can't drift into disagreeing about the same competitor.
Not sure where you stand?
Answer 5 quick questions to find out whether your competitive intelligence is Reactive, Aware, Systematic, or Predictive, and what to do about it.