SPB Git

spb/wp27_uqo

Public

calibration/scale artefacts regenerated on the frozen revision; implementation numbers updated

Simon-Pierre Boucher committed (Oct 27, 2026) parent d87f8d8 Browse files

23 changed files +237 −42

added paper/figures/fig_baseline_paths.pdf +0 −0

Binary file not shown.

added paper/figures/fig_classical_lambda_bp_100.pdf +0 −0

Binary file not shown.

added paper/figures/fig_classical_mad_pct.pdf +0 −0

Binary file not shown.

added paper/figures/fig_classical_max_dd.pdf +0 −0

Binary file not shown.

added paper/figures/fig_classical_n_bubbles.pdf +0 −0

Binary file not shown.

added paper/figures/fig_classical_spread_bp.pdf +0 −0

Binary file not shown.

added paper/figures/fig_classical_time_to_absorb.pdf +0 −0

Binary file not shown.

added paper/figures/fig_contagion_excess.pdf +0 −0

Binary file not shown.

added paper/figures/fig_contagion_spillover.pdf +0 −0

Binary file not shown.

added paper/figures/fig_wealth_depth.pdf +0 −0

Binary file not shown.

added paper/main.pdf +0 −0

Binary file not shown.

modified paper/sections/abstract.tex +1 −1
@@ -1 +1 @@
1−% abstract — to be written 1+Abstract to be written.
\ No newline at end of file
modified paper/sections/implementation.tex +2 −2
@@ -8,7 +8,7 @@ The simulator is a pure-Python package (\code{market\_agents}, about 3,900 lines
8 The package ships 24 tests in three groups.\footnote{\code{tests/unit}, \code{tests/property}, \code{tests/integration}; run with \code{make test}.} \emph{Unit tests} cover the book (price--time priority, limit orders never cross beyond their price, market orders walk the book and stop when it is empty, cancel and depth), the engine (a fill moves exactly the notional and fees, latency orders arrivals, each rejection reason, cancel releases the reservation, a market buy is capped by cash, dividends preserve conservation, a halt rejects new orders, a margin breach generates a liquidation), the LLM layer (lenient parsing versus strict schema, each validation rule, the budget cap halting calls) and the configuration override semantics. \emph{Property tests} use Hypothesis to generate random streams of up to 120 intents from six agents with partial activations, cancels, a maker rebate and a short time-to-live, and assert after every processed tick that the book is uncrossed and indexed consistently, that the ledger identities \eqref{eq:conservation} hold, that each account's reserved cash and lots equal the sums over its resting orders, and that no position is negative; a second property asserts that two executions of the same stream yield identical snapshots and identical event logs (determinism and replay). \emph{Integration tests} run the full simulation: an end-to-end classical run with 100 agents writing all artefacts, bit-for-bit determinism across runs, common random numbers across \code{llm\_share} (identical latent value paths and identical endowments and latencies of every non-replaced slot), a mock-LLM run whose realised shares and validity rate are within the expected bands, the \emph{zero-trade edge case} (a population of inactive market makers produces 30 ticks with a well-defined midpoint and no trades), and the logging and application of each shock kind. 8 The package ships 24 tests in three groups.\footnote{\code{tests/unit}, \code{tests/property}, \code{tests/integration}; run with \code{make test}.} \emph{Unit tests} cover the book (price--time priority, limit orders never cross beyond their price, market orders walk the book and stop when it is empty, cancel and depth), the engine (a fill moves exactly the notional and fees, latency orders arrivals, each rejection reason, cancel releases the reservation, a market buy is capped by cash, dividends preserve conservation, a halt rejects new orders, a margin breach generates a liquidation), the LLM layer (lenient parsing versus strict schema, each validation rule, the budget cap halting calls) and the configuration override semantics. \emph{Property tests} use Hypothesis to generate random streams of up to 120 intents from six agents with partial activations, cancels, a maker rebate and a short time-to-live, and assert after every processed tick that the book is uncrossed and indexed consistently, that the ledger identities \eqref{eq:conservation} hold, that each account's reserved cash and lots equal the sums over its resting orders, and that no position is negative; a second property asserts that two executions of the same stream yield identical snapshots and identical event logs (determinism and replay). \emph{Integration tests} run the full simulation: an end-to-end classical run with 100 agents writing all artefacts, bit-for-bit determinism across runs, common random numbers across \code{llm\_share} (identical latent value paths and identical endowments and latencies of every non-replaced slot), a mock-LLM run whose realised shares and validity rate are within the expected bands, the \emph{zero-trade edge case} (a population of inactive market makers produces 30 ticks with a well-defined midpoint and no trades), and the logging and application of each shock kind.
9 9
10 \paragraph{Computational performance.} 10 \paragraph{Computational performance.}
11−Table~\ref{tab:scale} reports the wall-clock time of a 600-tick baseline run as the population grows from 100 to 10,000 traders with the per-type activity scaled by $100/N$ so that order flow per tick is constant.\footnote{\code{scripts/11\_scale\_benchmark.py}; numbers from \code{results/calibration/scale\_benchmark.json}, single process on an Apple-silicon (arm64) laptop. The benchmark was produced at the calibration stage, before the final revision of the dividend timing; the engine code it exercises is unchanged.} A run takes 0.6~s at $N=100$ (three seeds: 0.57, 0.58, 0.58~s), 2.7~s at $N=1{,}000$ and 23.7~s at $N=10{,}000$, i.e.\ roughly linear in $N$ at fixed order flow, with 13,300--15,400 orders and 10,300--12,200 trades per run. The 480-run classical confirmatory design (16 cells $\times$ 30 seeds) completes in about one minute on six worker processes. Live LLM cells are bound by provider latency: with 25 LLM agents in four staggered batches a run makes about 690 calls at 2.5--3.2~s each, so a $\varphi=0.25$ run takes 6--8 minutes with eight concurrent requests (Appendix~\ref{app:repro}). 11+Table~\ref{tab:scale} reports the wall-clock time of a 600-tick baseline run as the population grows from 100 to 10,000 traders with the per-type activity scaled by $100/N$ so that order flow per tick is constant.\footnote{\code{scripts/11\_scale\_benchmark.py}; numbers from \code{results/calibration/scale\_benchmark.json}, single process on an Apple-silicon (arm64) laptop, regenerated on the frozen code revision.} A run takes 0.6~s at $N=100$ (three seeds: 0.56, 0.6, 0.59~s), 2.6~s at $N=1{,}000$ and 23.7~s at $N=10{,}000$, i.e.\ roughly linear in $N$ at fixed order flow, with 12,770--14,679 orders and 9,483--11,506 trades per run. The 480-run classical confirmatory design (16 cells $\times$ 30 seeds) completes in about one minute on six worker processes. Live LLM cells are bound by provider latency: with 25 LLM agents in four staggered batches a run makes about 690 calls at 2.5--3.2~s each, so a $\varphi=0.25$ run takes 6--8 minutes with eight concurrent requests (Appendix~\ref{app:repro}).
12 12
13 \begin{table}[t] 13 \begin{table}[t]
14 \centering 14 \centering
@@ -22,7 +22,7 @@ Baseline configuration, 600 ticks, activities scaled by $100/N$; generated by \c
22 \end{table} 22 \end{table}
23 23
24 \paragraph{Calibration.} 24 \paragraph{Calibration.}
25−The classical baseline was calibrated once, before any LLM run, by a sweep over four behavioural parameters: fundamentalist aggressiveness $\{10,20,40\}$ lots per percent of mispricing, the combined trend-plus-leveraged share $\{0.10,0.15,0.25\}$ (split 60/40 between the two types and rebalanced against noise traders), the noise traders' market-order probability $\{0.3,0.6\}$ and the market makers' quote size $\{10,20\}$ lots---36 cells $\times$ 10 seeds $=360$ runs of 600 ticks.\footnote{\code{scripts/10\_calibration\_sweep.py}; cell means in \code{results/calibration/sweep\_summary.csv}.} The pre-stated criteria were those of the stylized-facts literature \citep{cont2001}: first-order return autocorrelation close to zero, excess kurtosis above~3, positive volatility clustering (positive sum of the first ten autocorrelations of absolute returns), a quoted spread of 10--30 basis points, and a tracking error $\overline{|P/V-1|}$ near 1\%. The retained cell (aggressiveness 20, trend-plus-leveraged share 0.10, market-order probability 0.6, quote size 20) has ACF$_1=0.015$, variance ratio VR(5) $=1.30$, excess kurtosis 26.6, $\sum_{1}^{10}\mathrm{ACF}|r|=2.71$, tick volatility 30~bp, quoted spread 24.1~bp, depth 141 lots, price impact 15.6~bp per 100 lots, 0.8 bubble episodes and a maximum drawdown of 5.2\% on average over ten seeds. The alternative with market-order probability 0.3 produced spreads of 6--12~bp but tracking errors of 2--3\% and ACF$_1$ of 0.2--0.3; the aggressiveness-40 cells reduced the tracking error below 1\% at the cost of positive return autocorrelation and larger drawdowns. The retained mix (25/6/10/50/5/4\%) and the three parameters are frozen in \code{configs/baseline.yaml} and were not revisited after the LLM pilot. 25+The classical baseline was calibrated once, before any LLM run, by a sweep over four behavioural parameters: fundamentalist aggressiveness $\{10,20,40\}$ lots per percent of mispricing, the combined trend-plus-leveraged share $\{0.10,0.15,0.25\}$ (split 60/40 between the two types and rebalanced against noise traders), the noise traders' market-order probability $\{0.3,0.6\}$ and the market makers' quote size $\{10,20\}$ lots---36 cells $\times$ 10 seeds $=360$ runs of 600 ticks.\footnote{\code{scripts/10\_calibration\_sweep.py}; cell means in \code{results/calibration/sweep\_summary.csv}.} The pre-stated criteria were those of the stylized-facts literature \citep{cont2001}: first-order return autocorrelation close to zero, excess kurtosis above~3, positive volatility clustering (positive sum of the first ten autocorrelations of absolute returns), a quoted spread of 10--30 basis points, and a tracking error $\overline{|P/V-1|}$ near 1\%. The retained cell (aggressiveness 20, trend-plus-leveraged share 0.10, market-order probability 0.6, quote size 20) has, under the final economy, ACF$_1=0.023$, variance ratio VR(5) $=1.23$, excess kurtosis 22.3, $\sum_{1}^{10}\mathrm{ACF}|r|=2.06$, tick volatility 18~bp, quoted spread 21.1~bp, depth 139 lots, price impact 11.1~bp per 100 lots, 0.0 bubble episodes and a maximum drawdown of 3.4\% on average over ten seeds. The cell was selected on the sweep run at the calibration stage; the sweep was regenerated on the frozen revision (after the dividend-timing revision) and the ranking is essentially unchanged: the aggressiveness-40 variant scores marginally better on the pre-stated criteria (tracking error 0.46\%, ACF$_1$ 0.042, kurtosis 11.8) and the retained cell is second; we kept the frozen cell rather than re-optimize after LLM runs had started. The alternatives with market-order probability 0.3 produce tracking errors of 0.8--1.9\% and ACF$_1$ of -0.10--0.23. The retained mix (25/6/10/50/5/4\%) and the three parameters are frozen in \code{configs/baseline.yaml} and were not revisited after the LLM pilot.
26 26
27 \paragraph{Stylized facts at the frozen revision.} 27 \paragraph{Stylized facts at the frozen revision.}
28 Table~\ref{tab:stylized_facts} summarises the 30 control runs of the classical confirmatory design (seeds 101--130) at the frozen code revision. Returns of the midpoint are uncorrelated at lag one (mean ACF$_1=-0.007$) with a variance ratio near one (VR(5) $=1.18$), heavy-tailed (excess kurtosis 20.4) and volatility-clustered ($\sum_1^{10}\mathrm{ACF}|r|=2.02$); the quoted spread averages 20.7~bp and the effective spread 30.4~bp, depth within five levels is 139 lots, price impact is 10.8~bp per 100 lots, the tracking error is 0.63\% and no run contains a bubble episode under the pre-specified 5\%/10-tick rule. Market makers earn 4.9\% over the run and the wealth Gini coefficient stays at 0.285. These are the properties against which every treatment is compared. 28 Table~\ref{tab:stylized_facts} summarises the 30 control runs of the classical confirmatory design (seeds 101--130) at the frozen code revision. Returns of the midpoint are uncorrelated at lag one (mean ACF$_1=-0.007$) with a variance ratio near one (VR(5) $=1.18$), heavy-tailed (excess kurtosis 20.4) and volatility-clustered ($\sum_1^{10}\mathrm{ACF}|r|=2.02$); the quoted spread averages 20.7~bp and the effective spread 30.4~bp, depth within five levels is 139 lots, price impact is 10.8~bp per 100 lots, the tracking error is 0.63\% and no run contains a bubble episode under the pre-specified 5\%/10-tick rule. Market makers earn 4.9\% over the run and the wealth Gini coefficient stays at 0.285. These are the properties against which every treatment is compared.
added paper/tables/tab_classical_cells.tex +22 −0
@@ -0,0 +1,22 @@
1+\begin{tabular}{lrrrrrrrr}
2+\toprule
3+Cell & Mean $|P/V-1|$ (\%) & Time to absorb (ticks) & Quoted spread (bp) & Price impact (bp/100 lots) & Bubble episodes & Max drawdown & Crashes & Vol. clustering $\sum_{1}^{10}\mathrm{ACF}|r|$ \\
4+\midrule
5+Control & 0.63 & 25.27 & 20.69 & 10.76 & 0.00 & 0.03 & 0.00 & 2.02 \\
6+Placebo shock & 0.52$^{***}$ & -- & 19.03$^{*}$ & 9.35$^{*}$ & 0.00 & 0.03 & 0.00 & 1.73$^{*}$ \\
7+Trend followers 16\% & 1.49$^{***}$ & 34.47 & 34.63$^{***}$ & 14.04$^{**}$ & 0.13$^{**}$ & 0.06$^{***}$ & 0.00 & 2.27 \\
8+Leveraged 19\% & 2.74$^{***}$ & 52.80$^{***}$ & 36.26$^{***}$ & 15.13$^{***}$ & 0.90$^{***}$ & 0.08$^{***}$ & 0.13$^{**}$ & 2.42$^{*}$ \\
9+Leveraged 19\% + funding shock & 2.96$^{***}$ & 60.43$^{***}$ & 38.00$^{***}$ & 16.49$^{***}$ & 1.37$^{***}$ & 0.09$^{***}$ & 0.30$^{***}$ & 2.39$^{*}$ \\
10+Market makers withdraw & 0.64 & 33.17$^{**}$ & 19.38 & 8.72$^{***}$ & 0.00 & 0.03 & 0.00 & 1.63$^{***}$ \\
11+Signal precision 0.5 & 0.60 & 24.97 & 20.27 & 9.52 & 0.00 & 0.03$^{*}$ & 0.00 & 2.03 \\
12+Signal precision 8 & 0.58 & 26.20 & 17.67$^{***}$ & 8.58$^{**}$ & 0.00 & 0.03$^{**}$ & 0.00 & 1.83 \\
13+Misleading news 50\% & 0.71$^{***}$ & 23.17 & 23.52$^{**}$ & 12.00 & 0.00 & 0.04$^{***}$ & 0.00 & 2.04 \\
14+Circuit breaker 5\% & 0.64$^{*}$ & 25.13 & 20.60 & 10.56 & 0.00 & 0.03 & 0.00 & 1.96 \\
15+Position limit 300 & 1.89$^{***}$ & 53.30$^{***}$ & 38.48$^{***}$ & 12.30 & 0.63$^{***}$ & 0.03 & 0.00 & 0.77$^{***}$ \\
16+Call auction (5 ticks) & 1.36$^{***}$ & 25.10 & -- & -2.83$^{***}$ & 0.13 & 0.06$^{***}$ & 0.00 & 0.24$^{***}$ \\
17+Mock LLM 25\% & 0.66 & 28.23 & 16.26$^{***}$ & 11.04 & 0.00 & 0.03 & 0.00 & 1.97 \\
18+Mock LLM 50\% & 0.68 & 28.30$^{*}$ & 13.57$^{***}$ & 12.36$^{*}$ & 0.00 & 0.03 & 0.00 & 2.40$^{**}$ \\
19+\midrule
20+Seeds per cell & 30 & & & & & & & \\
21+\bottomrule
22+\end{tabular}
\ No newline at end of file
added paper/tables/tab_classical_effects.tex +84 −0
@@ -0,0 +1,84 @@
1+\begin{tabular}{llrrrrr}
2+\toprule
3+Cell & Outcome & Control & Effect & 95\% CI & $d$ & $p$ (Holm) \\
4+\midrule
5+Placebo shock & Mean $|P/V-1|$ (\%) & 0.63 & -0.11$^{***}$ & [-0.16, -0.05] & -0.74 & 0.001 \\
6+ & Time to absorb (ticks) & -- & -- & [--, --] & -- & -- \\
7+ & Quoted spread (bp) & 20.69 & -1.66 & [-3.53, 0.20] & -0.33 & 0.156 \\
8+ & Bubble episodes & 0.00 & 0.00 & [0.00, 0.00] & -- & -- \\
9+ & Max drawdown & 0.03 & -0.00 & [-0.01, 0.00] & -0.17 & 0.352 \\
10+\addlinespace
11+Trend followers 16\% & Mean $|P/V-1|$ (\%) & 0.63 & 0.86$^{***}$ & [0.61, 1.12] & 1.26 & 0.000 \\
12+ & Time to absorb (ticks) & 25.27 & 9.20 & [-2.67, 21.07] & 0.29 & 0.124 \\
13+ & Quoted spread (bp) & 20.69 & 13.94$^{***}$ & [9.09, 18.78] & 1.07 & 0.000 \\
14+ & Bubble episodes & 0.00 & 0.13$^{*}$ & [0.00, 0.26] & 0.39 & 0.087 \\
15+ & Max drawdown & 0.03 & 0.03$^{***}$ & [0.02, 0.03] & 1.42 & 0.000 \\
16+\addlinespace
17+Leveraged 19\% & Mean $|P/V-1|$ (\%) & 0.63 & 2.11$^{***}$ & [1.43, 2.79] & 1.17 & 0.000 \\
18+ & Time to absorb (ticks) & 25.27 & 27.53$^{***}$ & [11.27, 43.80] & 0.63 & 0.002 \\
19+ & Quoted spread (bp) & 20.69 & 15.57$^{***}$ & [8.67, 22.46] & 0.84 & 0.000 \\
20+ & Bubble episodes & 0.00 & 0.90$^{***}$ & [0.45, 1.35] & 0.74 & 0.001 \\
21+ & Max drawdown & 0.03 & 0.04$^{***}$ & [0.03, 0.06] & 1.54 & 0.000 \\
22+\addlinespace
23+Leveraged 19\% + funding shock & Mean $|P/V-1|$ (\%) & 0.63 & 2.33$^{***}$ & [1.65, 3.01] & 1.29 & 0.000 \\
24+ & Time to absorb (ticks) & 25.27 & 35.17$^{***}$ & [18.92, 51.41] & 0.81 & 0.000 \\
25+ & Quoted spread (bp) & 20.69 & 17.31$^{***}$ & [10.47, 24.16] & 0.95 & 0.000 \\
26+ & Bubble episodes & 0.00 & 1.37$^{***}$ & [0.87, 1.86] & 1.03 & 0.000 \\
27+ & Max drawdown & 0.03 & 0.06$^{***}$ & [0.05, 0.07] & 1.66 & 0.000 \\
28+\addlinespace
29+Market makers withdraw & Mean $|P/V-1|$ (\%) & 0.63 & 0.01 & [-0.05, 0.07] & 0.06 & 0.735 \\
30+ & Time to absorb (ticks) & 25.27 & 7.90 & [0.01, 15.79] & 0.37 & 0.199 \\
31+ & Quoted spread (bp) & 20.69 & -1.31 & [-3.33, 0.72] & -0.24 & 0.396 \\
32+ & Bubble episodes & 0.00 & 0.00 & [0.00, 0.00] & -- & -- \\
33+ & Max drawdown & 0.03 & -0.00 & [-0.01, 0.00] & -0.29 & 0.361 \\
34+\addlinespace
35+Signal precision 0.5 & Mean $|P/V-1|$ (\%) & 0.63 & -0.03 & [-0.07, 0.02] & -0.20 & 0.864 \\
36+ & Time to absorb (ticks) & 25.27 & -0.30 & [-5.98, 5.38] & -0.02 & 1.000 \\
37+ & Quoted spread (bp) & 20.69 & -0.42 & [-2.32, 1.49] & -0.08 & 1.000 \\
38+ & Bubble episodes & 0.00 & 0.00 & [0.00, 0.00] & -- & -- \\
39+ & Max drawdown & 0.03 & -0.00 & [-0.01, 0.00] & -0.32 & 0.374 \\
40+\addlinespace
41+Signal precision 8 & Mean $|P/V-1|$ (\%) & 0.63 & -0.04 & [-0.11, 0.02] & -0.27 & 0.305 \\
42+ & Time to absorb (ticks) & 25.27 & 0.93 & [-6.53, 8.39] & 0.05 & 0.800 \\
43+ & Quoted spread (bp) & 20.69 & -3.02$^{***}$ & [-4.74, -1.29] & -0.65 & 0.005 \\
44+ & Bubble episodes & 0.00 & 0.00 & [0.00, 0.00] & -- & -- \\
45+ & Max drawdown & 0.03 & -0.01$^{*}$ & [-0.01, -0.00] & -0.44 & 0.067 \\
46+\addlinespace
47+Misleading news 50\% & Mean $|P/V-1|$ (\%) & 0.63 & 0.08$^{***}$ & [0.04, 0.12] & 0.74 & 0.001 \\
48+ & Time to absorb (ticks) & 25.27 & -2.10 & [-5.86, 1.66] & -0.21 & 0.263 \\
49+ & Quoted spread (bp) & 20.69 & 2.83$^{**}$ & [0.66, 4.99] & 0.49 & 0.025 \\
50+ & Bubble episodes & 0.00 & 0.00 & [0.00, 0.00] & -- & -- \\
51+ & Max drawdown & 0.03 & 0.00$^{**}$ & [0.00, 0.01] & 0.54 & 0.018 \\
52+\addlinespace
53+Circuit breaker 5\% & Mean $|P/V-1|$ (\%) & 0.63 & 0.02 & [-0.00, 0.03] & 0.32 & 0.371 \\
54+ & Time to absorb (ticks) & 25.27 & -0.13 & [-0.41, 0.14] & -0.18 & 0.651 \\
55+ & Quoted spread (bp) & 20.69 & -0.09 & [-0.21, 0.03] & -0.28 & 0.420 \\
56+ & Bubble episodes & 0.00 & 0.00 & [0.00, 0.00] & -- & -- \\
57+ & Max drawdown & 0.03 & 0.00 & [-0.00, 0.00] & 0.02 & 0.927 \\
58+\addlinespace
59+Position limit 300 & Mean $|P/V-1|$ (\%) & 0.63 & 1.26$^{***}$ & [0.86, 1.66] & 1.18 & 0.000 \\
60+ & Time to absorb (ticks) & 25.27 & 28.03$^{***}$ & [11.44, 44.63] & 0.63 & 0.005 \\
61+ & Quoted spread (bp) & 20.69 & 17.79$^{***}$ & [13.88, 21.70] & 1.70 & 0.000 \\
62+ & Bubble episodes & 0.00 & 0.63$^{***}$ & [0.24, 1.03] & 0.59 & 0.006 \\
63+ & Max drawdown & 0.03 & 0.00 & [-0.00, 0.01] & 0.09 & 0.633 \\
64+\addlinespace
65+Call auction (5 ticks) & Mean $|P/V-1|$ (\%) & 0.63 & 0.73$^{***}$ & [0.49, 0.97] & 1.12 & 0.000 \\
66+ & Time to absorb (ticks) & 25.27 & -0.17 & [-8.31, 7.97] & -0.01 & 0.967 \\
67+ & Quoted spread (bp) & -- & -- & [--, --] & -- & -- \\
68+ & Bubble episodes & 0.00 & 0.13 & [-0.03, 0.30] & 0.31 & 0.207 \\
69+ & Max drawdown & 0.03 & 0.02$^{***}$ & [0.02, 0.03] & 1.31 & 0.000 \\
70+\addlinespace
71+Mock LLM 25\% & Mean $|P/V-1|$ (\%) & 0.63 & 0.03 & [-0.06, 0.12] & 0.13 & 0.993 \\
72+ & Time to absorb (ticks) & 25.27 & 2.97 & [-3.12, 9.06] & 0.18 & 0.982 \\
73+ & Quoted spread (bp) & 20.69 & -4.43$^{***}$ & [-6.44, -2.43] & -0.82 & 0.000 \\
74+ & Bubble episodes & 0.00 & 0.00 & [0.00, 0.00] & -- & -- \\
75+ & Max drawdown & 0.03 & -0.00 & [-0.00, 0.00] & -0.03 & 0.993 \\
76+\addlinespace
77+Mock LLM 50\% & Mean $|P/V-1|$ (\%) & 0.63 & 0.05 & [-0.01, 0.12] & 0.30 & 0.284 \\
78+ & Time to absorb (ticks) & 25.27 & 3.03 & [-0.56, 6.62] & 0.32 & 0.284 \\
79+ & Quoted spread (bp) & 20.69 & -7.12$^{***}$ & [-8.79, -5.46] & -1.60 & 0.000 \\
80+ & Bubble episodes & 0.00 & 0.00 & [0.00, 0.00] & -- & -- \\
81+ & Max drawdown & 0.03 & -0.00 & [-0.01, 0.00] & -0.10 & 0.595 \\
82+\addlinespace
83+\bottomrule
84+\end{tabular}
\ No newline at end of file
added paper/tables/tab_contagion.tex +10 −0
@@ -0,0 +1,10 @@
1+\begin{tabular}{lrrrrrr}
2+\toprule
3+Cell & Return correlation & Fundamental correlation & Excess comovement & DY spillover (\%) & Mean $|P/V-1|$ (\%) & Max drawdown \\
4+\midrule
5+Two assets & -0.01 & 0.38 & -0.39 & 1.21 & 0.76 & 0.04 \\
6+Two assets + leveraged 19\% + funding shock & 0.02$^{*}$ & 0.34 & -0.32 & 1.25 & 11.82$^{***}$ & 0.12$^{***}$ \\
7+\midrule
8+Seeds per cell & 30 & & & & & \\
9+\bottomrule
10+\end{tabular}
\ No newline at end of file
added paper/tables/tab_dose_pilot.tex +23 −0
@@ -0,0 +1,23 @@
1+\begin{tabular}{lrrr}
2+\toprule
3+Outcome & 5\% & 25\% & 50\% \\
4+\midrule
5+Sq. log pricing error ($\times 10^{4}$) & 0.66 & 0.55 & 2.15 \\
6+Mean $|P/V-1|$ (\%) & 0.54 & 0.48 & 0.69 \\
7+Time to absorb (ticks) & 21.67 & 27.00 & 22.00 \\
8+Quoted spread (bp) & 17.93 & 11.58 & 11.27 \\
9+Price impact (bp/100 lots) & 10.34 & 8.08 & 13.41 \\
10+Bubble episodes & 0.00 & 0.00 & 1.00 \\
11+Max drawdown & 0.03 & 0.02 & 0.03 \\
12+Vol. clustering $\sum_{1}^{10}\mathrm{ACF}|r|$ & 2.79 & 2.34 & 3.83 \\
13+LLM order-flow corr. & 0.38 & 0.41 & 0.20 \\
14+LLM valid-decision rate & 0.92 & 0.96 & 0.93 \\
15+\midrule
16+Realized share of traders & 0.050 & 0.250 & 0.500 \\
17+Realized share of orders & 0.008 & 0.046 & 0.086 \\
18+Realized share of volume & 0.052 & 0.253 & 0.366 \\
19+API cost per run (USD) & 0.088 & 0.436 & 0.462 \\
20+\midrule
21+Seeds per cell & 3 & & \\
22+\bottomrule
23+\end{tabular}
\ No newline at end of file
added paper/tables/tab_llm_reliability_pilot.tex +9 −0
@@ -0,0 +1,9 @@
1+\begin{tabular}{lrrrrrrrrrr}
2+\toprule
3+Cell & Decisions & Valid & Hold & Market & JSON err. & Schema err. & Infeasible & API err. & Latency (s) & USD/run \\
4+\midrule
5+share\_25 & 2,066 & 0.958 & 0.12 & 0.04 & 0.000 & 0.000 & 0.042 & 0.000 & 2.84 & 0.44 \\
6+share\_5 & 411 & 0.922 & 0.13 & 0.05 & 0.000 & 0.000 & 0.078 & 0.000 & 2.86 & 0.09 \\
7+share\_50 & 4,128 & 0.934 & 0.38 & 0.09 & 0.014 & 0.008 & 0.044 & 0.000 & 1.47 & 0.46 \\
8+\bottomrule
9+\end{tabular}
\ No newline at end of file
added paper/tables/tab_scale.tex +9 −0
@@ -0,0 +1,9 @@
1+\begin{tabular}{rrrrrrrr}
2+\toprule
3+Traders & Seeds & Wall-clock (s) & Orders & Trades & Mean $|P/V-1|$ (\%) & ACF$_1$ & Spread (bp) \\
4+\midrule
5+100 & 3 & 0.6 & 13,689 & 10,521 & 0.82 & 0.11 & 25.5 \\
6+1,000 & 3 & 2.7 & 14,939 & 11,840 & 0.99 & 0.15 & 14.2 \\
7+10,000 & 1 & 23.7 & 15,378 & 11,885 & 1.23 & 0.10 & 10.9 \\
8+\bottomrule
9+\end{tabular}
\ No newline at end of file
added paper/tables/tab_stylized_facts.tex +22 −0
@@ -0,0 +1,22 @@
1+\begin{tabular}{lrrrr}
2+\toprule
3+Statistic & Mean & SD & Min & Max \\
4+\midrule
5+ACF$_1$ of returns & -0.007 & 0.146 & -0.292 & 0.312 \\
6+Variance ratio (5) & 1.18 & 0.29 & 0.69 & 1.79 \\
7+Excess kurtosis & 20.4 & 15.3 & 1.8 & 66.0 \\
8+Vol. clustering $\sum_{1}^{10}\mathrm{ACF}|r|$ & 2.02 & 0.59 & 0.68 & 3.71 \\
9+Tick volatility (bp) & 17.0 & 7.7 & 6.0 & 38.6 \\
10+Quoted spread (bp) & 20.7 & 5.0 & 13.0 & 38.6 \\
11+Effective spread (bp) & 30.4 & 10.3 & 17.4 & 69.2 \\
12+Depth, 5 levels (lots) & 139 & 5 & 133 & 150 \\
13+Price impact (bp/100 lots) & 10.8 & 3.9 & 5.4 & 22.3 \\
14+Mean $|P/V-1|$ (\%) & 0.63 & 0.15 & 0.41 & 0.98 \\
15+Bubble episodes & 0.00 & 0.00 & 0.00 & 0.00 \\
16+Max drawdown & 0.033 & 0.012 & 0.010 & 0.060 \\
17+MM P\&L (\%) & 4.9 & 1.2 & 1.9 & 7.1 \\
18+Wealth Gini (final) & 0.285 & 0.023 & 0.243 & 0.338 \\
19+\midrule
20+Runs (seeds) & 30 & & & \\
21+\bottomrule
22+\end{tabular}
\ No newline at end of file
added paper/tables/tab_threshold_sensitivity.tex +16 −0
@@ -0,0 +1,16 @@
1+\begin{tabular}{lllrrrrrrrrr}
2+\toprule
3+Design & Cell & Outcome & b3/c7 & b3/c10 & b3/c15 & b5/c7 & b5/c10 & b5/c15 & b8/c7 & b8/c10 & b8/c15 \\
4+\midrule
5+classical confirmatory & leverage heavy & n bubbles & +2.33 & +2.33 & +2.33 & +0.90 & +0.90 & +0.90 & +0.30 & +0.30 & +0.30 \\
6+classical confirmatory & leverage heavy & n crashes & +0.93 & +0.13 & +0.00 & +0.93 & +0.13 & +0.00 & +0.93 & +0.13 & +0.00 \\
7+classical confirmatory & leverage heavy funding shock & n bubbles & +2.27 & +2.27 & +2.27 & +1.37 & +1.37 & +1.37 & +0.47 & +0.47 & +0.47 \\
8+classical confirmatory & leverage heavy funding shock & n crashes & +1.23 & +0.30 & +0.00 & +1.23 & +0.30 & +0.00 & +1.23 & +0.30 & +0.00 \\
9+classical confirmatory & mock llm 50 indep & n bubbles & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 \\
10+classical confirmatory & mock llm 50 indep & n crashes & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 \\
11+classical confirmatory & trend heavy & n bubbles & +1.10 & +1.10 & +1.10 & +0.13 & +0.13 & +0.13 & +0.00 & +0.00 & +0.00 \\
12+classical confirmatory & trend heavy & n crashes & +0.07 & +0.00 & +0.00 & +0.07 & +0.00 & +0.00 & +0.07 & +0.00 & +0.00 \\
13+confirmatory openai & dose 025 & n bubbles & -0.17 & -0.17 & -0.17 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 \\
14+confirmatory openai & dose 025 & n crashes & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 & +0.00 \\
15+\bottomrule
16+\end{tabular}
\ No newline at end of file
modified results/calibration/sweep_summary.csv +36 −36
@@ -1,37 +1,37 @@
1 tr_fund_aggr,tr_trend_share,tr_noise_pm,tr_mm_qty,mad_pct,acf_r_1,vr5,kurtosis,acf_absr_1_10,vol_bp,spread_bp,depth5,lambda_bp_100,n_bubbles,max_dd,time_to_absorb,response_ratio,volume,pnl_market_maker 1 tr_fund_aggr,tr_trend_share,tr_noise_pm,tr_mm_qty,mad_pct,acf_r_1,vr5,kurtosis,acf_absr_1_10,vol_bp,spread_bp,depth5,lambda_bp_100,n_bubbles,max_dd,time_to_absorb,response_ratio,volume,pnl_market_maker
2−10.0,0.1,0.3,10,2.698,0.224,1.839,23.136,2.616,7.978,6.301,162.342,6.917,1.2,0.011,78.1,0.1,25228.5,7.271 2+10.0,0.1,0.3,10,0.978,0.169,1.467,14.596,1.416,3.242,5.636,164.452,3.977,0.0,0.007,64.8,0.057,24907.9,4.893
3−10.0,0.1,0.3,20,2.406,0.324,2.167,15.965,3.04,6.607,6.286,167.461,5.796,1.0,0.009,70.2,0.145,33156.6,7.445 3+10.0,0.1,0.3,20,0.963,0.077,1.175,12.188,1.013,4.206,6.049,166.962,3.866,0.0,0.008,66.2,0.064,32201.0,4.786
4−10.0,0.1,0.6,10,1.214,-0.047,1.166,28.66,1.986,29.876,27.839,108.39,16.617,1.0,0.054,47.5,0.427,51605.7,8.852 4+10.0,0.1,0.6,10,0.671,-0.081,0.962,26.406,2.128,19.262,24.083,105.141,10.441,0.0,0.034,17.7,0.571,50660.3,5.571
5−10.0,0.1,0.6,20,1.305,0.094,1.425,26.551,2.619,33.44,25.39,133.596,17.741,0.9,0.069,52.6,0.82,58637.0,8.279 5+10.0,0.1,0.6,20,0.729,0.019,1.223,12.694,1.75,22.151,21.399,133.709,13.722,0.0,0.036,15.9,0.637,55487.9,5.22
6−10.0,0.15,0.3,10,2.345,0.317,2.158,21.267,3.163,7.31,5.688,154.374,7.377,1.0,0.012,66.3,0.144,24564.1,8.051 6+10.0,0.15,0.3,10,1.188,0.015,1.135,21.676,1.102,4.765,5.259,157.583,4.588,0.0,0.01,60.3,0.065,22656.2,4.61
7−10.0,0.15,0.3,20,2.111,0.441,2.709,23.458,3.842,12.162,7.592,162.485,9.275,1.0,0.034,58.0,0.346,35963.7,7.762 7+10.0,0.15,0.3,20,1.361,0.096,1.335,25.203,1.623,7.984,6.564,162.016,6.443,0.0,0.025,63.3,0.094,31946.0,4.24
8−10.0,0.15,0.6,10,1.574,-0.104,0.943,24.229,1.663,42.329,33.998,104.189,13.755,0.5,0.071,23.0,0.805,56672.3,8.47 8+10.0,0.15,0.6,10,0.899,-0.142,0.778,20.01,1.665,30.995,27.523,103.859,13.629,0.0,0.046,11.5,0.389,52722.1,5.539
9−10.0,0.15,0.6,20,1.89,-0.068,1.034,18.693,2.112,56.106,40.324,131.659,23.987,1.0,0.087,52.8,1.057,68174.1,7.565 9+10.0,0.15,0.6,20,1.291,-0.093,0.94,18.843,2.305,43.777,33.827,130.731,18.204,0.1,0.066,29.2,0.71,64470.2,5.101
10−10.0,0.25,0.3,10,2.75,0.176,1.751,22.688,3.196,16.265,8.577,147.645,10.563,1.2,0.048,60.3,0.229,29710.8,8.098 10+10.0,0.25,0.3,10,1.513,0.054,1.208,37.405,2.408,10.885,7.06,148.044,7.317,0.4,0.034,44.1,0.092,24745.7,4.225
11−10.0,0.25,0.3,20,3.942,0.015,1.333,50.945,2.844,33.21,13.863,155.588,17.472,1.9,0.078,64.4,0.586,37391.3,6.227 11+10.0,0.25,0.3,20,1.899,0.026,1.223,26.648,2.137,29.507,15.737,156.823,12.595,0.4,0.065,45.6,0.7,46194.3,3.68
12−10.0,0.25,0.6,10,2.974,-0.119,0.89,51.116,1.875,47.254,30.151,122.282,13.292,1.6,0.089,55.3,0.604,46969.2,7.893 12+10.0,0.25,0.6,10,1.66,-0.155,0.792,24.444,1.72,48.769,33.807,119.557,13.594,0.4,0.071,33.7,-0.198,54535.3,6.071
13−10.0,0.25,0.6,20,3.869,-0.21,0.755,26.705,2.806,78.396,41.352,140.836,25.529,2.6,0.138,65.2,0.759,59707.4,8.35 13+10.0,0.25,0.6,20,2.318,-0.119,0.795,25.164,2.047,64.109,42.505,138.545,19.867,0.9,0.096,50.3,0.457,67601.7,5.17
14−20.0,0.1,0.3,10,2.845,0.183,1.738,13.742,2.354,4.229,5.654,162.888,4.125,1.0,0.005,86.8,0.122,25251.9,7.076 14+20.0,0.1,0.3,10,0.982,0.185,1.622,22.284,1.428,3.077,5.687,168.863,3.837,0.0,0.006,50.6,0.12,24649.0,4.849
15−20.0,0.1,0.3,20,2.082,0.252,1.996,37.613,2.793,9.246,6.508,174.172,6.416,1.1,0.014,61.2,0.194,33446.3,7.642 15+20.0,0.1,0.3,20,0.967,0.102,1.266,27.087,1.151,5.054,6.251,174.009,4.583,0.0,0.01,49.7,0.141,32652.8,4.779
16−20.0,0.1,0.6,10,0.993,-0.029,1.162,23.993,2.416,23.951,27.137,115.287,13.044,0.9,0.041,38.8,0.42,51833.1,8.632 16+20.0,0.1,0.6,10,0.704,-0.107,0.849,32.408,1.974,20.22,26.914,115.495,10.515,0.0,0.032,27.1,0.853,51211.8,5.615
17−20.0,0.1,0.6,20,0.992,0.015,1.295,26.641,2.709,30.071,24.105,140.887,15.617,0.8,0.052,35.9,0.708,59961.2,8.185 17+20.0,0.1,0.6,20,0.614,0.023,1.232,22.307,2.064,18.468,21.131,139.245,11.103,0.0,0.034,17.0,0.991,59037.3,5.51
18−20.0,0.15,0.3,10,2.236,0.262,2.172,24.276,3.559,8.018,6.263,162.027,7.353,1.1,0.014,68.7,0.144,25386.7,7.706 18+20.0,0.15,0.3,10,0.864,0.182,1.639,15.271,1.958,4.469,5.768,163.096,4.671,0.0,0.011,42.6,0.218,26201.7,4.962
19−20.0,0.15,0.3,20,2.177,0.216,1.941,29.122,3.207,14.069,9.231,166.845,9.358,1.1,0.033,64.3,0.362,37523.8,7.197 19+20.0,0.15,0.3,20,0.946,0.111,1.302,16.595,1.848,7.093,7.083,169.109,5.343,0.0,0.017,46.1,0.133,33355.4,4.859
20−20.0,0.15,0.6,10,1.612,-0.168,0.83,23.084,1.749,47.691,37.721,113.049,20.276,0.9,0.073,31.2,0.729,60030.9,8.26 20+20.0,0.15,0.6,10,0.801,-0.142,0.833,16.199,1.943,25.926,28.111,112.114,11.562,0.0,0.034,22.3,0.608,51237.3,5.45
21−20.0,0.15,0.6,20,1.816,-0.046,1.062,21.746,2.335,46.259,34.551,141.014,21.747,1.2,0.073,55.6,0.823,64856.1,8.284 21+20.0,0.15,0.6,20,0.78,-0.147,0.741,13.732,2.341,31.134,27.488,138.386,12.991,0.0,0.042,8.6,0.758,62707.6,5.277
22−20.0,0.25,0.3,10,2.876,0.14,1.615,35.269,3.131,13.373,7.595,153.125,11.246,1.3,0.033,57.8,0.251,25627.0,7.861 22+20.0,0.25,0.3,10,1.419,-0.035,1.104,30.875,2.34,15.688,8.657,154.122,8.415,0.2,0.043,44.2,0.087,29211.0,4.205
23−20.0,0.25,0.3,20,3.342,0.075,1.447,26.958,3.146,23.134,11.902,158.462,11.366,1.4,0.057,74.4,0.335,38279.4,6.737 23+20.0,0.25,0.3,20,1.523,-0.1,1.056,51.887,2.584,17.834,10.201,160.846,7.412,0.4,0.037,43.1,0.254,36525.0,4.64
24−20.0,0.25,0.6,10,3.061,-0.22,0.673,32.356,2.351,47.425,31.269,120.021,12.673,1.4,0.082,58.6,0.569,48578.1,7.489 24+20.0,0.25,0.6,10,1.185,-0.285,0.533,30.242,2.412,44.188,29.753,120.018,13.407,0.1,0.059,13.7,0.936,53442.6,5.232
25−20.0,0.25,0.6,20,2.85,-0.158,0.827,32.742,2.543,66.437,37.852,143.207,16.436,2.4,0.106,53.6,0.801,60073.2,9.156 25+20.0,0.25,0.6,20,2.292,-0.277,0.591,23.341,2.334,49.929,34.108,140.154,15.42,1.0,0.072,56.4,0.134,61570.7,5.16
26−40.0,0.1,0.3,10,2.607,0.225,1.889,11.382,2.826,5.019,6.034,172.531,4.548,1.1,0.009,80.7,0.104,26005.6,7.195 26+40.0,0.1,0.3,10,0.759,0.235,1.781,15.67,2.073,3.273,5.859,181.013,3.586,0.0,0.007,45.6,0.236,26141.3,5.05
27−40.0,0.1,0.3,20,2.572,0.299,1.986,12.065,2.432,5.7,6.598,178.882,5.285,1.0,0.011,77.6,0.123,33449.3,7.15 27+40.0,0.1,0.3,20,0.883,0.169,1.498,21.852,1.382,4.024,6.252,181.427,3.74,0.0,0.007,48.3,0.302,32725.6,4.868
28−40.0,0.1,0.6,10,0.951,-0.19,0.924,33.591,1.976,29.117,31.713,128.648,17.456,1.0,0.039,42.7,0.361,52872.6,8.731 28+40.0,0.1,0.6,10,0.502,-0.114,0.883,25.22,1.595,18.602,26.382,125.789,10.657,0.0,0.024,15.2,0.921,52325.5,5.7
29−40.0,0.1,0.6,20,0.777,-0.018,1.269,36.12,2.95,26.271,24.487,148.269,12.677,0.7,0.044,34.9,0.773,60686.5,8.494 29+40.0,0.1,0.6,20,0.456,0.042,1.311,11.775,1.828,10.895,16.857,150.514,7.814,0.0,0.023,12.7,0.795,52805.9,5.369
30−40.0,0.15,0.3,10,2.444,0.185,1.685,26.051,2.399,7.927,6.642,167.3,6.437,1.0,0.013,67.0,0.171,26182.2,7.321 30+40.0,0.15,0.3,10,0.903,0.19,1.665,18.268,1.858,3.753,6.006,169.688,3.47,0.0,0.009,48.6,0.177,25378.6,4.965
31−40.0,0.15,0.3,20,2.774,0.278,1.929,14.153,2.495,7.336,6.7,173.731,5.658,0.9,0.014,71.8,0.291,32708.6,6.872 31+40.0,0.15,0.3,20,1.026,0.109,1.28,23.791,1.701,5.634,6.936,175.87,4.599,0.0,0.012,52.5,0.254,32759.8,4.591
32−40.0,0.15,0.6,10,1.118,-0.214,0.823,28.983,2.198,43.606,36.385,123.25,14.558,1.1,0.056,38.2,0.532,60037.2,9.01 32+40.0,0.15,0.6,10,0.661,-0.195,0.719,16.247,1.46,27.587,30.849,124.445,9.5,0.0,0.031,15.0,0.549,60812.3,5.667
33−40.0,0.15,0.6,20,1.158,-0.235,0.752,27.588,2.143,52.854,35.691,149.249,19.608,0.6,0.076,45.2,0.9,72789.1,8.274 33+40.0,0.15,0.6,20,0.563,-0.208,0.732,30.237,2.304,27.558,24.812,152.206,11.647,0.0,0.041,13.4,0.957,62416.1,5.606
34−40.0,0.25,0.3,10,2.619,0.017,1.354,40.885,3.073,14.311,9.366,157.749,10.125,1.0,0.035,51.3,0.232,29271.7,7.698 34+40.0,0.25,0.3,10,1.121,0.009,1.268,33.824,2.534,10.569,8.569,159.023,5.753,0.1,0.023,48.3,0.151,28526.2,4.856
35−40.0,0.25,0.3,20,3.854,0.05,1.319,33.607,3.085,16.394,9.267,165.294,9.221,1.3,0.025,80.9,0.263,31602.9,7.09 35+40.0,0.25,0.3,20,1.767,-0.001,1.09,25.615,3.086,13.131,9.423,167.583,7.869,0.2,0.033,43.9,0.503,32887.7,4.038
36−40.0,0.25,0.6,10,2.414,-0.297,0.598,31.775,2.025,55.508,38.555,126.512,15.333,0.9,0.08,42.5,0.574,56636.1,8.981 36+40.0,0.25,0.6,10,1.272,-0.302,0.562,21.92,2.277,38.512,28.833,123.762,10.561,0.2,0.049,46.1,0.502,52833.1,5.428
37−40.0,0.25,0.6,20,3.22,-0.212,0.694,30.719,2.315,60.433,39.998,145.301,16.475,1.7,0.091,71.6,0.569,65920.7,7.354 37+40.0,0.25,0.6,20,1.836,-0.244,0.596,24.277,2.673,43.033,29.433,144.275,13.711,0.6,0.055,45.0,0.545,58499.3,5.831
modified results/tables/tab_scale.tex +3 −3
@@ -2,8 +2,8 @@
2 \toprule 2 \toprule
3 Traders & Seeds & Wall-clock (s) & Orders & Trades & Mean $|P/V-1|$ (\%) & ACF$_1$ & Spread (bp) \\ 3 Traders & Seeds & Wall-clock (s) & Orders & Trades & Mean $|P/V-1|$ (\%) & ACF$_1$ & Spread (bp) \\
4 \midrule 4 \midrule
5−100 & 3 & 0.6 & 13,689 & 10,521 & 0.82 & 0.11 & 25.5 \\ 5+100 & 3 & 0.6 & 13,382 & 10,194 & 0.62 & -0.04 & 22.8 \\
6−1,000 & 3 & 2.7 & 14,939 & 11,840 & 0.99 & 0.15 & 14.2 \\ 6+1,000 & 3 & 2.6 & 14,083 & 11,290 & 0.59 & 0.03 & 13.9 \\
7−10,000 & 1 & 23.7 & 15,378 & 11,885 & 1.23 & 0.10 & 10.9 \\ 7+10,000 & 1 & 23.7 & 14,679 & 11,123 & 0.75 & -0.14 & 9.5 \\
8 \bottomrule 8 \bottomrule
9 \end{tabular} 9 \end{tabular}
\ No newline at end of file
10 10
Menu

Theme