# BOZOS random-market recreation: frozen design

Frozen before batch execution: 2026-10-12, approximately 08:10 UTC.

## Scope and honest description

An original, illustrative recreation of the mechanism in Gode and Sunder (1993), using disclosed synthetic endowments. This is not an exact replication of their five experiments and is not a test of a modern AI model. The original article supplies aggregate curves, not a complete numeric assignment of units to individual traders. We have not recovered the original data/code. No simulation result has been computed as of this protocol.

## Source record

1. Gode, D. K. and Sunder, S. (1993), Journal of Political Economy 101(1), pp.119–137. DOI: https://doi.org/10.1086/261868. Accessible university scan: https://iiif.library.cmu.edu/file/Simon_box00035_fld02706_bdl0001_doc0001/Simon_box00035_fld02706_bdl0001_doc0001.pdf . Trading rules: printed pp.121–123. Metrics/results: pp.131–135. Verified 2026-10-12.
2. Blake LeBaron's university teaching implementation describes order-book mechanics and distinguishes finite from continuously replenished trader pools: https://people.brandeis.edu/~blebaron/classes/agentfin/GodeSunder.html . Consult as an independent check, not code to copy. Verified 2026-10-12.
3. Cliff and Bruten (1997), Zero is Not Enough. Primary author record: https://research-information.bris.ac.uk/en/publications/zero-is-not-enough-on-the-lower-limit-of-agent-intelligence-for-c/ . Original HP report mirror: https://shiftleft.com/mirrors/www.hpl.hp.com/techreports/97/HPL-97-141.pdf . Its critique concerns the generality of price convergence, especially asymmetric market designs. Do not conflate price convergence with surplus efficiency. Verified 2026-10-12.
4. Author's research page confirms the original article and existing animations: https://faculty.som.yale.edu/shyamsunder/research/ . Do not reuse its animation files without a suitable license. Existing public interactive demonstrations also exist; do not claim the first simulation.

## Historical mechanism, briefly

The original study used six buyers and six sellers, random integer quotes from 1–200, single-unit transactions, the earlier quote as the crossing price, and an empty order book after every trade. Each trader used its higher-value/lower-cost units first. The constrained treatment prevented bids above a unit's assigned value and asks below its cost. This is a per-unit no-loss restriction, not a cash-balance cap. Original machine sessions ran for 30 seconds; this recreation replaces wall time with a disclosed event clock.

## Our exact event algorithm

All money-like quantities are fictional integer points. No fees, financing, short selling, forecasts, resale or external news.

1. Twelve agents: B1–B6 and S1–S6. Each begins a period with six units. Buyers process values in descending order, sellers costs ascending.
2. At each attempted quote, select uniformly from all agents with at least one remaining unit. An agent with the current standing best quote stays eligible. Use a documented seeded PRNG, frozen implementation and independent run state.
3. Unconstrained treatment: draw one integer quote uniformly from [1,200], inclusive. Constrained treatment: buyer draws from [1,current value], seller from [current cost,200]. This directly samples the permitted range; it does not generate or count rejected proposals.
4. A buyer whose quote is at least the standing ask buys from that seller at the standing ask. A seller whose quote is at most the standing bid sells to that buyer at the standing bid. Crossing is checked before considering same-side improvement.
5. If no crossing occurs, a strictly better bid/ask replaces the best quote on that side. Equal/worse quotes are discarded. Preserve the standing quote's agent ID and unit index. The other side stays unchanged.
6. After a trade, advance the participating buyer's and seller's unit indices and clear both standing quotes. Record identities, indices, values, costs, price, per-party profit and event index.
7. Stop when either side has no inventory, or after 100,000 attempted quotes. In the constrained treatment also stop when the largest remaining current buyer value is strictly below the smallest remaining current seller cost. Ties remain eligible. Record the stop reason. Report capped runs; do not discard them.

These activation, strict-improvement, event-limit and RNG choices are explicit implementation choices, not recovered historical details. Do not compare compute speed or quote efficiency across treatments, since their sampling domains differ.

## Prespecified synthetic cohorts

Each row below describes one agent's six units unless stated otherwise. No rows may be tuned after seeing output.

A. Balanced, broad overlap. Every buyer: [180,160,140,120,100,80]. Every seller: [20,40,60,80,100,120].

B. Balanced, narrower overlap. Every buyer: [160,140,120,100,80,60]. Every seller: [40,60,80,100,120,140]. This is the prespecified MAIN visual, regardless of its results.

