SPB Git

spb/wp27_uqo

Public

paper: model/implementation/limitations/appendices; docs consistency fixes

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

6 changed files +315 −272

modified docs/assumptions.md +1 −1
@@ -8,7 +8,7 @@ Version 1.0, 2026-10-27. Each row states the assumption *as implemented* in `src
8 |---|---|---|---|---| 8 |---|---|---|---|---|
9 | A1 | Discrete model time: 600 ticks, outcomes on t ≥ 100; no calendar mapping | Defines the horizon of every metric | Avoids false precision; 30 dividend periods suffice for ACF/VR estimates (≥ 500 returns) | `n_ticks` 1,000 on the control (free); report whether rankings of cells change | 9 | A1 | Discrete model time: 600 ticks, outcomes on t ≥ 100; no calendar mapping | Defines the horizon of every metric | Avoids false precision; 30 dividend periods suffice for ACF/VR estimates (≥ 500 returns) | `n_ticks` 1,000 on the control (free); report whether rankings of cells change |
10 | A2 | Dividend every 20 ticks: D = μ + x + J, x_t = 0.98 x_{t−1} + 2 ε_t (cents), μ = 50 c, r = 0.25 % per period; one asset by default | Fundamental process; V ≈ 200.00 and P/D ≈ 400 | Persistent, stationary cash-flow state with a closed-form PV (brief §Economy) | Sweep ρ ∈ {0.95, 0.98}, σ ∈ {1, 2, 4} on the control (free) | 10 | A2 | Dividend every 20 ticks: D = μ + x + J, x_t = 0.98 x_{t−1} + 2 ε_t (cents), μ = 50 c, r = 0.25 % per period; one asset by default | Fundamental process; V ≈ 200.00 and P/D ≈ 400 | Persistent, stationary cash-flow state with a closed-form PV (brief §Economy) | Sweep ρ ∈ {0.95, 0.98}, σ ∈ {1, 2, 4} on the control (free) |
11−| A3 | **"Efficient price" = full-information PV** V_t = μ/r + x_t·ρ/(1 + r − ρ), risk-neutral, constant discount rate, no risk premium | Benchmark for `msd_log`, `mad_pct`, bubbles, absorption | The only unambiguous benchmark in a simulated economy; the latent state is never shown to agents | Also report deviations from the *public* PV (`public_value`) and from the end-of-run mean price | 11+| A3 | **"Efficient price" = full-information PV** V_t = μ/r + x_n/(1 + r − ρ) with x_n the latent deviation of the upcoming dividend, risk-neutral, constant discount rate, no risk premium | Benchmark for `msd_log`, `mad_pct`, bubbles, absorption | The only unambiguous benchmark in a simulated economy; the latent state is never shown to agents | Also report deviations from the *public* PV (`public_value`) and from the end-of-run mean price |
12 | A4 | Public PV = Kalman/HMM posterior on announced dividends; in the baseline (no jumps, one regime) the dividend reveals x_t exactly, so V^pub ≡ V | Information structure | Simplest case for calibration; **but it makes private signals redundant and H1 unidentified** | Confirmatory base uses noisy dividends (`jump_prob` 1, `jump_sigma` ≈ 4 c → SD(V^pub/V − 1) ≈ 0.5 %); both variants reported | 12 | A4 | Public PV = Kalman/HMM posterior on announced dividends; in the baseline (no jumps, one regime) the dividend reveals x_t exactly, so V^pub ≡ V | Information structure | Simplest case for calibration; **but it makes private signals redundant and H1 unidentified** | Confirmatory base uses noisy dividends (`jump_prob` 1, `jump_sigma` ≈ 4 c → SD(V^pub/V − 1) ≈ 0.5 %); both variants reported |
13 | A5 | No look-ahead: private signals s = x_t + N(0, σ²/precision) are about the *current* state; news reports x_t with noise; nobody sees future draws | Rules out mechanical information advantages | Standard in noisy rational-expectations settings | Unit test on the signal function; prompt audit (`prompting.py` builds only from `Observation`) | 13 | A5 | No look-ahead: private signals s = x_t + N(0, σ²/precision) are about the *current* state; news reports x_t with noise; nobody sees future draws | Rules out mechanical information advantages | Standard in noisy rational-expectations settings | Unit test on the signal function; prompt audit (`prompting.py` builds only from `Observation`) |
14 | A6 | Shock: latent jump in x at t = 300 revealed through dividends/news; placebo at t = 450. Baseline size 40 c (+8.4 % on V); confirmatory size 10 c (+2.1 %) | Event-study outcomes (`time_to_absorb`, `response_ratio`, local projections) | A sub-threshold (< 5 %) jump so that a lagged response is not counted as a bubble; placebo for falsification | Sizes 10/20/40 c on the control; `news_burst` variant | 14 | A6 | Shock: latent jump in x at t = 300 revealed through dividends/news; placebo at t = 450. Baseline size 40 c (+8.4 % on V); confirmatory size 10 c (+2.1 %) | Event-study outcomes (`time_to_absorb`, `response_ratio`, local projections) | A sub-threshold (< 5 %) jump so that a lagged response is not counted as a bubble; placebo for falsification | Sizes 10/20/40 c on the control; `news_burst` variant |
modified docs/model_cards.md +1 −1
@@ -77,7 +77,7 @@ One card per model or provider used or planned. Prices are USD per 1M tokens (in
77 | Field | Value | 77 | Field | Value |
78 |---|---| 78 |---|---|
79 | Implementation | `llm/library.py`: 7 standardized features of the observation (mispricing vs public PV, momentum, signal, inventory and cash ratios, spread, open-order flag); returns the recorded decision of one of the 5 nearest neighbours (seeded draw), limit price rescaled to the current mid | 79 | Implementation | `llm/library.py`: 7 standardized features of the observation (mispricing vs public PV, momentum, signal, inventory and cash ratios, spread, open-order flag); returns the recorded decision of one of the 5 nearest neighbours (seeded draw), limit price rescaled to the current mid |
80−| Source | Valid decisions recorded in the T1 gpt-5.4-nano runs (`results/library/nano_v1.npz`) | 80+| Source | Valid decisions recorded in the T1 gpt-5.4-nano runs (`results/library/gpt-5.4-nano_single.npz`) |
81 | Price | 0 | 81 | Price | 0 |
82 | Role | Scale arm at N = 1,000 and the "cached" side of the cached-vs-online comparison; runs are labelled provider `library` | 82 | Role | Scale arm at N = 1,000 and the "cached" side of the cached-vs-online comparison; runs are labelled provider `library` |
83 | Caveat | Not an adaptive agent; out-of-support at large N must be reported (distance diagnostics, `protocol.md` §5.4) | 83 | Caveat | Not an adaptive agent; out-of-support at large N must be reported (distance diagnostics, `protocol.md` §5.4) |
modified docs/protocol.md +5 −5
@@ -13,14 +13,14 @@ Version 1.0, 2026-10-27. Operational companion to `identification.md`. Every num
13 ## 2. Commands 13 ## 2. Commands
14 14
15 ```bash 15 ```bash
16−.venv/bin/python -m pytest tests # 23 tests (unit, property, integration) must pass 16+.venv/bin/python -m pytest tests # 24 tests (unit, property, integration) must pass
17 .venv/bin/ma run configs/baseline.yaml --seed 1 --out results/runs/baseline/seed0001 # one classical run (~0.5 s) 17 .venv/bin/ma run configs/baseline.yaml --seed 1 --out results/runs/baseline/seed0001 # one classical run (~0.5 s)
18 .venv/bin/ma budget configs/<design>.yaml --tokens-in 760 --tokens-out 230 # calls and USD before any live design 18 .venv/bin/ma budget configs/<design>.yaml --tokens-in 760 --tokens-out 230 # calls and USD before any live design
19 .venv/bin/ma design configs/<design>.yaml --workers 8 --cache results/cache/<design>.sqlite 19 .venv/bin/ma design configs/<design>.yaml --workers 8 --cache results/cache/<design>.sqlite
20 .venv/bin/ma design configs/<design>.yaml --cells share_25 --max-seeds 1 --cache ... # single cell / single seed 20 .venv/bin/ma design configs/<design>.yaml --cells share_25 --max-seeds 1 --cache ... # single cell / single seed
21 ``` 21 ```
22 22
23−`ma design` runs mock cells in parallel processes (`--workers`) and any cell with a live provider sequentially with a shared cache (the worker count is ignored for API cells). Existing `outcomes.json` files are reused, so an interrupted design resumes without re-calling the API. 23+`ma design` runs every cell in a process pool (`--workers`; the Makefile uses 3 for the pilot and 5 for the confirmatory design) with one shared SQLite decision cache (`results/cache/llm_cache.sqlite`). An existing run directory is reused only if its manifest `config_hash` equals the requested configuration's hash (otherwise it is deleted and re-run), so an interrupted design resumes without re-calling the API and a changed configuration can never pick up stale runs. Before relaunching after a code change, delete the design directory and make sure no pool worker is still alive (`pkill -f multiprocessing.spawn`).
24 24
25 ## 3. Phase 5a — mock dry-run (no cost) 25 ## 3. Phase 5a — mock dry-run (no cost)
26 26
@@ -68,7 +68,7 @@ Pilot pass criteria: validity ≥ 80 %, failures ≤ 10 %, cost per decision wit
68 | | poslimit_25 | `exchange.position_limit: 300` | 101–102 | 1,350 | 0.68 | 68 | | poslimit_25 | `exchange.position_limit: 300` | 101–102 | 1,350 | 0.68 |
69 | T5 fairness | mini_25_equalusd | mini_25 with `llm.usd_cap` = mean nano spend of share_25 (TBD ≈ 0.34) → decisions stop at equal USD | 101–103 | ≤ 630 mini | ≤ 1.01 | 69 | T5 fairness | mini_25_equalusd | mini_25 with `llm.usd_cap` = mean nano spend of share_25 (TBD ≈ 0.34) → decisions stop at equal USD | 101–103 | ≤ 630 mini | ≤ 1.01 |
70 | T6 extensions | k2_25 | two assets, `factor_loading: [0.7, 0.7]`, `statarb: 0.05` | 101–102 | 1,350 | 0.68 | 70 | T6 extensions | k2_25 | two assets, `factor_loading: [0.7, 0.7]`, `statarb: 0.05` | 101–102 | 1,350 | 0.68 |
71−| | library_1000 | `population.n_traders: 1000`, `llm.frozen_library: results/library/nano_v1.npz`, provider `library` | 101–110 | 0 | 0 | 71+| | library_1000 | `population.n_traders: 1000`, `llm.frozen_library: results/library/gpt-5.4-nano_single.npz`, provider `library` | 101–110 | 0 | 0 |
72 | | auction_25, interval_10 | call auction every 5 ticks; `decision_interval: 10` — **mock only** | 1–10 | 0 | 0 | 72 | | auction_25, interval_10 | call auction every 5 ticks; `decision_interval: 10` — **mock only** | 1–10 | 0 | 0 |
73 | **Confirmatory total** | | | | ≈ 66,000 | **≈ 33.3** | 73 | **Confirmatory total** | | | | ≈ 66,000 | **≈ 33.3** |
74 | Pilot (§4) | | | | 6,480 | 3.24 | 74 | Pilot (§4) | | | | 6,480 | 3.24 |
@@ -83,11 +83,11 @@ Tiers run T1 → T6; spend is reconciled after each tier (`sum(llm_usd)` over `o
83 83
84 ### 5.4 Frozen-library replay (T6) 84 ### 5.4 Frozen-library replay (T6)
85 85
86−Build the library from the T1 nano runs: `DecisionLibrary.from_runs([...T1 run dirs...]).save("results/library/nano_v1.npz")`. Replay at N = 1,000 with `activity` scaled by 100/N (as in `scripts/11_scale_benchmark.py`) so order flow per tick is constant. Report the nearest-neighbour distance distribution; if the median standardized distance at N = 1,000 exceeds the 90th percentile observed at N = 100, the arm is reported as out-of-support, not as evidence. 86+Build the library from the T1 nano runs: `DecisionLibrary.from_runs([...T1 run dirs...]).save("results/library/gpt-5.4-nano_single.npz")`. Replay at N = 1,000 with `activity` scaled by 100/N (as in `scripts/11_scale_benchmark.py`) so order flow per tick is constant. Report the nearest-neighbour distance distribution; if the median standardized distance at N = 1,000 exceeds the 90th percentile observed at N = 100, the arm is reported as out-of-support, not as evidence.
87 87
88 ## 6. Replication checklist 88 ## 6. Replication checklist
89 89
90−1. `git log -1` matches `freeze.json`; `pytest` passes (23 tests). 90+1. `git log -1` matches `freeze.json`; `pytest` passes (24 tests).
91 2. `ma design` of each tier reproduces `outcomes.parquet` from the cache (`--cache` path, `llm_cached_hits` = 1.0, zero USD). 91 2. `ma design` of each tier reproduces `outcomes.parquet` from the cache (`--cache` path, `llm_cached_hits` = 1.0, zero USD).
92 3. Every run directory has `manifest.json` with `config_hash`, `git_revision`, `prompt_version`, `price_assumptions`, `llm_usage`, `shocks`, `final_conservation_ok`. 92 3. Every run directory has `manifest.json` with `config_hash`, `git_revision`, `prompt_version`, `price_assumptions`, `llm_usage`, `shocks`, `final_conservation_ok`.
93 4. Analysis scripts read only `outcomes.parquet`, `ticks.parquet`, `trades.parquet`, `llm_decisions.parquet`; tables and figures are regenerated by one command (`paper/Makefile`). 93 4. Analysis scripts read only `outcomes.parquet`, `ticks.parquet`, `trades.parquet`, `llm_decisions.parquet`; tables and figures are regenerated by one command (`paper/Makefile`).
modified docs/research_log.md +1 −0
@@ -18,6 +18,7 @@ between the pre-analysis plan and the confirmatory runs, so that nothing is revi
18 | 11 | 21:12 | — | First git commit; pilot and confirmatory designs launched on the frozen revision | manifests now carry `git_revision` | **freeze** | 18 | 11 | 21:12 | — | First git commit; pilot and confirmatory designs launched on the frozen revision | manifests now carry `git_revision` | **freeze** |
19 | 12 | — | 5 | Pilot (3 seeds × {5, 25, 50 %}, gpt-5.4-nano) runs concurrently with the confirmatory design on the same revision; pilot seeds (1–3) are never pooled with confirmatory seeds (201–207) | time budget | the pilot's role is reduced to cost/validity/variance reporting; the seed count (7) was fixed by the USD cap, not by the pilot variance | 19 | 12 | — | 5 | Pilot (3 seeds × {5, 25, 50 %}, gpt-5.4-nano) runs concurrently with the confirmatory design on the same revision; pilot seeds (1–3) are never pooled with confirmatory seeds (201–207) | time budget | the pilot's role is reduced to cost/validity/variance reporting; the seed count (7) was fixed by the USD cap, not by the pilot variance |
20 | 13 | 22:05 | 6 | **Override bug**: `deep_update` merged leaf dictionaries, so `provider_mix: {openai: 1.0}` on the baseline `{mock: 1.0}` became a 50/50 mock/OpenAI mixture in every live cell (caught by a co-author reading run manifests). Leaf dicts now replace; regression test added; all live and classical designs discarded and relaunched on commit c1fdf6c | half of the "LLM" slots were the mock rule | **new freeze** (c1fdf6c); nothing from the discarded runs is used | 20 | 13 | 22:05 | 6 | **Override bug**: `deep_update` merged leaf dictionaries, so `provider_mix: {openai: 1.0}` on the baseline `{mock: 1.0}` became a 50/50 mock/OpenAI mixture in every live cell (caught by a co-author reading run manifests). Leaf dicts now replace; regression test added; all live and classical designs discarded and relaunched on commit c1fdf6c | half of the "LLM" slots were the mock rule | **new freeze** (c1fdf6c); nothing from the discarded runs is used |
21+| 14 | 22:40 | 6 | Orphaned pool workers from killed designs had kept writing runs after the directories were purged, and the resumable runner reused them (manifests with providers [mock, openai]); all workers killed, every run whose manifest hash differs from its cell's configuration deleted (3 pilot, 7 confirmatory), runner now resumes only on an identical `config_hash` (commit 74b1f46) | co-author audit of manifests | clean runs (6 pilot, 20 confirmatory) kept; discarded runs cost ≈ 12 USD of API calls that are reported in the cost accounting but never analysed |
21 22
22 Known deviations from `docs/identification.md` / `docs/protocol.md` (written before items 8–12): 23 Known deviations from `docs/identification.md` / `docs/protocol.md` (written before items 8–12):
23 - Noisy dividends (`jump_prob = 1`) were proposed to make V^pub ≠ V; item 8 achieves this through the timing of information instead (no jumps in the baseline). 24 - Noisy dividends (`jump_prob = 1`) were proposed to make V^pub ≠ V; item 8 achieves this through the timing of information instead (no jumps in the baseline).
modified paper/sections/theory.tex +2 −2
@@ -424,10 +424,10 @@ $L$, $\ell$ & position limit (per-agent order/position cap; \texttt{allow\_short
424 $\theta$, $h$ & \texttt{exchange.halt\_threshold}, \texttt{halt\_window}, \texttt{halt\_duration} (circuit breaker) \\ 424 $\theta$, $h$ & \texttt{exchange.halt\_threshold}, \texttt{halt\_window}, \texttt{halt\_duration} (circuit breaker) \\
425 $z$, $\sigma_z^2$ & noise-trader slots (\texttt{mix[noise]}, activity) \\ 425 $z$, $\sigma_z^2$ & noise-trader slots (\texttt{mix[noise]}, activity) \\
426 $N$ & \texttt{population.n\_traders} ($100$, $1{,}000$, $10{,}000$) \\ 426 $N$ & \texttt{population.n\_traders} ($100$, $1{,}000$, $10{,}000$) \\
427−$\tau$ & $R^2$ of the latent value $V_t$ on the mid price (post-warmup) or $1-\operatorname{Var}(V_t-P_t)/\operatorname{Var}(V_t)$ \\ 427+$\tau$ & not estimated directly; its simulator counterparts are the mean squared log pricing error \texttt{msd\_log} $=\overline{(\log P_t-\log V_t)^2}$ and the mean absolute deviation \texttt{mad\_pct}, both decreasing in informativeness \\
428 $\operatorname{Var}(P-v)$ & mean squared pricing error $(P_t-V_t)^2$ \\ 428 $\operatorname{Var}(P-v)$ & mean squared pricing error $(P_t-V_t)^2$ \\
429 $\bar\rho$, $\bar S$ & average pairwise correlation of signed order flow across agents; share of agent pairs with same-signed orders within a decision interval \\ 429 $\bar\rho$, $\bar S$ & average pairwise correlation of signed order flow across agents; share of agent pairs with same-signed orders within a decision interval \\
430−$\Delta P^\ast$, $T_\epsilon$ & crash depth after a shock event (\texttt{shocks}); time-to-absorb = ticks until $|P_t-V^{\mathrm{pub}}_t|$ re-enters a tolerance band \\ 430+$\Delta P^\ast$, $T_\epsilon$ & crash depth after a shock event (\texttt{shocks}); time-to-absorb = ticks until $|P_t/V_t-1|$ stays below 1\,\% for five consecutive ticks after the latent shock (\texttt{time\_to\_absorb}) \\
431 \hline 431 \hline
432 \end{tabular} 432 \end{tabular}
433 \end{table} 433 \end{table}
modified results/calibration/scale_benchmark.json +305 −263
@@ -2,372 +2,414 @@
2 { 2 {
3 "name": "scale_100", 3 "name": "scale_100",
4 "seed": 1, 4 "seed": 1,
5− "config_hash": "72ec6dde7c77c2e9", 5+ "config_hash": "13328f5e6f32990c",
6 "n_traders": 100, 6 "n_traders": 100,
7 "llm_share": 0.0, 7 "llm_share": 0.0,
8 "llm_share_traders": 0.0, 8 "llm_share_traders": 0.0,
9 "llm_share_orders": 0.0, 9 "llm_share_orders": 0.0,
10 "llm_share_volume": 0.0, 10 "llm_share_volume": 0.0,
11 "n_llm_decisions": 0, 11 "n_llm_decisions": 0,
12− "n_trades": 10295, 12+ "n_trades": 9483,
13− "wall_s": 0.5701620420441031, 13+ "wall_s": 0.561950541974511,
14− "msd_log": 0.00019286955904584808, 14+ "msd_log": 4.266113421084894e-05,
15− "mad_pct": 0.7310450811973923, 15+ "mad_pct": 0.4452912373334502,
16− "bias_pct": -0.15575191205753852, 16+ "bias_pct": -0.16250645419823648,
17− "vr5": 1.0718532448575135, 17+ "vr5": 1.2808238242517882,
18− "vr10": 1.2475793867974083, 18+ "vr10": 1.6956799240598435,
19− "vol_bp": 32.35812080767805, 19+ "vol_bp": 13.060749029694724,
20− "kurtosis": 10.234149771580848, 20+ "kurtosis": 35.01507543486031,
21− "acf_absr_1_10": 2.725430443480742, 21+ "acf_absr_1_10": 3.1656403290576316,
22− "acf_r_1": 0.040723476211249214, 22+ "acf_r_1": 0.00014962429838089104,
23− "spread_bp": 28.878447094188143, 23+ "spread_bp": 18.99330779045911,
24− "eff_spread_bp": 41.4787058741681, 24+ "eff_spread_bp": 24.641460001660576,
25− "depth5": 132.712, 25+ "depth5": 140.702,
26− "lambda_bp_100": 20.621638192405012, 26+ "lambda_bp_100": 12.598283607509806,
27− "resiliency": 0.6471442312753932, 27+ "resiliency": 0.6094844467069042,
28− "n_bubbles": 1, 28+ "n_bubbles": 0,
29− "bubble_amp": 0.080067123441383, 29+ "bubble_amp": 0.0,
30− "bubble_dur": 13.0, 30+ "bubble_dur": 0.0,
31− "max_dd": 0.05210182210339487, 31+ "max_dd": 0.028555868633532988,
32 "n_crashes": 0, 32 "n_crashes": 0,
33− "volume": 57653.0, 33+ "volume": 49533.0,
34 "n_halts": 0, 34 "n_halts": 0,
35 "share_ticks_halted": 0.0, 35 "share_ticks_halted": 0.0,
36− "time_to_absorb": 24.0, 36+ "time_to_absorb": 15.0,
37− "response_ratio": 1.0602789303452547, 37+ "response_ratio": 2.2490023898583673,
38− "pnl_fundamentalist": 17.656477071443046, 38+ "pnl_fundamentalist": 11.082209219493947,
39− "pnl_leveraged": 8.519706421361073, 39+ "pnl_leveraged": 1.4418651763278723,
40− "pnl_market_maker": 9.050950394737617, 40+ "pnl_market_maker": 5.710438916819656,
41− "pnl_meanrev": 4.209786017783919, 41+ "pnl_meanrev": 2.9877031781727115,
42− "pnl_noise": 7.296227416578166, 42+ "pnl_noise": 4.649299724803906,
43− "pnl_trend": 8.888541562040968, 43+ "pnl_trend": 2.136350462390413,
44− "gini_final": 0.27427592144984314, 44+ "gini_final": 0.27703259343488695,
45 "gini_initial": 0.2804114796674862, 45 "gini_initial": 0.2804114796674862,
46 "n_bankrupt": 0, 46 "n_bankrupt": 0,
47− "cancel_ratio": 0.15356339084771192, 47+ "cancel_ratio": 0.18065779169929522,
48− "reject_ratio": 0.010352588147036759, 48+ "reject_ratio": 0.00822239624119029,
49− "fill_ratio": 1.54463615903976, 49+ "fill_ratio": 1.4851996867658575,
50− "turnover": 5.643414799728445, 50+ "turnover": 4.935081466395112,
51− "mm_pnl": 9.050950394737619, 51+ "mm_pnl": 5.710438916819655,
52− "mm_inventory_abs": 447.8, 52+ "mm_inventory_abs": 450.4,
53− "n_orders": 13330 53+ "flow_corr_fundamentalist": 0.6081052996058153,
54+ "flow_corr_leveraged": 0.8056656086005239,
55+ "flow_corr_market_maker": 0.40285902309116894,
56+ "flow_corr_meanrev": 0.5240214666938758,
57+ "flow_corr_noise": 0.0021860282452096148,
58+ "flow_corr_trend": 0.5675547519775062,
59+ "n_orders": 12770
54 }, 60 },
55 { 61 {
56 "name": "scale_100", 62 "name": "scale_100",
57 "seed": 2, 63 "seed": 2,
58− "config_hash": "f50aac64012c79cc", 64+ "config_hash": "2220c87cfabc484c",
59 "n_traders": 100, 65 "n_traders": 100,
60 "llm_share": 0.0, 66 "llm_share": 0.0,
61 "llm_share_traders": 0.0, 67 "llm_share_traders": 0.0,
62 "llm_share_orders": 0.0, 68 "llm_share_orders": 0.0,
63 "llm_share_volume": 0.0, 69 "llm_share_volume": 0.0,
64 "n_llm_decisions": 0, 70 "n_llm_decisions": 0,
65− "n_trades": 10527, 71+ "n_trades": 10135,
66− "wall_s": 0.5802934590028599, 72+ "wall_s": 0.5950057920417748,
67− "msd_log": 0.0002888292585473304, 73+ "msd_log": 0.00011269807156550713,
68− "mad_pct": 0.9452873073912066, 74+ "mad_pct": 0.6999329907345704,
69− "bias_pct": -0.29914538754731906, 75+ "bias_pct": -0.1834133029306038,
70− "vr5": 1.5658770854218884, 76+ "vr5": 1.1206839869796097,
71− "vr10": 2.2323861312360114, 77+ "vr10": 1.2032701908196335,
72− "vol_bp": 19.93022805615968, 78+ "vol_bp": 21.182447653590852,
73− "kurtosis": 14.340120252000448, 79+ "kurtosis": 63.393307694350604,
74− "acf_absr_1_10": 2.5967756236642745, 80+ "acf_absr_1_10": 2.1232276887652786,
75− "acf_r_1": 0.20815586356877122, 81+ "acf_r_1": -0.12168840912844274,
76− "spread_bp": 24.364181008850423, 82+ "spread_bp": 24.508671511490352,
77− "eff_spread_bp": 34.16487033612486, 83+ "eff_spread_bp": 32.80287511527904,
78− "depth5": 146.782, 84+ "depth5": 144.488,
79− "lambda_bp_100": 12.733686146838773, 85+ "lambda_bp_100": 10.368067778921336,
80− "resiliency": 0.7132913644500204, 86+ "resiliency": 0.8008422153703116,
81− "n_bubbles": 1, 87+ "n_bubbles": 0,
82− "bubble_amp": 0.07461228907838036, 88+ "bubble_amp": 0.0,
83− "bubble_dur": 22.0, 89+ "bubble_dur": 0.0,
84− "max_dd": 0.04207449700924415, 90+ "max_dd": 0.0463212015900597,
85 "n_crashes": 0, 91 "n_crashes": 0,
86− "volume": 61390.0, 92+ "volume": 57065.0,
87 "n_halts": 0, 93 "n_halts": 0,
88 "share_ticks_halted": 0.0, 94 "share_ticks_halted": 0.0,
89− "time_to_absorb": 39.0, 95+ "time_to_absorb": 42.0,
90− "response_ratio": 0.31568646155126934, 96+ "response_ratio": 0.07229322625373641,
91− "pnl_fundamentalist": 12.858237774095874, 97+ "pnl_fundamentalist": 9.728163515969941,
92− "pnl_leveraged": 8.307969157398325, 98+ "pnl_leveraged": -0.5134044434277812,
93− "pnl_market_maker": 7.757582637283514, 99+ "pnl_market_maker": 5.311276871706401,
94− "pnl_meanrev": 4.448602248693099, 100+ "pnl_meanrev": 3.8280035905591077,
95− "pnl_noise": 6.090876220549884, 101+ "pnl_noise": 4.225801084530292,
96− "pnl_trend": 6.275541672164394, 102+ "pnl_trend": -2.012191826388961,
97− "gini_final": 0.3192748996527118, 103+ "gini_final": 0.31913008923115943,
98 "gini_initial": 0.3167311413076369, 104 "gini_initial": 0.3167311413076369,
99 "n_bankrupt": 0, 105 "n_bankrupt": 0,
100− "cancel_ratio": 0.17202363793600461, 106+ "cancel_ratio": 0.17056931248597293,
101− "reject_ratio": 0.011746901124243299, 107+ "reject_ratio": 0.011520909702999925,
102− "fill_ratio": 1.5172960507350821, 108+ "fill_ratio": 1.5164210368818734,
103− "turnover": 5.789452166802944, 109+ "turnover": 5.409157808667212,
104− "mm_pnl": 7.757582637283514, 110+ "mm_pnl": 5.311276871706401,
105− "mm_inventory_abs": 537.6, 111+ "mm_inventory_abs": 561.8,
106− "n_orders": 13876 112+ "flow_corr_fundamentalist": 0.6169346471443932,
113+ "flow_corr_leveraged": 0.8242786988340965,
114+ "flow_corr_market_maker": 0.333751587227477,
115+ "flow_corr_meanrev": 0.71243506190734,
116+ "flow_corr_noise": 0.03476489760506395,
117+ "flow_corr_trend": 0.8565784759401733,
118+ "n_orders": 13367
107 }, 119 },
108 { 120 {
109 "name": "scale_100", 121 "name": "scale_100",
110 "seed": 3, 122 "seed": 3,
111− "config_hash": "3d20d4f33dca1657", 123+ "config_hash": "1652fd3ac20740c7",
112 "n_traders": 100, 124 "n_traders": 100,
113 "llm_share": 0.0, 125 "llm_share": 0.0,
114 "llm_share_traders": 0.0, 126 "llm_share_traders": 0.0,
115 "llm_share_orders": 0.0, 127 "llm_share_orders": 0.0,
116 "llm_share_volume": 0.0, 128 "llm_share_volume": 0.0,
117 "n_llm_decisions": 0, 129 "n_llm_decisions": 0,
118− "n_trades": 10741, 130+ "n_trades": 10966,
119− "wall_s": 0.581291499955114, 131+ "wall_s": 0.5947290000040084,
120− "msd_log": 0.0001581647166691645, 132+ "msd_log": 7.309845091058393e-05,
121− "mad_pct": 0.7940933085313311, 133+ "mad_pct": 0.7194719580752089,
122− "bias_pct": -0.1457811073728486, 134+ "bias_pct": -0.006526704437844799,
123− "vr5": 1.4253673844532706, 135+ "vr5": 1.0296803187890688,
124− "vr10": 2.1997897604423264, 136+ "vr10": 1.4045586222425246,
125− "vol_bp": 18.747558012139187, 137+ "vol_bp": 22.217350658987264,
126− "kurtosis": 6.081260113112632, 138+ "kurtosis": 17.603931390316244,
127− "acf_absr_1_10": 2.4869862608002076, 139+ "acf_absr_1_10": 2.234583046044834,
128− "acf_r_1": 0.08038707277238923, 140+ "acf_r_1": 0.014418398132741888,
129− "spread_bp": 23.159298170155786, 141+ "spread_bp": 24.752507678158395,
130− "eff_spread_bp": 32.62440165728167, 142+ "eff_spread_bp": 37.87658823419071,
131− "depth5": 145.45, 143+ "depth5": 139.906,
132− "lambda_bp_100": 9.286127919988914, 144+ "lambda_bp_100": 13.897996957061956,
133− "resiliency": 0.7155986676930891, 145+ "resiliency": 0.532945437189439,
134 "n_bubbles": 0, 146 "n_bubbles": 0,
135 "bubble_amp": 0.0, 147 "bubble_amp": 0.0,
136 "bubble_dur": 0.0, 148 "bubble_dur": 0.0,
137− "max_dd": 0.030664395229982988, 149+ "max_dd": 0.028639909995842205,
138 "n_crashes": 0, 150 "n_crashes": 0,
139− "volume": 62973.0, 151+ "volume": 65743.0,
140 "n_halts": 0, 152 "n_halts": 0,
141 "share_ticks_halted": 0.0, 153 "share_ticks_halted": 0.0,
142− "time_to_absorb": 26.0, 154+ "time_to_absorb": 10.0,
143− "response_ratio": 0.5264625844839756, 155+ "response_ratio": 1.6271649201682974,
144− "pnl_fundamentalist": 13.05203477140921, 156+ "pnl_fundamentalist": 11.076389214723797,
145− "pnl_leveraged": 7.137665260941994, 157+ "pnl_leveraged": -0.4910219812423844,
146− "pnl_market_maker": 9.437974794622459, 158+ "pnl_market_maker": 6.7245953688727145,
147− "pnl_meanrev": 8.854861916786305, 159+ "pnl_meanrev": 6.267829548921491,
148− "pnl_noise": 8.383088043861747, 160+ "pnl_noise": 5.628234679518568,
149− "pnl_trend": 6.794934289244118, 161+ "pnl_trend": -1.7485030516832847,
150− "gini_final": 0.28354147912478633, 162+ "gini_final": 0.2858138745681142,
151 "gini_initial": 0.2820805035864161, 163 "gini_initial": 0.2820805035864161,
152 "n_bankrupt": 0, 164 "n_bankrupt": 0,
153− "cancel_ratio": 0.15596595007935363, 165+ "cancel_ratio": 0.15531763026409706,
154− "reject_ratio": 0.009955273409320444, 166+ "reject_ratio": 0.009778729478943612,
155− "fill_ratio": 1.5497042273842159, 167+ "fill_ratio": 1.5654532476802283,
156− "turnover": 5.99405210689453, 168+ "turnover": 6.273016670855323,
157− "mm_pnl": 9.437974794622459, 169+ "mm_pnl": 6.7245953688727145,
158− "mm_inventory_abs": 508.8, 170+ "mm_inventory_abs": 471.4,
159− "n_orders": 13862 171+ "flow_corr_fundamentalist": 0.6119780392329717,
172+ "flow_corr_leveraged": 0.7727630449923826,
173+ "flow_corr_market_maker": 0.7384719894286295,
174+ "flow_corr_meanrev": 0.6194062558718657,
175+ "flow_corr_noise": 0.06085899518277767,
176+ "flow_corr_trend": 0.6689081805252811,
177+ "n_orders": 14010
160 }, 178 },
161 { 179 {
162 "name": "scale_1000", 180 "name": "scale_1000",
163 "seed": 1, 181 "seed": 1,
164− "config_hash": "ee14f7c7fdd0c799", 182+ "config_hash": "274ecfd52b3464b5",
165 "n_traders": 1000, 183 "n_traders": 1000,
166 "llm_share": 0.0, 184 "llm_share": 0.0,
167 "llm_share_traders": 0.0, 185 "llm_share_traders": 0.0,
168 "llm_share_orders": 0.0, 186 "llm_share_orders": 0.0,
169 "llm_share_volume": 0.0, 187 "llm_share_volume": 0.0,
170 "n_llm_decisions": 0, 188 "n_llm_decisions": 0,
171− "n_trades": 11682, 189+ "n_trades": 11506,
172− "wall_s": 2.670115082990378, 190+ "wall_s": 2.6422452499973588,
173− "msd_log": 0.00018062420246409605, 191+ "msd_log": 4.459799490563131e-05,
174− "mad_pct": 0.8500964158284774, 192+ "mad_pct": 0.5614471743278486,
175− "bias_pct": -0.18426548373374133, 193+ "bias_pct": -0.15511334576246724,
176− "vr5": 2.025387100878808, 194+ "vr5": 1.1392675588226546,
177− "vr10": 3.2959357937833555, 195+ "vr10": 1.6692572723703871,
178− "vol_bp": 13.822478939583142, 196+ "vol_bp": 8.726812744253099,
179− "kurtosis": 8.487363422007448, 197+ "kurtosis": 8.700730924357568,
180− "acf_absr_1_10": 3.676658722746514, 198+ "acf_absr_1_10": 1.9389812585059079,
181− "acf_r_1": 0.287550868207432, 199+ "acf_r_1": -0.010783036772180954,
182− "spread_bp": 13.824129777426267, 200+ "spread_bp": 13.29861474159063,
183− "eff_spread_bp": 20.735460509724028, 201+ "eff_spread_bp": 18.843467334285577,
184− "depth5": 221.702, 202+ "depth5": 205.852,
185− "lambda_bp_100": 4.820764798328324, 203+ "lambda_bp_100": 4.340416339061836,
186− "resiliency": 0.7153936557542477, 204+ "resiliency": 0.7325175655995373,
187− "n_bubbles": 1, 205+ "n_bubbles": 0,
188− "bubble_amp": 0.07026257865057628, 206+ "bubble_amp": 0.0,
189− "bubble_dur": 11.0, 207+ "bubble_dur": 0.0,
190− "max_dd": 0.06061815440556961, 208+ "max_dd": 0.03116660312619135,
191 "n_crashes": 0, 209 "n_crashes": 0,
192− "volume": 71448.0, 210+ "volume": 67420.0,
193 "n_halts": 0, 211 "n_halts": 0,
194 "share_ticks_halted": 0.0, 212 "share_ticks_halted": 0.0,
195− "time_to_absorb": 24.0, 213+ "time_to_absorb": 0.0,
196− "response_ratio": 0.6796255487489661, 214+ "response_ratio": 0.404975000785493,
197− "pnl_fundamentalist": 12.22118924232089, 215+ "pnl_fundamentalist": 6.729056031841567,
198− "pnl_leveraged": 8.85051472713129, 216+ "pnl_leveraged": 5.637427313317174,
199− "pnl_market_maker": 8.39873997810738, 217+ "pnl_market_maker": 5.313848759240008,
200− "pnl_meanrev": 4.758693065304863, 218+ "pnl_meanrev": 4.035185583879716,
201− "pnl_noise": 7.802552958684208, 219+ "pnl_noise": 4.970844080033762,
202− "pnl_trend": 8.986276033348616, 220+ "pnl_trend": 5.916862240206084,
203− "gini_final": 0.2858965594076205, 221+ "gini_final": 0.2854617843595489,
204 "gini_initial": 0.2855288797803193, 222 "gini_initial": 0.2855288797803193,
205 "n_bankrupt": 0, 223 "n_bankrupt": 0,
206− "cancel_ratio": 0.0687326986699075, 224+ "cancel_ratio": 0.06602917568227822,
207− "reject_ratio": 0.006886773344136115, 225+ "reject_ratio": 0.003280519299225239,
208− "fill_ratio": 1.5774762001215312, 226+ "fill_ratio": 1.6061980875270467,
209− "turnover": 0.6852169116725306, 227+ "turnover": 0.6522142457190135,
210− "mm_pnl": 8.398739978107383, 228+ "mm_pnl": 5.313848759240008,
211− "mm_inventory_abs": 493.8, 229+ "mm_inventory_abs": 493.4,
212− "n_orders": 14811 230+ "flow_corr_fundamentalist": 0.1812877758345397,
231+ "flow_corr_leveraged": 0.24358914780429702,
232+ "flow_corr_market_maker": 0.16855157430290751,
233+ "flow_corr_meanrev": 0.20193002732113746,
234+ "flow_corr_noise": 0.007352094582687515,
235+ "flow_corr_trend": 0.21713676628286416,
236+ "n_orders": 14327
213 }, 237 },
214 { 238 {
215 "name": "scale_1000", 239 "name": "scale_1000",
216 "seed": 2, 240 "seed": 2,
217− "config_hash": "b16091b8bb39498f", 241+ "config_hash": "39b2c173ae4664a2",
218 "n_traders": 1000, 242 "n_traders": 1000,
219 "llm_share": 0.0, 243 "llm_share": 0.0,
220 "llm_share_traders": 0.0, 244 "llm_share_traders": 0.0,
221 "llm_share_orders": 0.0, 245 "llm_share_orders": 0.0,
222 "llm_share_volume": 0.0, 246 "llm_share_volume": 0.0,
223 "n_llm_decisions": 0, 247 "n_llm_decisions": 0,
224− "n_trades": 11629, 248+ "n_trades": 11341,
225− "wall_s": 2.6595235830172896, 249+ "wall_s": 2.593718208023347,
226− "msd_log": 0.00041330390214059054, 250+ "msd_log": 9.380893708595955e-05,
227− "mad_pct": 1.1917097910197463, 251+ "mad_pct": 0.7030094050861265,
228− "bias_pct": -0.15970070791396937, 252+ "bias_pct": -0.04239496346757861,
229− "vr5": 1.644328760768095, 253+ "vr5": 1.4143997446399388,
230− "vr10": 2.756869312033638, 254+ "vr10": 2.04652744673238,
231− "vol_bp": 12.118437319273784, 255+ "vol_bp": 10.246104277739805,
232− "kurtosis": 14.604102013472062, 256+ "kurtosis": 7.874784440120156,
233− "acf_absr_1_10": 2.6836877474394876, 257+ "acf_absr_1_10": 2.2459292375683555,
234− "acf_r_1": 0.02149103385973521, 258+ "acf_r_1": 0.12341838139966418,
235− "spread_bp": 12.264625299683127, 259+ "spread_bp": 14.86376488201993,
236− "eff_spread_bp": 19.045456466147648, 260+ "eff_spread_bp": 20.79134773830736,
237− "depth5": 243.088, 261+ "depth5": 248.952,
238− "lambda_bp_100": 5.2096578366086845, 262+ "lambda_bp_100": 5.1373327775436906,
239− "resiliency": 0.5268311406120124, 263+ "resiliency": 0.809942287932077,
240− "n_bubbles": 1, 264+ "n_bubbles": 0,
241− "bubble_amp": 0.07560512002649855, 265+ "bubble_amp": 0.0,
242− "bubble_dur": 33.0, 266+ "bubble_dur": 0.0,
243− "max_dd": 0.026409804187581987, 267+ "max_dd": 0.030708092485549177,
244 "n_crashes": 0, 268 "n_crashes": 0,
245− "volume": 72963.0, 269+ "volume": 70170.0,
246 "n_halts": 0, 270 "n_halts": 0,
247 "share_ticks_halted": 0.0, 271 "share_ticks_halted": 0.0,
248− "time_to_absorb": 55.0, 272+ "time_to_absorb": 40.0,
249− "response_ratio": 0.23023340213135676, 273+ "response_ratio": 0.07301615851627377,
250− "pnl_fundamentalist": 9.410087991005573, 274+ "pnl_fundamentalist": 5.242388952904068,
251− "pnl_leveraged": 8.06978747113479, 275+ "pnl_leveraged": 4.122740890775753,
252− "pnl_market_maker": 8.58296964348504, 276+ "pnl_market_maker": 4.750528108764787,
253− "pnl_meanrev": 7.3927831227808385, 277+ "pnl_meanrev": 4.3948817690041855,
254− "pnl_noise": 8.868638893094134, 278+ "pnl_noise": 4.8087790856789905,
255− "pnl_trend": 9.12795706441179, 279+ "pnl_trend": 4.207353638127365,
256− "gini_final": 0.2822291008133873, 280+ "gini_final": 0.28185452077762535,
257 "gini_initial": 0.2821557785325072, 281 "gini_initial": 0.2821557785325072,
258 "n_bankrupt": 0, 282 "n_bankrupt": 0,
259− "cancel_ratio": 0.07004048582995952, 283+ "cancel_ratio": 0.06047103755569701,
260− "reject_ratio": 0.011201079622132253, 284+ "reject_ratio": 0.005799561496569771,
261− "fill_ratio": 1.569365721997301, 285+ "fill_ratio": 1.6042152910389702,
262− "turnover": 0.6991975582965093, 286+ "turnover": 0.6682737860658555,
263− "mm_pnl": 8.58296964348504, 287+ "mm_pnl": 4.750528108764787,
264− "mm_inventory_abs": 483.22, 288+ "mm_inventory_abs": 485.56,
265− "n_orders": 14820 289+ "flow_corr_fundamentalist": 0.18370073935220338,
290+ "flow_corr_leveraged": 0.19047089945265988,
291+ "flow_corr_market_maker": 0.1967491510134189,
292+ "flow_corr_meanrev": 0.2217762315213713,
293+ "flow_corr_noise": 0.0088854995259112,
294+ "flow_corr_trend": 0.2426905842417079,
295+ "n_orders": 14139
266 }, 296 },
267 { 297 {
268 "name": "scale_1000", 298 "name": "scale_1000",
269 "seed": 3, 299 "seed": 3,
270− "config_hash": "bb000b72ba320264", 300+ "config_hash": "fd07f4872e9678a6",
271 "n_traders": 1000, 301 "n_traders": 1000,
272 "llm_share": 0.0, 302 "llm_share": 0.0,
273 "llm_share_traders": 0.0, 303 "llm_share_traders": 0.0,
274 "llm_share_orders": 0.0, 304 "llm_share_orders": 0.0,
275 "llm_share_volume": 0.0, 305 "llm_share_volume": 0.0,
276 "n_llm_decisions": 0, 306 "n_llm_decisions": 0,
277− "n_trades": 12209, 307+ "n_trades": 11025,
278− "wall_s": 2.7417157079908065, 308+ "wall_s": 2.5898144589737058,
279− "msd_log": 0.00021092782536451138, 309+ "msd_log": 4.3915838389987096e-05,
280− "mad_pct": 0.9236328359261194, 310+ "mad_pct": 0.5188634604617772,
281− "bias_pct": -0.17586691384915412, 311+ "bias_pct": -0.046929456624928534,
282− "vr5": 1.611910893920555, 312+ "vr5": 1.3221448319933091,
283− "vr10": 2.6070797852167216, 313+ "vr10": 1.7858937955551464,
284− "vol_bp": 13.820990551125412, 314+ "vol_bp": 10.451851715820833,
285− "kurtosis": 4.406283908221623, 315+ "kurtosis": 23.617737355507195,
286− "acf_absr_1_10": 1.749659430254234, 316+ "acf_absr_1_10": 3.3090798799738983,
287− "acf_r_1": 0.14228872111193444, 317+ "acf_r_1": -0.02597027489657522,
288− "spread_bp": 16.402115035292773, 318+ "spread_bp": 13.389367953115482,
289− "eff_spread_bp": 24.921946560889914, 319+ "eff_spread_bp": 19.168776766750792,
290− "depth5": 178.83, 320+ "depth5": 209.732,
291− "lambda_bp_100": 6.947876984339655, 321+ "lambda_bp_100": 5.675299684983716,
292− "resiliency": 0.5644120216956088, 322+ "resiliency": 0.8243452955880805,
293− "n_bubbles": 1, 323+ "n_bubbles": 0,
294− "bubble_amp": 0.06792151254244383, 324+ "bubble_amp": 0.0,
295− "bubble_dur": 11.0, 325+ "bubble_dur": 0.0,
296− "max_dd": 0.03714749884823354, 326+ "max_dd": 0.03415154749199578,
297 "n_crashes": 0, 327 "n_crashes": 0,
298− "volume": 77495.0, 328+ "volume": 64307.0,
299 "n_halts": 0, 329 "n_halts": 0,
300 "share_ticks_halted": 0.0, 330 "share_ticks_halted": 0.0,
301− "time_to_absorb": 38.0, 331+ "time_to_absorb": 2.0,
302− "response_ratio": 0.38870487487733535, 332+ "response_ratio": 0.9422059728212616,
303− "pnl_fundamentalist": 11.763531925432737, 333+ "pnl_fundamentalist": 8.163368835474088,
304− "pnl_leveraged": 12.30986340715177, 334+ "pnl_leveraged": 7.482149977000345,
305− "pnl_market_maker": 9.441394250152205, 335+ "pnl_market_maker": 6.467759551962172,
306− "pnl_meanrev": 7.062613962399257, 336+ "pnl_meanrev": 3.909678059648282,
307− "pnl_noise": 8.798699442629827, 337+ "pnl_noise": 6.052221963341724,
308− "pnl_trend": 11.794205881549368, 338+ "pnl_trend": 7.145788314430566,
309− "gini_final": 0.2887824703843839, 339+ "gini_final": 0.2883606405817487,
310 "gini_initial": 0.28816811800295694, 340 "gini_initial": 0.28816811800295694,
311 "n_bankrupt": 0, 341 "n_bankrupt": 0,
312− "cancel_ratio": 0.06202264946010008, 342+ "cancel_ratio": 0.06500290191526407,
313− "reject_ratio": 0.011324730050039505, 343+ "reject_ratio": 0.003990133488102147,
314− "fill_ratio": 1.607716618382934, 344+ "fill_ratio": 1.599680789320952,
315− "turnover": 0.7320112276259568, 345+ "turnover": 0.6165365938981018,
316− "mm_pnl": 9.441394250152207, 346+ "mm_pnl": 6.467759551962171,
317− "mm_inventory_abs": 505.64, 347+ "mm_inventory_abs": 500.08,
318− "n_orders": 15188 348+ "flow_corr_fundamentalist": 0.21833213263619425,
349+ "flow_corr_leveraged": 0.27583220335170927,
350+ "flow_corr_market_maker": 0.1479981781996154,
351+ "flow_corr_meanrev": 0.19060490917691542,
352+ "flow_corr_noise": 0.008272326182851597,
353+ "flow_corr_trend": 0.312039965563122,
354+ "n_orders": 13784
319 }, 355 },
320 { 356 {
321 "name": "scale_10000", 357 "name": "scale_10000",
322 "seed": 1, 358 "seed": 1,
323− "config_hash": "b20b7ea1893420e2", 359+ "config_hash": "cf1e0784983bcede",
324 "n_traders": 10000, 360 "n_traders": 10000,
325 "llm_share": 0.0, 361 "llm_share": 0.0,
326 "llm_share_traders": 0.0, 362 "llm_share_traders": 0.0,
327 "llm_share_orders": 0.0, 363 "llm_share_orders": 0.0,
328 "llm_share_volume": 0.0, 364 "llm_share_volume": 0.0,
329 "n_llm_decisions": 0, 365 "n_llm_decisions": 0,
330− "n_trades": 11885, 366+ "n_trades": 11123,
331− "wall_s": 23.677518000011332, 367+ "wall_s": 23.737372540985234,
332− "msd_log": 0.0003067595731653351, 368+ "msd_log": 7.441850757126039e-05,
333− "mad_pct": 1.2324887935614917, 369+ "mad_pct": 0.749043336362881,
334− "bias_pct": -0.005074964908155267, 370+ "bias_pct": 0.10881212943287366,
335− "vr5": 1.5681375271456242, 371+ "vr5": 1.1739064526952574,
336− "vr10": 2.5294578246021526, 372+ "vr10": 1.6744417894256225,
337− "vol_bp": 10.572758594723124, 373+ "vol_bp": 5.5793268470698685,
338− "kurtosis": 4.752405591681221, 374+ "kurtosis": 20.562572058837862,
339− "acf_absr_1_10": 3.335881681903191, 375+ "acf_absr_1_10": 3.5598949849067014,
340− "acf_r_1": 0.09791372200435924, 376+ "acf_r_1": -0.1448973966918179,
341− "spread_bp": 10.897921046050657, 377+ "spread_bp": 9.536466029426055,
342− "eff_spread_bp": 18.2037877380357, 378+ "eff_spread_bp": 11.7466253784327,
343− "depth5": 455.138, 379+ "depth5": 397.06,
344− "lambda_bp_100": 2.6356634482239287, 380+ "lambda_bp_100": 1.8309625750286647,
345− "resiliency": 0.379668239121855, 381+ "resiliency": 1.3502975380705582,
346− "n_bubbles": 1, 382+ "n_bubbles": 0,
347− "bubble_amp": 0.06949448067157304, 383+ "bubble_amp": 0.0,
348− "bubble_dur": 16.0, 384+ "bubble_dur": 0.0,
349− "max_dd": 0.04199416623989671, 385+ "max_dd": 0.01687673064069517,
350 "n_crashes": 0, 386 "n_crashes": 0,
351− "volume": 84806.0, 387+ "volume": 66327.0,
352 "n_halts": 0, 388 "n_halts": 0,
353 "share_ticks_halted": 0.0, 389 "share_ticks_halted": 0.0,
354− "time_to_absorb": 48.0, 390+ "time_to_absorb": 9.0,
355− "response_ratio": 0.3440702894130496, 391+ "response_ratio": 0.7125705166492834,
356− "pnl_fundamentalist": 9.880501047388295, 392+ "pnl_fundamentalist": 5.955015700660537,
357− "pnl_leveraged": 9.530656101327683, 393+ "pnl_leveraged": 5.907099944853895,
358− "pnl_market_maker": 9.1641097345847, 394+ "pnl_market_maker": 5.6798835853738945,
359− "pnl_meanrev": 8.715541449604128, 395+ "pnl_meanrev": 5.470757526892383,
360− "pnl_noise": 9.212122901393542, 396+ "pnl_noise": 5.705169840108752,
361− "pnl_trend": 9.50732656220052, 397+ "pnl_trend": 5.863998450226706,
362− "gini_final": 0.28254323570340967, 398+ "gini_final": 0.282549473263338,
363 "gini_initial": 0.282654480272589, 399 "gini_initial": 0.282654480272589,
364 "n_bankrupt": 0, 400 "n_bankrupt": 0,
365− "cancel_ratio": 0.01489140330342047, 401+ "cancel_ratio": 0.014714898835070508,
366− "reject_ratio": 0.020548835999479775, 402+ "reject_ratio": 0.005177464404932216,
367− "fill_ratio": 1.5457146573026401, 403+ "fill_ratio": 1.5154983309489747,
368− "turnover": 0.08007531890809352, 404+ "turnover": 0.06402693262156016,
369− "mm_pnl": 9.1641097345847, 405+ "mm_pnl": 5.6798835853738945,
370− "mm_inventory_abs": 480.866, 406+ "mm_inventory_abs": 487.6,
371− "n_orders": 15378 407+ "flow_corr_fundamentalist": 0.05825003390169506,
408+ "flow_corr_leveraged": 0.18770916233743581,
409+ "flow_corr_market_maker": 0.036910171635462584,
410+ "flow_corr_meanrev": 0.06386890242525427,
411+ "flow_corr_noise": 0.0017863715797973461,
412+ "flow_corr_trend": 0.17703015821496784,
413+ "n_orders": 14679
372 } 414 }
373 ] 415 ]
\ No newline at end of file
374 416
Menu

Theme