tdm.analytics

A point-in-time feature layer for the models you already run.

TDM Analytics turns public global news into structured, machine-readable features that research teams can join to their own instruments, books, factor models, and risk workflows. The feed is instrument-agnostic by design: we provide stance, manipulation-density, narrative-framing, and embedding-derived features; buyers decide where those features belong in their own process.

1,500
Articles / day
40+
Global sources
8
Languages

How it works

Three steps, ordered by where the buyer joins the data, not by what happens inside the pipeline.

1
Public news in. A multi-source daily panel of international articles, timestamped with article_fetched_at_utc as the immutable point-in-time bucket key.
2
Structured features out. Per article, TDM produces structured features such as stance across economic themes, manipulation density from a 30-technique rhetorical taxonomy, narrative-framing detectors, and embedding-derived signals. Per hour, those features are aggregated into theme-state time series.
3
Buyers join the rest. TDM themes are abstract economic categories, not ticker symbols. Buyers join the features to their own instruments, books, factor models, or risk overlays using their preferred universe and methodology.

Sample records

Layer 1

Per-article internal record

What the pipeline produces for each ingested article. The internal master record: neutralized summary, narrative framing, manipulation score, per-theme stance, and per-sentence technique annotations.

Article 620071 · 2026-05-04 02:13Z
{
  "article_id": 620071,
  "analysis_version": "crit_v1",
  "summary_neutral": "President Donald Trump announced a US initiative called Project Freedom to guide neutral ships through the Strait of Hormuz, describing it as a humanitarian effort...",
  "overall_tone": "highly_loaded",
  "article_narrative_final": "Frames the US announcement of Project Freedom as a humanitarian effort to assist neutral ships, within the context of the US-Israeli military campaign and Iranian closure of the strait.",
  "narrative_framing": {
    "primary_focus": "humanitarian_effort",
    "missing_context": [
      "does_not_include_iranian_response",
      "does_not_independently_verify_claimed_vessel_count"
    ]
  },
  "world_news_worthiness_score": 0.85,
  "geographic_scope": "regional",
  "news_category": "International Conflict",
  "manipulation_score": 2.24,
  "market_sentiments": {
    "oil_gas": 1, "metals_precious": 1, "defense": 1, "bonds": 1, "utilities_transport": 1,
    "equities_broad": -1, "emerging_markets": -1, "fx": 0
  },
  "sentences": [
    {"sentence_index": 1, "is_loaded": true, "techniques": ["euphemism"]},
    {"sentence_index": 4, "is_loaded": true, "techniques": ["euphemism"]},
    {"sentence_index": 5, "is_loaded": true, "techniques": ["glittering_generalities"]}
  ],
  "created_at": "2026-05-04T02:33:48Z"
}
Layer 2

Trial package row

What ships in article_theme_observations. One row per (article, theme), point-in-time, provenance-stamped, and instrument-agnostic. Joins the article-level analysis to the 18-theme economic vocabulary.

Same article · 3 of 8 themes
// One row per (article, theme). 3 of 8 rows shown for article 620071.
{
  "observation_id": 189081,
  "article_id": 620071,
  "theme": "oil_gas",
  "stance": 1,
  "stance_label": "bullish",
  "manipulation_score": 2.24,
  "article_published_at_utc": "2026-05-04T02:13:09Z",
  "article_fetched_at_utc": "2026-05-04T02:15:35Z",
  "observed_at_utc": "2026-05-04T02:33:48Z",
  "analysis_created_at_utc": "2026-05-04T02:33:48Z",
  "analysis_version": "crit_v1",
  "schema_version": 2
}
{"observation_id": 189077, "theme": "equities_broad", "stance": -1, "stance_label": "bearish", /* same article_id, manipulation_score, timestamps */}
{"observation_id": 189079, "theme": "fx", "stance": 0, "stance_label": "neutral", /* ... */}
// + 5 more rows for bonds, defense, metals_precious, utilities_transport, emerging_markets
Layer 3

Walk-forward audit row

What ships in the trial's validation harness.¹ One row per theme², hour, latency tier, and reference instrument. These rows measure whether TDM features contain point-in-time information against forward market movement. The reference instruments are validation anchors, not the product universe.

oil_gas / CL.c.0 · 2026-05-04 14:00Z
{
  "target_hour_utc": "2026-05-04T14:00:00Z",
  "sector": "oil_gas",
  "ticker": "CL.c.0",
  "reference_ticker": "CL.c.0",
  "article_count": 14,
  "ticker_price": 103.47,
  "volume": 19493,
  "rvol": 2.3477,
  "manipulation_hourly": 0.9864,
  "sentiment_hourly": 0.4286,
  "organic_trend": 0.3863,
  "narrative_controversy": 0.9035,
  "narrative_vol_score": 0.6968,
  "commodity_stealth": 2.0861,
  "fact_to_spin_divergence": 0.2060,
  "summary_anomaly": 0.1131,
  "trailing_narrative_contagion": 1.0,
  "trailing_narrative_contagion_alert": 1,
  "bull_trap": false,
  "bear_trap": false,
  "div_top": true,
  "accum_bot": false,
  "signal_source": "computed",
  "schema_version": 4
}

