Skip to content

R3 — multi-seed comparison with error bars - #22

Merged
brianmmaina merged 1 commit into
mainfrom
research-r3-comparison
Aug 16, 2026
Merged

R3 — multi-seed comparison with error bars#22
brianmmaina merged 1 commit into
mainfrom
research-r3-comparison

Conversation

@brianmmaina

@brianmmaina brianmmaina commented Aug 16, 2026

Copy link
Copy Markdown
Owner

30 seeds, and the result is sharper and considerably more negative than the single run suggested.

Nothing is reproduced

Statistic Real ZI mean ± sd rel z
cancels / new 95.8% 87.8 ± 0.5 8% +17.3
executions / new 6.8% 14.3 ± 0.1 111% −50.3
effective spread 300 693 ± 9 131% −44.1
sign ACF lag 1 0.720 0.468 ± 0.006 35% +42.5
sign ACF lag 5 0.340 0.015 ± 0.008 96% +40.7
sign ACF lag 50 0.085 −0.001 ± 0.009 101% +9.4

This corrects my R2 writeup

R2 called the structural properties "broadly reproduced" from one seed, on the strength of an 88% cancel ratio against a real 96%.

With error bars that gap is 17 standard deviations. The model lands on 87.8% ± 0.5% every single time — internally consistent, and consistently in the wrong place. Being precise is not the same as being right, and one draw could not tell the difference. That is the argument for the multi-seed step existing at all.

Both columns are necessary

My first verdict logic used z alone and called trade-level kurtosis "reproduced" — ZI 175 against a real 11.8, which is 1,389% wrong with |z| = 1.4, purely because the model's variance is enormous.

So the table reports relative error too, and either column alone misleads in opposite directions:

  • large z, small rel — precise model, captures the phenomenon, misses the value
  • small z, large rel — noisy model, captures nothing, merely cannot be excluded

Verdicts now distinguish NOT reproduced, inconclusive (model too variable), and both ~0 (two numbers agreeing only because neither is far from zero).

The finding that survives

Sign autocorrelation fails in a specific, interpretable shape: 35% low at lag 1, 96% low by lag 5, nothing beyond. The lag-1 value is mechanical — one market order walking several levels prints several same-signed executions in the same instant — not memory.

Real flow decays over a hundred trades. The question is not whether correlation exists but how far it reaches, and deleting strategic behaviour deletes the reach while leaving the artifact.

Method note

compare.py imports stylized_facts.analyse rather than reimplementing it, so a difference in the analysis cannot masquerade as a difference in the market. The real side remains a single session with no error bar, which the doc states as a limit rather than glossing.

30 seeds, and the result is sharper and more negative than one run suggested.

Nothing is reproduced. The model's own variance is small enough that every real
value sits far outside it.

Corrects the previous writeup, which called the structural properties 'broadly
reproduced' from a single seed on the strength of an 88% cancel ratio against a
real 96%. With error bars that gap is 17 standard deviations: the model lands on
87.8% +/- 0.5% every time, consistently in the wrong place. Precise is not the
same as right, and one draw could not tell the difference.

Reports relative error alongside z because either alone misleads in opposite
directions. A precise model can be many sigma out while a few percent wrong; a
noisy one can be an order of magnitude wrong and one sigma away. Trade-level
kurtosis is the second case — 175 against 11.8, which is 1389% wrong and
|z| = 1.4, and a z-only verdict would have called it reproduced.

The sign-autocorrelation result stands and sharpens: 35% low at lag 1, 96% low
by lag 5, nothing beyond. The lag-1 value is mechanical, not memory.

compare.py imports stylized_facts.analyse rather than reimplementing it, so a
difference in the analysis cannot masquerade as a difference in the market.
@brianmmaina
brianmmaina merged commit 53a9302 into main Aug 16, 2026
11 checks passed
@brianmmaina
brianmmaina deleted the research-r3-comparison branch August 16, 2026 15:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant