The puzzle (ZH). Real-world belief dynamics look entrenched — social-media polarization, vibe-forecasters who read every new datum as confirmation (one group-stage win → “Portugal wins the World Cup”). Entrenchment = positive martingale score (M). Yet every source in the Observatory — prediction markets and social media — comes back negative (mean-reverting). Why would the sign be uniform, and negative, everywhere? Below: what the estimator actually measures, the empirical pattern, and a ranked list of hypotheses with the experiment that would settle each.

What M measures (exactly, from the code)

packages/core/martingale_core/score.py: priors = b[:-1], Δb = np.diff(b), then M = linregress(priors, Δb).slope. So M is the OLS slope β₁ of the increment Δb on the raw, uncentered prior b_{t-1}, pooled over all consecutive pairs across all trajectories. M<0 = mean-reverting, M≈0 = martingale (rational), M>0 = entrenched.

Two structural facts about this estimator matter for the whole puzzle:

  1. b_{t-1} sits on both sides. Δb = b_t − b_{t-1}, so b_{t-1} enters the regressor and (with a minus sign) the response. Any noise in the measured b_{t-1} mechanically drags β₁ negative.
  2. Regression is on the level, not the deviation from 0.5. So β₁ is essentially (AR(1) coefficient ρ − 1). A pure random walk has ρ=1 → β₁=0; any stationary/bounded process has ρ<1 → β₁<0.

The empirical pattern (from martingale.db, snapshot 2026-04-19)

sourcepooled MCIn_pairsnote
Manifold−0.034[−0.038, −0.031]20,495barely negative; near-rational
Polymarket−0.476[−0.488, −0.463]18,366strongly mean-reverting
Bluesky(no aggregated score in snapshot; sequences present)

Topic-level, it is not literally all-negative — it’s a skew: Manifold’s 143 topics split 70 reverting / 70 rational / 3 entrenched; Polymarket’s 124 split 87 / 29 / 8 entrenched (median M −0.66; the +58e3 mean is a degenerate-variance outlier, ignore). So the real puzzle is milder but still sharp: almost nothing entrenches, the aggregate leans reverting. And critically — 40% of belief sequences have length 2 (a single pair); median length is 3. Most of the signal is single-step.


Hypotheses, ranked (rule out the artifacts before believing the finding)

A. Estimator / statistical artifacts — these would produce uniform negativity on any platform, so test first

H1 — Regression-to-the-mean from measurement error (top suspect). Because b_{t-1} is on both sides, measurement noise η in the belief drags β₁ down by ≈ −var(η)/var(b_prior). LLM stance/probability extraction (Bluesky, Reddit, GDELT) is very noisy; market prices carry microstructure noise. Every source has η>0 → every source biases negative. Uniform sign, magnitude tracking noise (Polymarket’s price extraction is cleaner than LLM extraction, yet it’s the most negative — so this isn’t the whole story; see H10). Test: (a) estimator calibration — simulate a known martingale, add per-source-calibrated noise + boundedness + the real length distribution, and check the pipeline returns ≈0. If it returns negative, the negativity is (partly) manufactured. (b) Deconfound with an errors-in-variables / instrumental fit: instrument b_{t-1} with b_{t-2}, or use Deming/split-half regression. (c) Measure extractor test–retest reliability to pin var(η).

H2 — Bounded support makes the level-regression negative by construction. Beliefs live in [0,1]; a process that stays interior is mean-reverting in levels (ρ<1), so β₁ = ρ−1 < 0 whether or not anyone entrenches. Only a boundary-hugging random walk gives 0. Test: replace the level-regression with a proper martingale-difference test — regress Δb on the centered deviation (b_{t-1}−0.5), or use a variance-ratio test (Var(b_t−b_0)/(t·Var step) >1 ⇒ entrenchment, <1 ⇒ reversion), which is boundedness-robust. Compare signs.

H3 — Single-pair sequences dominate the pool. 40% of sequences are length-2 → one (prior, Δb) pair each, i.e. pure cross-sectional regression-to-mean with zero within-trajectory information. Pooling 685 of these swamps the longer trajectories. Test: recompute M restricted to sequences of length ≥ K (K=4,6,10…). If M rises toward 0/positive as trajectories lengthen, the negativity is a short-sequence artifact.

H4 — Boundary censoring is asymmetric. From an extreme prior (0.05, 0.95) you can only move inward — entrenchment is capped, de-entrenchment is not. Extreme priors therefore contribute mechanically inward (negatively-signed) Δb. Test: restrict to interior priors (0.2–0.8); the slope should attenuate toward 0.

B. Sampling & selection — the entrenching part of the world may simply be out of frame

H5 — Platforms are calibration-selected populations. Prediction-market users self-select for skin-in-the-game and accuracy incentives → they update rationally, they are the least-entrenching corner of the population. The polarizing crowd isn’t pricing Polymarket contracts. Reddit CMV is adversarially anti-entrenchment by design (people post to have their view changed). Test: add a genuinely polarizing, no-accuracy-incentive source (partisan X threads, YouTube/news comment sections) and re-score.

H6 — Topic selection: neutral-factual, not identity/value-laden. Entrenchment is a property of identity/value-laden beliefs (the Ronaldo/partisan examples); market questions are neutral, resolvable, evidence-rich — exactly the beliefs people update well on. Test: stratify M by topic type (identity-laden vs neutral-factual). Prediction: M>0 concentrates in identity topics, ≤0 in neutral ones.

H7 — Survivorship / resolution selection. We score questions that resolve or stay live; those have decisive evidence arriving, and genuine evidence drives rational convergence that dominates any entrenchment. Test: split each trajectory into high- vs low-evidence windows (news volume, price volume); predict entrenchment surfaces in low-evidence windows.

