Methodology

How a signal is born, dies and becomes proof. No black box here: every rule, threshold and measurement definition is written in advance, public and verifiable. This page links each principle to its machine-readable source.

Read the full protocol (PROTOCOL.md)

1. The principle: proof first

GeoPulse doesn't chase an impressive isolated percentage — it accumulates honest statistical proof. Measurement definitions — what counts as "resolved", "correct", a "decision" — are frozen in a public protocol BEFORE the numbers land (pre-registration against cherry-picking). Any change to a measurement rule is logged as a break in the series, never slipped in quietly.

Measurement protocol (frozen)

2. Emitting a signal

The engine runs every 2 hours (plus an immediate run on high-severity events). A candidate only becomes a public signal if it clears a chain of gates: a confidence floor of 57, a minimum Bayesian weight per rule, a crisis gate ("long crisis" bets blocked outside a stress regime AND sufficient VIX), a fundamentals veto (EIA stocks, USDA WASDE), a positioning veto (CFTC COT), AI-model disagreement, contradiction between signals, and the sidelining of historically losing families. Each signal carries a direction, a magnitude, a horizon and a confidence calibrated on the real track record.

3. What we refuse to emit

An honest engine knows how to say no. Every time a gate blocks a ready signal, the abstention is logged with the asset, direction and context — then measured against a 7-day counterfactual (did the price prove the block right?). That counterfactual then decides, automatically and data-drivenly, whether a gate should loosen. No one in this market publishes their non-trades; we do.

"What we refused to trade" (live data)

4. Resolution: σ-aware, per decision

At expiry, a signal is judged on the asset's real move, with a resolution threshold normalised by the asset's own volatility (σ) — a "significant" move on gold isn't the same as on the VIX. Three outcomes: correct / wrong (direction judged), or expired (the market didn't move enough — neither right nor wrong, excluded from accuracy to stay honest). A signal that drifts from its magnitude becomes stale. We ALWAYS count by decision: the multi-horizon legs of one thesis are grouped under their anchor, never counted more than once.

5. The TRADE badge (dual floor 57/60)

All signals are emitted at the 57 floor, but only a narrow subset receives the TRADE badge: confidence ≥ 60, horizon ≥ 21 days, and an asset/direction pair on a pre-registered whitelist (today: gold up, silver up as exploratory). The badge is a pure read-time label — it changes neither emission nor statistics. It's risk management, not a claim of superior edge: the honest expectation shown is 65-72%.

Definition and whitelist (PROTOCOL § 3)

6. Cryptographic sealing

Every signal is sealed with a SHA-256 hash made public the moment it is emitted. The exact (canonical) content is revealed only 24 hours later or at resolution: a commit-reveal scheme, impossible to alter after the fact without breaking the hash. Each day, all seals are condensed into a digest anchored on OpenTimestamps (Bitcoin blockchain) and archive.org. Anyone can recompute a hash and verify precedence — the recipe fits in one shell line.

Public sealsThird-party verification recipe

7. Beyond accuracy: the real judges

An isolated percentage can lie. So alongside accuracy — always with a confidence interval and the number of observations — we publish: σ-normalised P&L per bet (average gain in volatility units), and a comparison against three naive strategies matched on the same assets, dates and horizons (random, always-up, 20-day momentum), with an exact McNemar test. Where we don't beat the baseline, it's stated as is. A public cadence meter honestly projects when the statistical milestones (n=30, n=50) will be reached.

σ-normalised P&L (report)Baselines & McNemar (report)Cadence meter (live)

8. Losing families: out of the traded flow

A pre-registered analysis identified families of signals historically losing on the backtest corpus. Rather than quietly deleting them, we set them to "observe" mode: still measured but out of the traded flow, and their rehabilitation can only happen through the counterfactual (if the blocks turn out mostly winning on a sufficient sample), never through an editorial decision.

Losing families (report)

9. The July 4, 2026 reset

In July 2026, an internal audit revealed biases in an earlier version of the engine (timeframes divided by a staging setting left in production, a crisis gate blind to AI signals…). Rather than displaying flattering but distorted numbers, we published the full post-mortem and reset the public track record to zero. It's our worst apparent weakness turned into proof of integrity: the counter has been rebuilding since, in full transparency.

Read the audit post-mortem

10. Data sources

Prices (Yahoo Finance, CoinGecko), macro (FRED — 11 series), news and insider (Finnhub), geopolitical events (GDELT, Google News), energy and agricultural fundamentals (EIA, USDA WASDE), positioning (CFTC COT), ETF flows. Event scoring runs on Mistral AI, with a second-model vote (Google Gemini) on critical events. No proprietary paid source: everything is reproducible.

A metric without a definition is marketing

Every percentage shown on GeoPulse comes with its number of observations and its confidence interval. If you find a figure whose definition you can't trace, that's a bug — write to us.

See the Truth TableWrite to us