Virtual Trading Platform

Experiment settings

Trade settings (total 10)
10
0
Risk preferences
33%
34%
33%
33%
34%
33%
AI endpoint ChatGPT · Wang 2026

When the paradigm is set to Wang 2026 and an API key is present, each Utility agent calls ChatGPT once at the start of the run to anchor its private subjective valuation. Provider list and endpoint match the lying project's GPT provider (PROVIDERS.gpt in lying/js/ai-agent.js). Fields are read fresh from the DOM on every run (no localStorage) and no call is made if the key field is empty — the simulation falls back to the deterministic Lopez-Lira belief model.

Experience preferences
0%
0%
100%
0%
0%
100%
Paper constants Dufwenberg, Lindqvist & Moore (2005), §I. Design
= 10
Asset life, in periods
“An asset's life span is ten periods.”§I, p. 1732
dividend ∈ {0, 20}¢
Per-period draw, equiprobable
“In each period, it pays a dividend of 0 or 20 U.S. cents, with equal probability.”§I, p. 1732
= 10¢
Expected dividend per period
“The expected dividend in each period is 10 cents (= ½ × 0 cents + ½ × 20 cents).”§I, footnote 5
Fundamental value, by backward induction
“With k periods remaining, the fundamental value is k × 10 cents.”§I, p. 1732
Hidden Constants
ticks / period = 18
Agent decision rounds inside one period
DLM 2005 runs a continuous 2-minute z-Tree double auction per period; this simulator discretizes that window into 18 decision rounds (≈ one agent turn every 6.7 real-time seconds) so the engine loop can step deterministically. 18 is dense enough to reproduce the bubble-crash pattern while keeping the replay buffer compact.engine.js — period-boundary trigger
N(F) Fundamentalist = 2
Pinned rational-anchor background
Two Fundamentalist agents are seeded into every run as the rational mean-reversion anchor. They buy when the ask is more than 2% below FV, sell when the bid is more than 2% above FV, and otherwise post passive quotes near FV. Not proposed by DLM 2005, which only studies human subjects, but borrowed from the Smith–Suchanek–Williams (1988) lineage that DLM replicates so the market always has an FV-aware counterparty.main.js — App.FIXED_BACKGROUND.F
N(T) Trend follower = 1
Pinned momentum / positive-feedback trader
A single Trend follower carries momentum into every run, detecting slope from the last 6 prints and bidding above (or asking below) the last trade accordingly. Not in DLM 2005; drawn from the De Long–Shleifer–Summers–Waldmann (1990) positive-feedback literature that explains why SSW-style bubbles inflate. Provides the bubble-inflation channel without dominating the population.main.js — App.FIXED_BACKGROUND.T
N(R) Random (ZI) = 1
Pinned zero-intelligence liquidity floor
A single Gode–Sunder (1993) zero-intelligence trader is seeded into every run to provide a thin but persistent liquidity floor: each tick it flips a coin and posts a uniform bid in [0.7·FV, 1.1·FV] or a uniform ask in [0.9·FV, 1.3·FV]. Not in DLM 2005; pinned at one slot so that books never go fully empty even when E and U agents abstain.main.js — App.FIXED_BACKGROUND.R
naive prior weight = 0.60
Belief blend for naive Utility agents
Weight on the agent's own prior when blending incoming peer messages: posterior = 0.60 × prior + 0.40 × mean(messages). Not specified by DLM 2005, which studies human subjects and has no belief-update model. Chosen so naive agents move noticeably toward peers without collapsing onto them.agents.js — UTILITY_DEFAULTS.naivePriorWeight
skeptical prior weight = 0.90
Belief blend for skeptical Utility agents
Same convex combination as the naive weight but 90% prior + 10% peer average, so a skeptical agent hears messages but is barely moved by them. Not in DLM 2005; introduced so the strategy cube contains a "listen but don't trust" archetype.agents.js — UTILITY_DEFAULTS.skepticalPriorWeight
adaptive weight cap = 0.50
Max one-period belief shift toward peers
Upper bound on the fraction of belief an adaptive agent can shift toward the trust-weighted message mean in a single period: even with fully-trusted senders the new belief is at most 50% messages + 50% prior. Not in DLM 2005; guards against runaway over-update from a single high-trust period.agents.js — UTILITY_DEFAULTS.adaptiveWeightCap
valuation noise = ±3%
Per-tick uniform noise on the Utility-agent prior
Before any bias or message update, each Utility agent draws prior = FV × (1 + bias + U(−0.03, +0.03)). Not in DLM 2005; added so trade decisions do not degenerate to lockstep when every biased/unbiased agent starts each tick from the identical prior.agents.js — UTILITY_DEFAULTS.valuationNoise
trust α = 0.30
EMA learning rate for the pairwise trust update
Pairwise trust is updated as trust[r→s] ← (1 − α) × old + α × closeness, where closeness = 1 − |claim − vwap|/vwap for the period. α = 0.30 weights each new observation at 30%. Not in DLM 2005, which has no messaging layer; chosen for a balance between responsiveness and stability.engine.js — TrustTracker period close-out
passive fill probability = 0.30
pFill heuristic for scoring non-crossing quotes
Expected-utility score for a passive quote is EU = pFill × U(filled) + (1 − pFill) × U(not filled) with pFill pinned at 0.30. A full model would estimate pFill from order-book state; this is a deliberate constant placeholder and is not proposed by DLM 2005.agents.js — UtilityAgent scoring loop
bias magnitude = 15%
Persistent over/under-valuation of biased Utility agents
Applied as prior = FV × (1 + biasAmount) with sign set by the per-slot bias mode (high/low). Drives the biased U-agent slots in the default strategy cube (U2, U4, U5). Not in DLM 2005; chosen large enough to perturb the market without dominating the risk-preference split.agents.js — UTILITY_DEFAULTS.biasAmount
Period1 / 10
Tick0
Price
Fundamental
Mispricing
Volume · period0