C. Level-of-analysis / aggregation

H8 — A market price is a crowd aggregate, not an individual belief. The price is the marginal trader’s clearing value; averaging heterogeneous traders washes out individual entrenchment, and arbitrage/liquidity pull the price back (ecological fallacy — group-level ≠ individual-level dynamics). Test: where per-agent sequences exist (Bluesky agents), compute individual-level M and contrast with the market-level M on comparable topics.

H9 — Market microstructure (bid-ask bounce). Trades alternate at bid and ask, inducing negative autocorrelation in price changes independent of any belief — this alone yields β₁<0, and Polymarket’s strong −0.48 is exactly the signature. Test: score on de-bounced mid/volume-weighted prices, and at coarser sampling intervals; the slope should shrink.

D. Take seriously: maybe it’s partly real

H10 — Where beliefs are quantified and incentivized, the martingale property roughly holds. The negative/near-zero result may be a genuine finding, not a bug: in settings where people attach numbers to beliefs and face feedback, updating is approximately rational; entrenchment lives in qualitative, identity-laden discourse that these sources don’t quantify. The publishable claim is then the contrast (incentivized-quantified ≈ martingale vs identity-discourse ≈ entrenched), not a global “beliefs mean-revert.”

H11 — Time-scale mismatch. Entrenchment may act over months/years (life experience, media diet) while platform sequences span hours–days (median 3 steps). Short windows can’t see slow entrenchment. Test: long-horizon panels (the World Values Survey source is already longitudinal) vs the short streaming sources.


  1. Estimator calibration on synthetic martingales (H1–H3). Non-negotiable first step: if a known martingale run through this pipeline returns negative M, every source number is confounded and needs a bias correction before any substantive reading. This one test discriminates “artifact” from “finding.”
  2. Boundedness-robust re-scoring (H2): centered/variance-ratio test alongside the level slope.
  3. Length-≥K and interior-prior restrictions (H3, H4).
  4. Add an entrenching source + identity-topic stratification (H5, H6) — the real test of ZH’s intuition that entrenchment is out there but out of frame.
  5. Individual- vs market-level and de-bounced prices (H8, H9).

If (1)–(3) move the sign toward 0 and (4) surfaces positive M on identity topics, the resolution is: the uniform negativity is mostly estimator + selection; genuine entrenchment is real but concentrated in identity-laden, unincentivized, long-horizon belief — which the current sources under-sample.

Provenance


Results — estimator calibration (2026-07-16)

Ran the settling experiment: generate known belief processes and push them through the exact Observatory estimator (linregress(b[:-1], diff(b)), pooled), using the real length distribution (n=1723 sequences, 40% length-2, median 3). 3000 sequences/condition, bootstrap 95% CI, seed 20260716.

A. The estimator is UNBIASED on a clean martingale. A true Bayesian (Doob) martingale — belief about a fixed θ under accumulating noisy signals, so E[Δb|past]=0 by construction — measured with no noise returns M≈0:

conditionM95% CI
Bayesian martingale, q=0.60, no noise+0.0002[−0.0002, +0.0006]
Bayesian martingale, q=0.70, no noise−0.0002[−0.0008, +0.0003]

So the estimator is not inherently broken — on a genuine martingale it correctly returns 0. The negativity is not a coding bug.

B. Measurement noise drags M negative (H1 confirmed). Add Gaussian extraction noise σ to the observed belief:

σ (noise)M95% CI
0.02−0.001[−0.002, −0.000]
0.05−0.007[−0.008, −0.006]
0.10−0.029[−0.030, −0.027]
0.15−0.062[−0.064, −0.060]

Every level is significantly negative; magnitude scales with noise — the regression-to-mean signature.

C. Boundedness alone drags M negative (H2/H4 confirmed). A clamped Gaussian random walk (bounded [0,1], not a martingale) with zero measurement noise:

step σM
0.03−0.004
0.05−0.012
0.10−0.038

D. Single-pair sequences are NOT the main driver (H3 weakened). Restricting to length ≥ 4 — dropping the 40% single-pair sequences — at σ=0.05 gives M = −0.007, essentially unchanged from the full pool (−0.007). Regression-to-mean bias is per-pair, so removing short sequences doesn’t rescue it. H3 is largely refuted.

Calibration — how much noise reproduces the observed source scores?

target (observed)implied σplausible?
Manifold −0.034σ ≈ 0.11yes — modest extraction/price noise
Polymarket −0.476σ ≈ 0.40no — absurdly large for a market price

Verdict

  1. The estimator is sound on a clean martingale (M≈0). Uniform negativity is not a bug in the scorer.
  2. Manifold’s mild −0.034 is fully consistent with a true martingale + realistic measurement noise (σ≈0.11) and/or modest boundedness. So Manifold’s “mean-reversion” is plausibly an artifact — there may be no real anti-entrenchment there at all.
  3. Polymarket’s strong −0.476 is NOT explained by plausible measurement noise (needs σ≈0.4). Its reversion is substantive, but most likely market microstructure (bid-ask bounce, H9) / genuine convergence — a market dynamic, not belief entrenchment or its absence.
  4. So, on ZH’s puzzle: for the near-zero platforms the negative sign is measurement-error + boundedness, not evidence against entrenchment; a corrected estimator (errors-in-variables / centered martingale-difference test) is required before any substantive read. The strong-reversion platform is real but reflects market mechanics. Neither confirms nor denies real-world entrenchment — the current sources simply can’t see it, which redirects to the identity-topic / polarizing-source test (H5/H6) as the real next step.

Script + raw output: packages/experiments/estimator_calibration_results.txt in the local Observatory snapshot; methodology as described above (Bayesian-Doob martingale null, measurement-noise and clamped-RW conditions).