Validation harness: how we measure information content

The walk-forward audit tape included in the trial package anchors selected themes to reference instruments such as CL.c.0, ES.c.0, NQ.c.0, ZN.c.0, GC.c.0, EEM, and XLY for one reason: to measure information content against real forward returns under strict point-in-time discipline. The anchors are a validation harness, not the product. The features are the product.

If a buyer wants a tickerized layer for a specific universe, that can be scoped during pilot using the existing entity-mention pipeline and buyer-defined instruments.

Additional pipeline layers

The default trial package includes the core buyer-facing layers above. The broader TDM pipeline also computes additional feature layers that are not shipped by default but can be scoped into paid pilots or production delivery:

  • Sentence-level rhetorical-technique arrays. The 30-technique taxonomy beneath the article-level manipulation score, exposed at sentence granularity with technique tags, character offsets, and quote flags.
  • Entity-mention tables. Per-article entity extraction with name, type, normalized_name, confidence, and sentence_index. These can support buyer-specific tickerization or entity-level joins.
  • Narrative-framing JSON. Per-article primary focus and missing-context fields as structured output.
  • Embedding-derived features. Embedding spaces can be exposed as derived distances or buyer-anchored similarity features where appropriate.
  • Expanded full-stack coverage. Additional themes or upstream layers can be promoted into hourly and walk-forward outputs during pilot scope.

Pilot scoping can cover buyer-specific instrument universes, delivery infrastructure, and validation windows.

Eighteen themes

TDM Analytics scores every article against a fixed 18-theme economic vocabulary, listed below.

Equities (broad) Bonds FX Crypto Real estate Emerging markets Oil & gas Precious metals Industrial metals Agriculture Technology Semiconductors Financials Healthcare Consumer Industrials Defense Utilities & transport

Data layers

TDM Analytics delivers three stacked data layers, from per-article theme observations up to a live walk-forward audit tape.

L1

Article-theme observations

Per-theme stance (18-theme vocabulary) plus article-level manipulation score. Instrument-agnostic.

L2

Hourly theme aggregates

Theme-state time series with sentiment, manipulation density, and narrative composites.

L3

Walk-forward audit tape

Live, git-chained, three-tier (T+0 / T+5 / T+15) hourly snapshots with reference-instrument anchoring.

Trial availability

A static buyer-trial sample package and methodology note are available on request. The trial includes full-stack coverage on seven walk-forward themes, validated statistical examples for two depth-showcase pairs (defense / ES.c.0 and oil_gas / CL.c.0), and complete documentation including field lineage, point-in-time discipline, and a backtest recipe.

Production delivery, expanded coverage, and custom instrument anchoring are scoped per pilot. NDA optional for trial.

FAQ

Q
Is this a tickerized sentiment feed? No. The default feed is intentionally instrument-agnostic. TDM ships structured news-derived features that buyers can join to their own instruments, baskets, books, factor models, or risk workflows. Buyer-specific tickerization can be scoped during pilot, but it is not the default product thesis.
Q
What does "feature layer" mean? TDM ships features that a research team can add as columns to its existing models. The data is structurally independent of price, volume, and fundamentals, so it can provide orthogonal information to a buyer's existing factor stack. It is not a buy/sell signal product and not a finished trading strategy.
Q
What is point-in-time news data? News data recorded with publish, fetch, and analysis timestamps and a run_type label, so a backtest can restrict to what was actually known at each hour. Real-latency point-in-time data starts 2026-02-21 and the live git-chained audit tape starts 2026-05-01. Earlier rows are reconstructed and labelled as such rather than presented as live.
Q
What is an article-level manipulation score? A 0 to 10 per-article density score for editorial and persuasion technique, independent of theme assignment and market direction, delivered alongside per-theme stance.
Q
What is narrative-framing analysis? Continuous and binary per-article signals for how an outlet frames its subject: controversy density, polarization, weaponization, fact-vs-spin divergence, and narrative novelty, plus a narrative-space embedding vector.
Q
What does instrument-agnostic mean? The data is scored against an 18-theme economic vocabulary with no pre-mapped tickers, so it joins to the buyer's own instruments, sectors, or risk models.
Q
What is a walk-forward audit tape? A live, append-only, git-chained set of three-tier hourly signal snapshots (T+0 advance, T+5 preliminary, T+15 final), with the theme series pinned to a per-sector reference instrument across seven sectors.
Q
How does TDM Analytics differ from conventional news-analytics feeds? It ships point-in-time, instrument-agnostic theme observations plus separate manipulation and narrative-framing layers and a git-chained audit tape, instead of a single blended ticker-mapped sentiment number.
Q
Who is it for? Quantitative research and risk teams running systematic strategies that need news-derived data joinable to their own instruments under point-in-time discipline.
Q
Is the data point-in-time? Yes, with explicit limits: every row carries publish, fetch, and analysis timestamps and a run_type, the audit tape is append-only and git-chained, real-latency data starts 2026-02-21, and the live tape starts 2026-05-01. Earlier history is reconstructed and labelled, so true point-in-time rows can be isolated.
Contact

Quantitative research and risk teams welcome. Buyer feedback shapes the roadmap.