Agents Pre-run draft · editable before the simulation starts

Note

Cash
experimental-currency balance held by agent i at tick t, used to finance bids and grown by realized sales plus end-of-period dividend receipts. The pre-run editable value is the initial endowment ; in Dufwenberg, Lindqvist & Moore (2005) subjects were seeded with either 200¢ or 600¢, while this simulator draws each slot uniformly from [800, 1200] ¢.
Shares
holding of the finite-life asset at tick t (initial endowment ). Each held share pays a random dividend drawn from {0, 2} at the end of every trading period (DLM 2005), so the theoretical risk-neutral fundamental value at the start of period t is . DLM endowment classes held 6 or 2 shares; this simulator draws from {2, 3, 4}.
Wealth
mark-to-fundamental total wealth, defined as + · , or for Utility agents as + · (Lopez-Lira 2025). The Normalized Agent Utility plot is .
P&L
running change in total wealth relative to the initial endowment , reported in experimental cents. Positive values render in green, losses in red. Aggregated across all agents, P&L equals the cumulative dividends paid so the market is zero-sum up to the dividend stream, as in the Smith–Suchanek–Williams design replicated by DLM.
Subj V
the Utility agent's private subjective valuation per share, updated each tick from its prior, persistent bias, per-tick noise, and trust-weighted peer messages. Corresponds to the valuation field in Lopez-Lira's (2025) TradeDecisionSchema.
Report
the valuation the Utility agent broadcasts to peers in its messages. Under a deceptive strategy ; the lie-gap magnitude drives the Trust Matrix EMA update and the mean-lie-magnitude statistic in the Experiment Metrics table.
Last action
the most recent decision taken by agent i at tick t, one of {bid, ask, hold}, displayed as a coloured tag on the card. For Utility agents this is the argmax over candidate orders scored under the agent's expected-utility functional (Lopez-Lira 2025).
Subtitle
for classic agents, the strategy class (Fundamentalist, Trend follower, Random ZI, Experienced) together with set membership (, , , ). For Utility agents, the risk preference and its functional: Risk-loving (convex, upside-seeking), Risk-neutral (linear expected value), and Risk-averse (concave, downside-sensitive).