C. Ownership stress, same aggregate curves as B. B1 has six units each worth 160; B2 six each 140; B3 six each 120; B4 six each 100; B5 six each 80; B6 six each 60. S1 has six units each costing 40; S2 six each 60; S3 six each 80; S4 six each 100; S5 six each 120; S6 six each 140. This changes which trader controls the units without changing either aggregate schedule. It is our own stress test, not the Cliff–Bruten experiment.

D. Asymmetric schedule. Every buyer: [190,175,160,145,130,115]. Every seller: [20,30,50,90,140,190]. This is an additional disclosed robustness case; do not describe it as reproducing the historical critique.

## Metric and analytic fixtures

Primary measure: gains from trade captured = realized surplus / maximum feasible surplus, expressed as a percentage. Realized surplus is sum(value minus cost) across completed trades, equivalently sum of all buyer and seller profits. The transfer price affects the split, not the total.

To compute the maximum, flatten all 36 buyer units and sort descending; flatten all 36 seller units and sort ascending; sum positive differences for paired units. Do not count negative differences. Zero-surplus trades do not alter the maximum.

Analytically computed fixture values, not observed simulation outcomes:
- A maximum surplus: 2400 points; 24 strictly positive pairs, 30 nonnegative pairs. If all 36 units on both sides trade, the resulting total is 2160 points.
- B and C maximum surplus: 1440 points; 18 strictly positive pairs, 24 nonnegative pairs. Full-inventory total is 720 points.
- D maximum surplus: 2880 points; 24 strictly positive/nonnegative pairs. Full-inventory total is 2370 points.

The full-inventory totals are identities and useful QA checks, not a claim that a finite run will complete every trade. Never label efficiency as investment return, accuracy, intelligence or profit per trader.

## Seed plan and reporting

- Run seeds 0–999 for every cohort and treatment, independently initialized, with the same named PRNG and seeds used as paired run IDs. Do not imply identical realized quote paths; inventory evolution changes agent selection.
- Main replay seed: 42, cohort B. Freeze it now; do not swap for a more impressive run. A failed or uninteresting main replay is a reason to revise the editorial presentation honestly, not secretly choose a new seed.
- Store run-level results for all 8,000 runs, including event counts, trade counts, surplus, efficiency, and stop reasons. Store complete quote/trade traces for seed 42 in all cohorts/treatments.
- Report mean, median, empirical 5th/95th percentiles, and capped-run counts. Label the interval as across runs, not a confidence interval.
- No outcome number belongs in copy until real execution and independent checks complete. Do not insert the paper's 98.7% as our measured result.

## Minimum QA

- Determinism: same input and seed, identical output.
- Conservation: both parties reference the same trade; inventory decreases by exactly two total units; no reused unit.
- Accounting: buyer profit + seller profit = value minus cost for every trade; sum equals reported surplus.
- Constrained: every party's trade profit nonnegative; total never above maximum; no bad price bounds.
- Crossing: price equals the earlier standing quote, never midpoint or incoming quote.
- Standing orders cleared after every trade; exhausted agents cannot quote.
- Analytic fixtures above independently recalculated. A and B differ in overlap, B and C have identical aggregate multisets.
- All 8,000 rows retained. Inspect every capped run and explain its treatment in summaries.
- Test tiny cases with known results, including impossible trades, zero-surplus ties, a crossing, a worse quote and exhausted inventory.

## Editorial boundaries

The valid broad point is that observable coordination can arise from rules plus simple agents in a specific toy market. It does not establish that intelligence is irrelevant, that random bots outperform modern AI, that real-world markets are always efficient, or that this predicts stocks. Assigned private values/costs, sorted unit access, the auction protocol and a finite pool all do real work. Show a stress case or concise caveat. Keep price behavior secondary and descriptive.

Use our own code and graphics. Do not run historical executables, copy third-party source code without license review, or reuse academic animations. Credit the historical result. No external posting or public deployment is implied by this protocol.

## Implementation freeze (before first batch)

The implementation uses xorshift32, shifts 13/17/5, unsigned 32-bit state, initialized from the seed. Seed zero maps to 0x6d2b79f5 to avoid the absorbing zero state. Each activation consumes one pseudorandom variate and each quote consumes one more; an integer in [lo,hi] is lo+floor(u×(hi−lo+1)). JavaScript Math.imul is not needed. The pseudo-random generator is for reproducibility, not cryptography.

Optional secondary price diagnostics, frozen before runs: compute the competitive price interval from sorted schedules at the positive-surplus quantity k: lower=max(cost[k−1],value[k]), upper=min(value[k−1],cost[k]), with 1/200 boundaries. Root-mean-square distance of transaction prices from that interval is in fictional price points. First/last halves split after floor(n/2) trades. Report descriptively; this is not an intelligence score and a decline in error in one realization is not evidence of general convergence.
