Signal

Methodology

How every number is computed

Nothing on a Signal screen is estimated, scored or written by a model. Each figure is arithmetic over stored records you can open, and each definition is here.

Sources

Universe
The London Stock Exchange’s own instrument lists: every share admitted to the Main Market and AIM, with ticker (TIDM), ISIN, market, ICB sector, market capitalisation and index membership (FTSE 100, 250, 350, All-Share, AIM 50, AIM 100, AIM All-Share). Refreshed daily; the monthly workbook supplies admission dates and listing categories.
Regulatory announcements
The Financial Conduct Authority’s National Storage Mechanism, the regulator’s store of every announcement made through any Primary Information Provider (RNS, PR Newswire, EQS, GlobeNewswire, Business Wire and direct uploads). Each item carries its headline code, publication time and a link to the filed document. We hold history from September 2021 for deep companies.
Prices and volume
Daily open, high, low, close and volume for the primary line, end-of-day, in the quoted currency (pence for most UK shares). Not adjusted for corporate actions unless the provider says so. The provider is named on every chart.
Company and executive posts
Public posts read from the X API under its Developer Agreement and Display Requirements: author, unaltered text, timestamp and public metrics. Executive accounts are verified by hand against the company’s own materials before they appear, and the verification is recorded. Posts deleted on X are removed within a day. LinkedIn has no legitimate read path for a third party, so it is absent until a company connects its own page.
Press
Headlines that name the company, from the GDELT Project (used under its terms, with attribution). We store the headline, outlet, link and the time GDELT first saw it; never the article. Outlets are tiered: national business press and wires, then regional and trade press, then everything else. The same story on several outlets collapses into one item. Press is collected month by month backwards from today, so a company’s record states the span it holds; a date outside that span is “not collected”, never “no coverage”.

Definitions

Session
The London trading day an event belongs to. Anything before 16:30 London on a trading day belongs to that day; anything later, or on a non-trading day, belongs to the next. The trading calendar is the instrument’s own price history.
Return
Close to previous close, as a percentage. Never intraday.
Normal volume
The median volume of the previous 30 sessions, excluding the day itself. A volume ratio is the session’s volume divided by that.
Unusual day
A session whose absolute return is at least 2.5 times the trailing 60-session standard deviation of returns (and at least 3%), or whose volume ratio is at least 3.
Substantive announcement
Any regulatory announcement that is not a routine filing. Routine codes: total voting rights, transactions in own shares, director and PDMR dealings, holdings notifications, block-listing returns, net asset values, proxy forms, additional listings, publication of documents.
Amplified
A substantive announcement followed within 24 hours by a company post that shares at least two significant words with the headline, uses the vocabulary of its category, or links to the announcement.
Silent move
An unusual day with no substantive announcement and no company post in that session. It is a prompt to look, not a finding: the absence of a communication we track is not evidence of a leak or of market abuse.

What we refuse to say

That an announcement or a post caused a move. Every statement is phrased as timing (“shares closed +4.2% that session”) or as comparison (“peers we hold data for: median 1.8%”). We do not compute sentiment, scores or ratings, and we do not compare against “the FTSE 250”: only against the named peers we hold data for over the same window.

Freshness and absence

Every panel prints when its data was fetched and is marked stale when it is older than its schedule. Where a figure cannot be computed the cell says why: no X account held, posts not collected, fewer than two results days, prices not collected. A zero would read as a finding, so we never print one in place of an absence.