Trade & Dividend Feed

    Figure 1

    Transaction Price Trajectory versus Risk-Neutral Fundamental Value

    risk-neutral fundamental value at the start of period t

    Tick-level transaction prices (accent line, one dot per executed trade) plotted against the deterministic step function (amber dashes). Alternating vertical bands delimit the ten trading periods. In the Dufwenberg, Lindqvist & Moore (2005) design a rational market should track the step line exactly; persistent excursions above it are the bubble and the crash toward = in the final period is the collapse.

    Note

    observed transaction price at tick t
    theoretical fundamental value at the start of period t
    expected per-period dividend (drawn uniformly from {0, 2})
    terminal period of the finite-life asset

    Order Book

    BIDS
    PriceQtyAgent
      ASKS
      PriceQtyAgent
        Figure 2

        Mispricing Magnitude and Price-to-Fundamental Ratio

        · absolute and relative mispricing

        Absolute departure of the observed price from the theoretical fundamental value, filled as a red area. In Lopez-Lira (2025) the same information is expressed as the price-to-fundamental ratio : values above one mark an overvaluation regime, values below one mark an undervaluation regime, and ≈ 1 is consistent with rational pricing. The Experiment Metrics panel reports the normalized-deviation and amplitude statistics derived from this series.

        Note

        absolute mispricing at tick t
        price-to-fundamental ratio (Lopez-Lira 2025)
        Figure 3

        Trade Volume per Period

        shares transacted in period t

        Sum of share quantities exchanged within each trading period. High and persistent bars indicate active speculation; the classic Smith–Suchanek–Williams bubble is typically associated with a volume peak in the inflation phase followed by a cliff as the asset approaches expiry.

        Note

        total share volume traded in period t
        order quantity of a single executed trade
        Figure 4

        Transaction Density over Price × Period

        two-dimensional trade histogram

        Two-dimensional histogram of share quantity binned by transaction price (vertical axis) and trading period (horizontal axis). Warm cells concentrate the market's liquidity. Comparing the heat cloud against the downward-sloping fundamental staircase reveals whether the market is trading near rational value or persistently above it.

        Note

        cumulative share volume in the (price, period) bin
        Figure 5

        Agent Action Timeline

        per-tick agent decision
        Bid Ask Hold Executed

        One row per agent, one mark per decision. Column colour encodes the action type and a small accent dot below the mark records whether the submitted order was filled on the same tick. Contiguous green runs identify accumulators; contiguous red runs identify distributors; holds are the market's waiting population.

        Note

        action taken by agent i at tick t
        Figure 6

        Subjective Valuation: True versus Reported

        · lie gap = private belief versus broadcast claim

        Solid lines trace each Utility agent's private belief over time. Filled dots mark broadcast messages carrying a reported valuation ; deceptive reports are ringed red and connected to the sender's true belief by a dotted segment — the vertical distance between ring and line is the lie gap. The amber step line is the fundamental value for reference.

        Note

        agent i's private (true) subjective valuation at tick t
        valuation reported in a broadcast message
        lie gap for deceptive messages
        Table 1

        Experimental Market-Quality Statistics

        Quantitative summary in the notation of Dufwenberg, Lindqvist & Moore (2005) and Lopez-Lira (2025). Haessel R² measures fit of the per-period mean price to fundamental value; the two normalized deviations capture total and average mispricing per share outstanding; amplitude is the peak-to-trough excursion of the mean-price residual normalized by the initial fundamental; turnover is the total shares traded divided by shares outstanding. The lower group reports allocative efficiency, aggregate welfare, and the deception statistics unique to the Utility population.

        Figure 7

        Normalized Agent Utility over Time

        risk-adjusted wealth, normalized to initial endowment

        Per-agent expected utility evaluated at the running wealth = + · , divided by the agent's own initial utility so every trajectory starts at 1.0. Lines above the dashed baseline indicate positive risk-adjusted PnL; lines below indicate loss. The risk preference attached to each agent (convex, linear, concave) determines how aggressively a given wealth change is penalised or rewarded.

        Note

        risk-typed utility: , ,
        mark-to-fundamental wealth at tick t
        Figure 8

        Asset Ownership over Time

        shares held; total supply conserved

        Stacked area of each agent's inventory across ticks. Because the double auction conserves shares, the total height is always the aggregate endowment . Widening bands identify agents who are accumulating, shrinking bands identify distributors, and any dramatic redistribution in the last few periods is typically the experienced trader liquidating before the asset expires worthless.

        Note

        shares held by agent i at tick t
        total shares outstanding (conserved across time)
        Figure 9

        Broadcast Message Log

        per-tick public broadcast to all other agents
        Buy signal Sell signal Hold signal Deceptive

        One dot per broadcast message, placed on the sender's row at the tick the message was sent. Dot colour encodes the signal (buy/sell/hold) and a red ring flags messages whose reported valuation diverges sufficiently from the sender's private belief to be classified as deceptive by the logger. Reading a column shows the instantaneous rumour mill; reading a row shows each agent's rhetorical stance over time.

        Note

        broadcast from agent i to the population at tick t
        Figure 10

        Pairwise Trust Matrix

        exponential-moving-average update

        Heatmap of receiver-to-sender trust values in [0, 1]. The diagonal is masked. Each off-diagonal cell records how well sender s's recent valuation claims aligned with the period's volume-weighted average price, as seen by receiver r. Warm rows identify agents who tend to trust broadly; warm columns identify agents whose claims the population finds credible.

        Note

        trust held by receiver r in sender s
        trust learning rate (exponential-moving-average weight)
        1 − |claim − VWAP| / VWAP, clipped to [0, 1]

        Replay & Trace Inspector

        Live — tick 0

        Decisions recorded at this tick

        Mathematical Architecture

        DLM 2005 · Lopez-Lira 2025 · Wang 2026 — the equations that drive every tick.

        Edit in draw.io
        Paper constants · DLM 2005 T = 10 periods d ∈ {0, 20}¢ E[d] = 10¢ FV_t = E[d] · (T − t + 1) Risk-neutral fundamental value Agent strategies Fundamentalist ask < 0.98 · FV_t ⇒ buy bid > 1.02 · FV_t ⇒ sell Trend follower slope = Σ Δp over last 6 bid_1 = p + k·slope Random (ZI) bid ∼ U[0.7·FV, 1.1·FV] ask ∼ U[0.9·FV, 1.3·FV] Experienced (DLM) prior = φ(h) · FV_t refuses overpay in late h Utility (Lopez-Lira 2025) prior = FV_t·(1 + b + ε) risk U_L (convex) / U_N / U_A Expected-utility score EU = p · U(w₁) + (1−p) · U(w₀) a* = argmax EU Belief blending post = w · prior + (1−w) · avg(msgs) Trust EMA τ_s ← (1−α)·τ_s + α · (1 − |claim−VWAP|/VWAP) Wang 2026 · ChatGPT anchor V̂_i ← ChatGPT(agent_i) V̂_i ∈ [0.25·FV₀, 1.75·FV₀] Q: asset → argmax V̂_i ? Market matching + quality metrics Order book (price–time priority) bid ≥ ask ⇒ trade at resting price Haessel R² fit of p̄_t to FV_t Amplitude (max−min residual) / FV₀ Normalized deviation ND = Σ |p_t − FV_t| / (T · FV₀ · Q) Turnover · Allocative efficiency TO = Σ qty / Q AE = U_realized / U_max

        Fundamental value · DLM 2005

        Paper constant

        $$ \mathrm{FV}_t \;=\; \mathbb{E}[d] \cdot (T - t + 1), \qquad \mathbb{E}[d] = \tfrac{1}{2}(0) + \tfrac{1}{2}(20) = 10 $$

        Risk-neutral price of one share at the start of period $t$ with $T = 10$ periods of remaining life and i.i.d. dividend draws. Every strategy in the simulator reads $\mathrm{FV}_t$ from market.fundamentalValue().

        Fundamentalist · mean-reversion

        Strategy

        $$ \text{buy if } \text{ask}_t < 0.98 \cdot \mathrm{FV}_t, \quad \text{sell if } \text{bid}_t > 1.02 \cdot \mathrm{FV}_t $$

        Rational anchor — borrowed from the Smith–Suchanek–Williams lineage. Posts passive quotes near $\mathrm{FV}_t$ when neither side is aggressive.

        Trend follower · momentum

        Strategy

        $$ \text{slope}_t \;=\; \sum_{k=1}^{6} (p_{t-k+1} - p_{t-k}), \qquad \text{bid}_1 \;=\; p_t + k \cdot \text{slope}_t $$

        De Long–Shleifer–Summers–Waldmann positive-feedback trader. Drives bubble inflation when the trend is up.

        Random · zero-intelligence

        Strategy

        $$ \text{bid}_t \sim \mathcal{U}[0.7\,\mathrm{FV}_t,\,1.1\,\mathrm{FV}_t], \qquad \text{ask}_t \sim \mathcal{U}[0.9\,\mathrm{FV}_t,\,1.3\,\mathrm{FV}_t] $$

        Gode–Sunder (1993) liquidity floor. One slot is pinned in every run so the book never goes fully empty.

        Experienced · DLM horizon discount

        Strategy

        $$ \text{prior}_t \;=\; \varphi(h) \cdot \mathrm{FV}_t, \qquad h = T - t + 1 $$

        $\varphi$ is the experience-level horizon discount: naive ≈ 1, veteran ramps to zero in the last three periods. This is DLM 2005's bubble-suppressing channel.

        Utility prior · Lopez-Lira 2025

        Extended

        $$ \text{prior}_t \;=\; \mathrm{FV}_t \cdot \bigl(1 + b_i + \varepsilon\bigr), \quad b_i \in \{-0.15,\,0,\,+0.15\}, \quad \varepsilon \sim \mathcal{U}[-0.03,\,0.03] $$

        Persistent per-agent bias $b_i$ and per-tick noise $\varepsilon$, drawn fresh each decision. Feeds the belief-blending stage below.

        Expected-utility scoring

        Extended

        $$ \mathrm{EU}(a) \;=\; p_{\text{fill}} \cdot U(w_1) \;+\; (1 - p_{\text{fill}}) \cdot U(w_0), \qquad a^\star = \arg\max_a \mathrm{EU}(a) $$
        $$ U_L(w) = (w/w_0)^2,\qquad U_N(w) = w/w_0,\qquad U_A(w) = \sqrt{w/w_0} $$

        Each Utility agent argmaxes the EU functional over {hold, cross bid, cross ask, passive bid, passive ask}. Risk-loving / neutral / averse pick one of $U_L,U_N,U_A$.

        Belief blending with peer messages

        Extended

        $$ V_i^{\text{post}} \;=\; w \cdot V_i^{\text{prior}} \;+\; (1 - w) \cdot \tfrac{1}{|M|}\sum_{m \in M} \hat v_m $$

        Naive blends at $w = 0.60$, skeptical at $w = 0.90$, adaptive scales $w$ by pairwise trust. Messages from the agent itself are excluded.

        Pairwise trust EMA

        Extended

        $$ \tau_{r \to s} \;\leftarrow\; (1 - \alpha)\, \tau_{r \to s} \;+\; \alpha \cdot \max\!\Bigl(0,\,1 - \tfrac{|\hat v_s - \mathrm{VWAP}_t|}{\mathrm{VWAP}_t}\Bigr), \quad \alpha = 0.30 $$

        Receiver $r$'s trust in sender $s$ is reinforced when $s$'s claimed valuation tracks the period's VWAP. Powers the adaptive belief-blend above.

        Wang 2026 · psychological anchor

        Merged paradigm

        $$ \hat V_i \;\leftarrow\; \text{ChatGPT}(\text{agent}_i), \qquad \hat V_i \in [\,0.25\,\mathrm{FV}_0,\;1.75\,\mathrm{FV}_0\,] $$

        At run start, one chat-completion call per Utility agent asks ChatGPT for a private subjective valuation. The returned number is clamped and seeds $\text{prior}_0$ so the model's psychology shows up in the very first order.

        Market quality · mispricing

        Metric

        $$ R^2_{\text{Haessel}} \;=\; 1 - \frac{\sum_t (\bar p_t - \mathrm{FV}_t)^2}{\sum_t (\mathrm{FV}_t - \overline{\mathrm{FV}})^2}, \qquad \mathrm{ND} = \frac{\sum_t |p_t - \mathrm{FV}_t|}{T \cdot \mathrm{FV}_0 \cdot Q} $$

        Haessel $R^2$ measures how closely per-period mean price fits the fundamental staircase; ND normalizes total mispricing by total shares outstanding.

        Market quality · amplitude & turnover

        Metric

        $$ A \;=\; \frac{\max_t (\bar p_t - \mathrm{FV}_t) - \min_t (\bar p_t - \mathrm{FV}_t)}{\mathrm{FV}_0}, \qquad \mathrm{TO} \;=\; \frac{\sum_t q_t}{Q} $$

        Amplitude captures the peak-to-trough excursion of the mean-price residual; turnover is total shares traded divided by total shares outstanding. Both are reported in the Experimental Market-Quality Statistics panel.

        Glossary & Reference

        Abbreviations & indices

        TermExpansionMeaning
        DLMDufwenberg, Lindqvist & Moore (2005)Human-subject bubble experiment; paper constants and the Experienced agent come from here.
        LLLopez-Lira (2025)LLM expected-utility extension adding messaging, trust, and deception on top of DLM's market.
        WangWang (2026)Merged DLM + Lopez-Lira paradigm in which ChatGPT seeds each Utility agent's private psychological valuation at run start.
        FFundamentalistRational mean-reversion agent anchored on $\mathrm{FV}_t$; the pinned rational background.
        TTrend followerPositive-feedback / momentum trader estimating slope from the last six prints.
        RRandom (ZI)Gode–Sunder zero-intelligence trader that posts uniform bids/asks.
        EExperiencedDLM horizon-aware agent; discounts belief by a factor $\varphi(h)$ that decays in late periods.
        UUtilityLopez-Lira 2025 EU-maximizer agent with messaging/trust/deception.
        FVFundamental value$\mathrm{FV}_t = \mathbb{E}[d] \cdot (T - t + 1)$ — risk-neutral value at the start of period $t$.
        EUExpected utility$\mathrm{EU}(a) = p \cdot U(w_1) + (1-p)\cdot U(w_0)$ — the Utility agent's scoring functional.
        VWAPVolume-weighted average pricePer-period average trade price weighted by quantity; baseline for the trust EMA update.
        NDNormalized deviationTotal absolute mispricing, scaled by $T\cdot\mathrm{FV}_0 \cdot Q$ so runs with different N are comparable.
        Haessel R²Coefficient of determination of mean price against fundamental value.
        TOTurnoverTotal shares traded divided by total shares outstanding — reports speculative intensity.
        AEAllocative efficiencyRealized utility divided by the theoretical maximum utility given final endowments.

        Mathematical notation

        SymbolDefinitionWhere it appears
        $\mathrm{FV}_t$Fundamental value at the start of period $t$DLM 2005 — drives every strategy's prior
        $U_L, U_N, U_A$Risk-typed utility families: $(w/w_0)^2$, $w/w_0$, $\sqrt{w/w_0}$Lopez-Lira 2025 — EU scoring
        $\varphi(h)$Experience horizon-discount function with $h = T - t + 1$DLM Experienced agent prior
        $b_i \in \{-0.15, 0, +0.15\}$Persistent per-agent valuation biasLopez-Lira Utility agent prior
        $\varepsilon \sim \mathcal{U}[-0.03, 0.03]$Per-tick valuation noiseLopez-Lira prior jitter
        $\tau_{r \to s}$Trust of receiver $r$ in sender $s$, updated by EMA with $\alpha = 0.30$Lopez-Lira adaptive belief blend
        $\hat V_i$Agent $i$'s private subjective valuation; anchored by ChatGPT in Wang 2026Wang 2026 psychological anchor
        $p_{\text{fill}} = 0.30$Assumed fill probability for a non-crossing (passive) quoteLopez-Lira EU scoring
        $Q$Total shares outstanding (conserved across time)Normalized deviation, turnover

        Figures

        1

        Transaction Price Trajectory vs Fundamental Value

        Tick-level price plotted against the deterministic step function $\mathrm{FV}_t$. Persistent excursions above the staircase mark the bubble; the final-period collapse is the crash.

        2

        Mispricing Magnitude

        Absolute departure $|p_t - \mathrm{FV}_t|$ filled as a red area; equivalent to Lopez-Lira's price-to-fundamental ratio $\rho_t$.

        3

        Trade Volume per Period

        Bar chart of per-period share quantity exchanged. A volume peak in the inflation phase followed by a cliff near $T$ is the SSW signature.

        4

        Transaction Density Heatmap

        Two-dimensional trade histogram over (price, period). Warm cells concentrate liquidity; compared against the $\mathrm{FV}_t$ staircase reveals rational vs speculative regimes.

        5

        Agent Action Timeline

        One row per agent, one cell per decision. Encodes {bid, ask, hold} and whether the submitted order was filled on the same tick.

        6

        Subjective Valuation · True vs Reported

        Each Utility agent's private belief $V_i^{\text{true}}$ with broadcast dots marking deceptive reports (ringed red).

        7

        Pairwise Trust Matrix

        Heatmap of $\tau_{r \to s}$ on $[0, 1]$ with the diagonal masked. Warm columns identify agents whose claims the population finds credible.

        Source papers

        TagCitationRole in this simulator
        DLM 2005Dufwenberg, Lindqvist & Moore, Bubbles and Experience: An Experiment, AER 95(5), 1731–1737Asset life, dividend shape, fundamental value, Experienced agent
        LL 2025Lopez-Lira, LLM Expected-Utility Market Makers (working paper)Utility agent, messaging, trust EMA, deception
        Wang 2026Wang, Merged DLM + LLM Psychological Asset Allocation (current)Combined E+U population with ChatGPT psychological anchor
        SSW 1988Smith, Suchanek & Williams, Bubbles, Crashes and Endogenous Expectations in Experimental Spot Asset Markets, Econometrica 56(5)Fundamentalist rational-anchor lineage
        DSSW 1990De Long, Shleifer, Summers & Waldmann, Positive-Feedback Investment Strategies, JF 45(2)Trend-follower momentum lineage
        GS 1993Gode & Sunder, Allocative Efficiency of Markets with Zero-Intelligence Traders, JPE 101(1)Zero-intelligence liquidity floor
        1 / 14

        Bubbles, Utility, and Psychology

        Three paradigms, one continuous double auction

        DLM 2005 Lopez-Lira 2025 Wang 2026

        Browser-based replication · vanilla JS · no build

        The paper: DLM 2005

        Dufwenberg, Lindqvist & Moore ran a finite-horizon experimental asset market with human subjects and showed that experience kills bubbles — round-4 veterans trade at fundamental value while round-1 novices inflate the price and crash.

        $$ \mathrm{FV}_t \;=\; \mathbb{E}[d] \cdot (T - t + 1), \qquad T = 10,\;\; \mathbb{E}[d] = 10\text{¢} $$

        Source: AER 95(5), 1731–1737

        Background agents (F · T · R)

        F · Fundamentalist

        $\text{buy if ask} < 0.98\,\mathrm{FV}_t$

        Rational mean-reversion anchor

        T · Trend

        $\text{bid}_1 = p + k\cdot\text{slope}$

        Positive-feedback / momentum

        R · Random (ZI)

        $\text{bid} \sim \mathcal{U}[0.7,\,1.1]\,\mathrm{FV}$

        Gode–Sunder liquidity floor

        Experienced · the DLM bubble-killer

        $$ \text{prior}_t \;=\; \varphi(h)\cdot \mathrm{FV}_t, \qquad h = T - t + 1 $$

        $\varphi$ is the horizon-discount function: naive first-timers keep $\varphi \approx 1$, once-played intermediates ramp down gradually, and veterans drive $\varphi \to 0$ in the last three periods — forcing them to refuse any buy above the shrinking $\mathrm{FV}_t$.

        Dial the naive / once-played / veteran split in the Experience preferences panel.

        Lopez-Lira 2025 · the Utility agent

        $$ \text{prior}_t \;=\; \mathrm{FV}_t \cdot (1 + b_i + \varepsilon), \quad b_i \in \{-0.15,\,0,\,+0.15\}, \quad \varepsilon \sim \mathcal{U}[-0.03,\,0.03] $$

        A persistent bias $b_i$ models "persistently optimistic / pessimistic / unbiased" archetypes; the per-tick noise $\varepsilon$ keeps decisions out of lockstep.

        Expected-utility scoring

        $$ \mathrm{EU}(a) \;=\; p_{\text{fill}} \cdot U(w_1) \;+\; (1 - p_{\text{fill}}) \cdot U(w_0), \qquad a^\star = \arg\max_a \mathrm{EU}(a) $$

        Risk-loving

        $U_L(w) = (w/w_0)^2$

        Convex — enjoys upside

        Risk-neutral

        $U_N(w) = w/w_0$

        Linear — prices at EV

        Risk-averse

        $U_A(w) = \sqrt{w/w_0}$

        Concave — fears downside

        Belief blending with peer messages

        $$ V_i^{\text{post}} \;=\; w \cdot V_i^{\text{prior}} \;+\; (1 - w) \cdot \tfrac{1}{|M|}\sum_{m \in M} \hat v_m $$

        Naive

        $w = 0.60$

        Listens freely

        Skeptical

        $w = 0.90$

        Barely moves

        Adaptive

        $w \leftarrow \tau\text{-weighted}$

        Per-sender trust

        Trust EMA

        $$ \tau_{r \to s} \;\leftarrow\; (1 - \alpha)\,\tau_{r \to s} \;+\; \alpha \cdot \max\!\Bigl(0,\,1 - \tfrac{|\hat v_s - \mathrm{VWAP}_t|}{\mathrm{VWAP}_t}\Bigr), \quad \alpha = 0.30 $$

        Receiver $r$'s trust in sender $s$ is reinforced when $s$'s broadcast valuation tracks the period's volume-weighted average trade price. Closeness is clamped to $[0, 1]$.

        Deception

        Under a deceptive strategy the Utility agent broadcasts a claim that differs from its private belief:

        $$ \hat v_s^{\text{report}} \neq V_s^{\text{true}}, \qquad \text{lie gap} = |\hat v_s^{\text{report}} - V_s^{\text{true}}| $$

        The lie-gap magnitude drives the trust EMA above and feeds the mean-lie-magnitude statistic in the Experimental Market-Quality Statistics table.

        Wang 2026 · merged market

        Seat DLM's Experienced agents alongside Lopez-Lira's Utility agents in the same continuous double auction. The question: where does the asset settle when half the population knows the fundamental staircase and the other half is driven by private psychological valuations?

        E · Experienced

        Bubble-suppressing, horizon-aware.

        U · Utility

        Bias, noise, messaging, deception.

        ChatGPT psychological anchor

        $$ \hat V_i \;\leftarrow\; \text{ChatGPT}(\text{agent}_i), \qquad \hat V_i \in [\,0.25\,\mathrm{FV}_0,\;1.75\,\mathrm{FV}_0\,] $$

        One parallel chat-completion per Utility agent at run start. The prompt encodes the agent's risk preference and bias mode; the returned number is clamped and used as the prior on the first decide tick, then the Lopez-Lira belief model takes over.

        Provider list + endpoint match the lying project's GPT roster.

        Research question

        Does the asset ultimately end up in the hands of the agent with the highest psychological valuation?
        $$ i^\star = \arg\max_{i \in U} \hat V_i \quad \stackrel{?}{\Longleftrightarrow} \quad \text{argmax}_i\; \text{inventory}_i(T) $$

        The Wang 2026 metric block reports top-holder vs max-$\hat V$ match / miss and the normalized valuation gap each tick so the answer is visible live.

        Market-quality statistics

        Haessel R²

        $R^2 = 1 - \tfrac{\sum (\bar p_t - \mathrm{FV}_t)^2}{\sum (\mathrm{FV}_t - \overline{\mathrm{FV}})^2}$

        Fit of mean price to fundamental staircase.

        Normalized deviation

        $\mathrm{ND} = \tfrac{\sum |p_t - \mathrm{FV}_t|}{T\cdot \mathrm{FV}_0 \cdot Q}$

        Total mispricing per share outstanding.

        Amplitude

        $A = \tfrac{\max_t r_t - \min_t r_t}{\mathrm{FV}_0}$

        Peak-to-trough residual range.

        Turnover

        $\mathrm{TO} = \tfrac{\sum q_t}{Q}$

        Speculative intensity.

        Try it

        Switch paradigms in the navbar. Dial the population in Experiment settings. For Wang 2026, paste a GPT key into the AI endpoint card and press Start — the status line reports how many agents got an anchor.

        DLM 2005 Lopez-Lira 2025 Wang 2026

        Keyboard: ← / → to navigate slides · F for fullscreen · Esc to exit