NoiseFloor
What changed, what is repeated, and what can the evidence support?
A modular, offline toolkit for research desks, monitoring systems and AI agents. Python 3.9+, MIT, zero runtime dependencies. The same pure functions work through Python, JSON CLI, REST and MCP.
NoiseFloor checks market observations, groups repeated headlines, exposes data gaps and grades forecasts. It does not fetch feeds, call a model, retain your portfolio or execute trades.
Start with your research task
| Your task | First step | What stays with the result |
|---|---|---|
| Inspect shared-factor concentration | Open the correlation workbench and run a labeled synthetic example | Alignment, source restrictions, gaps and reference assumptions |
| Review changing market observations | Follow the market input guide with your permitted observations | Observation clocks, visibility gaps and descriptive review priorities |
| Reduce repeated headlines | Run the self-contained Python example below | Original events, changed quantities and conflicting reports |
| Connect an API or MCP client | Open the client kit | The same bounded input contract across transports |
Use Python or the CLI locally for private observations. The browser workbench submits the selected example only when you run it; its bundled examples are synthetic. Public financial-source retrieval is a separate workflow in the Financial Evidence connection guide.
Release 0.4.0 introduced correlation spectra, shared-factor concentration, an experimental correlation-cleaning candidate and rolling diagnostics, plus a separate synthetic Dyson Brownian-motion simulator. See the product applications and methods.
Try the live correlation and Dyson workbench with explicitly synthetic examples for LiquiLens, Seiche, Undertow, Riptide, Palimpsest and trading-agent research. The API client kit includes OpenAPI, Postman, Bruno, HTTP and local Python workflows. Browser requests go to the public service only when you run them; use Python locally for private panels.
Get your first result
Install the package; no repository checkout, API key or model is required:
python3 -m pip install --upgrade noisefloor
noisefloor capabilities
Run this Python example with two explicitly synthetic headlines. The fixed observation clock makes the result reproducible:
import json
from pathlib import Path
from noisefloor import narrative
primary = {
"id": "synthetic-filing",
"title": "Example Bank reports deposit growth of 5 percent",
"published_at": "2026-10-08T10:00:00Z",
"entities": ["EXAMPLE-BANK"],
"source": {"id": "synthetic-issuer", "kind": "primary"},
}
copy = {
**primary,
"id": "synthetic-headline",
"source": {"id": "synthetic-wire", "kind": "reporting"},
}
request = {
"events": [primary, copy],
"as_of": "2026-10-08T12:00:00Z",
"focus": ["EXAMPLE-BANK"],
}
report = narrative.triage(**request)
print(len(report["events"]), len(report["attention_queue"])) # 2 retained, 1 to review
print(report["counts"]["repeated_wording"]) # 1 repeated headline
Path("narrative.json").write_text(json.dumps(request), encoding="utf-8")
Both original events remain in the report. Repeated wording is grouped; it does not establish truth, independent confirmation or permission to trade. Source kinds and entity assignments are supplied by the caller.
The example also writes narrative.json, which you can pass to the installed CLI:
noisefloor narrative narrative.json
Connect your financial research
NoiseFloor analyzes inputs you supply. These products provide separate routes to financial context and evidence; consult each product's coverage and source rights before bringing observations into a local assessment.
| Research task | Product and next step |
|---|---|
| Retrieve and save a source-aware financial review from Python or an AI agent | Financial Evidence first review |
| Explore funding and foreign-exchange context | Seiche · API and MCP guide |
| Inspect covered bank disclosures and institutional evidence | LiquiLens · developer guide |
| Examine indicative Bitcoin exit liquidity | Undertow · developer guide |
| Explore China and regional public-record coverage | Palimpsest · developer guide |
Use the connection guide to choose a hosted API or MCP route. Installing NoiseFloor does not subscribe you to feeds, enable source collection or send your local observations to those products.
Market attention
Each series carries its identity, units, source, declared reuse permission, observation times and freshness limit. Optional availability clocks retain what the caller knew at the time. Missing data stays missing.
The engine checks age, future timestamps, duplicate clocks, contiguous history and measurement coverage. Prices become log returns; rates and spreads retain their units. It never calculates a return across a declared gap. An explicit policy identifies persistent departures, isolated latest moves and volatility expansion. Correlated movements are visible without being counted as independent confirmation.
Each series returns review, watch, no_supported_departure or
insufficient_visibility, with sources and reasons. These are review priorities,
not significance tests or trading signals. A quiet diagnostic does not prove a
movement is noise. Source permissions are caller declarations, not a licensing
audit. Market calendars, corporate actions and materiality require caller review.
Trading volume is an economic observation, not automatically a sample denominator.
News and narrative attention
NoiseFloor groups similar wording for the same declared entities, keeps changed quantities and explicit denials separate, records every original event and produces a bounded queue. Differing reports with the same declared event key are highlighted for review. Caller-declared primary sources rank before commentary; repetition alone never increases priority.
This is wording/relevance triage, not fact checking, sentiment prediction or proof of independent corroboration. Deferred and filtered items remain available. An empty queue does not certify a quiet market. Titles are data, never instructions.
Statistical building blocks
| Module | Purpose | Evidence boundary |
|---|---|---|
experiment.compare |
Sequential Bernoulli A/B confidence sequences | Conditional stable-arm Bernoulli assumptions; arbitrary trading outcomes do not qualify automatically. |
change.scan |
Directional change monitoring | Descriptive statistic, not an e-value or universal market false-alarm guarantee. |
coverage.check |
Examine measurement-count changes | Linear descriptive diagnostic; it cannot prove causation or rule out every sampling effect. |
forecast.next_value, forecast.score |
Issue and evaluate identical adaptive intervals | Full historical records/misses; coverage is empirical, not guaranteed for the next observation. |
multiple.select |
e-BH selection over a declared family | Requires explicit caller confirmation of valid e-values; arbitrary scores cannot confer selection authority. |
from noisefloor import experiment, change, forecast, multiple
experiment.compare(500, 5000, 750, 5000)
change.scan([1., 2., 1., 2., 1., 2., 1., 2., 8., 9.])
forecast.score([float(x) for x in range(40)])
# Only after an independently justified e-value construction:
multiple.select({"metric_a": 25.0, "metric_b": 1.0}, valid_evalues=True)
valid_evalues=True is a declaration, not certification. A single-family e-BH
guarantee does not justify repeatedly selecting families or unqualified peeking.
Version 0.3 corrects overstated guarantees in 0.2; read the
methods and migration notes.
AI agents and HTTP
{"mcpServers":{"noisefloor":{"command":"uvx","args":["--from","noisefloor","noisefloor-mcp"]}}}
Ten MCP tools: market_assessment, narrative_triage, ab_test,
did_it_change, real_or_sampling, forecast_next, score_forecasts,
which_metrics_matter, spectral_assessment, dyson_reference. Results include
structured JSON. The spectral assessment is descriptive research; the Dyson
reference is a synthetic simulation, not a fitted market model.
noisefloor-mcp-http --host 127.0.0.1 --port 8792
In another terminal, use the narrative.json written by the Python example:
curl http://127.0.0.1:8792/v1/capabilities
curl -H 'Content-Type: application/json' --data-binary @narrative.json http://127.0.0.1:8792/v1/narrative/triage
REST: POST /v1/market/assess, POST /v1/narrative/triage,
POST /v1/spectral/assess, POST /v1/research/dyson.
The hosted API base is https://api.seiche.info/noisefloor; the hosted MCP
endpoint is https://api.seiche.info/noisefloor/mcp.
Research routes: POST /v1/spectral/assess, POST /v1/research/dyson.
Discovery: GET /v1/capabilities, GET /openapi.json; MCP: POST /mcp.
Self-host behind your TLS/authentication and quota layer. HTTP logs bounded
operation/outcome labels, not submitted observations, titles or request targets.
Hosted MCP: https://api.seiche.info/noisefloor/mcp.
Check its health/version and tool list before assuming a package release is
deployed there. Package, registry and host acceptance are separate states.
mcp-name: io.github.beepboop2025/noisefloor
Modular by design
Bring permitted data through the offline adapters. The Financial Evidence adapter preserves institution, metric, unit, source, rights and knowledge clocks without importing its SDK. LiquiLens institution evidence, Seiche funding, Undertow liquidity and Palimpsest coverage can remain separate while using common diagnostics. This does not imply those products already run this release.
- Architecture and extension contracts
- Research workflows
- Correlation spectra, Dyson reference and product applications
- Adapters, frameworks and deployment recipes
- Release procedure
Request/policy SHA-256 digests support identity checks and replay; they are not signatures or proof of source truth. No runtime network, model, database or paid API dependency is required.
Verification
For contributors working from a source checkout:
pip install -e '.[dev]'
pytest -q
Tests cover issued/scored forecast parity, invalid statistical composition, stale/future/missing observations, transforms, coverage shifts, repeated and conflicting wording, privacy and Python/CLI/REST/MCP parity. Synthetic calibration checks do not establish live-market accuracy, profitability or failure prediction.
Origin and licence
Built from measurement-quality work for Palimpsest. MIT. Source and methods are inspectable; results retain their assumptions.
Metadata
Release files for noisefloor 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| noisefloor-0.4.1.tar.gz | 93.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| noisefloor-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 150.8 kB
Release files / noisefloor-0.4.1.tar.gz
| Download URL | noisefloor-0.4.1.tar.gz |
|---|---|
| Size | 93.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3239fa0a4ebfe9845d5c845dac4765bb78533a2406eab4e401d7928fb1db805b
|
|
BLAKE2b-256 checksum How to use checksums |
d06e612214ccf1555fbcb91f208632827dd2419fbf2cd4fadc90dea8208a9693
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency logRelease files / noisefloor-0.4.1-py3-none-any.whl
| Download URL | noisefloor-0.4.1-py3-none-any.whl |
|---|---|
| Size | 56.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
726d72c139025b5bd7412e9c9eab3ef4f432c922afe3b156f2b9ae00fabe82d3
|
|
BLAKE2b-256 checksum How to use checksums |
70ad4679338dd09dc187eaa385b1a45510b6f3f586a8bd16c59c9e67d8715b5f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency logSecurity for noisefloor 0.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for noisefloor-0.4.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.