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:
- 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.
- 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)
| source | pooled M | CI | n_pairs | note |
|---|---|---|---|---|
| Manifold | −0.034 | [−0.038, −0.031] | 20,495 | barely negative; near-rational |
| Polymarket | −0.476 | [−0.488, −0.463] | 18,366 | strongly 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.
Recommended experiment order
- 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.”
- Boundedness-robust re-scoring (H2): centered/variance-ratio test alongside the level slope.
- Length-≥K and interior-prior restrictions (H3, H4).
- 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.
- 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
- Repo: meno-sh/Observatory (snapshot in
/workspace/repos/Observatory, pushed 2026-06-23). - Scores + sequences:
martingale.db(scores,belief_sequencestables); numbers above queried 2026-07-16. - Scoring code:
packages/core/martingale_core/score.py. Methodology paper: arXiv:2512.02914. - Related: beliefs-martingale-summary, eliciting-llm-beliefs, codebase-and-results-map.
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:
| condition | M | 95% 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) | M | 95% 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.11 | yes — modest extraction/price noise |
| Polymarket −0.476 | σ ≈ 0.40 | no — absurdly large for a market price |
Verdict
- The estimator is sound on a clean martingale (M≈0). Uniform negativity is not a bug in the scorer.
- 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.
- 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.
- 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).