bnbagent.trade

Where protection binds, an always-on keeper is worth 200.1 bps of equity, and the gap opens when nobody is awake.

Across 800 paired price paths, an autonomous keeper and a modelled human operator were run against the same shocks, the same liquidators and the same venue rules. The gap between them is a gap in availability: it opens at 01:00, and it widens again on a second position.

200.1bps

median paired gap in cost-inclusive terminal equity, the keeper minus the modelled operator, on the 611 of 800 paths, 76.4%, where protection binds. Basis points of each path’s own opening equity.

pooled over all 800 paths the confirmatory median is 155.4 bps, 95% BCa 145.9 to 167.0, p = 3.4 × 10⁻¹¹⁷

-23.5 ptspositions per hundred a person on a realistic schedule loses when the same shock starts at 01:00 instead of 09:30; the agent moves 1.4 and its interval covers zero
+13.6 ptsthe agent's survival lead over an attentive person at three positions; at one position it is 3.0 and inside the noise

The pooled figure is the study’s confirmatory result and it is not the headline sentence, because the distribution of paired gaps has no middle: 68 paths are exact ties where both arms did the same thing, and 121 more differ by less than a keeper fee. The pooled median falls between two populations rather than inside either one, 44.7 bps below the median of the paths where protection bound, and 580 times the largest gap on any path where it did not. Figure 2 is that distribution.

The human arm is a model, not a measurement. Arm H2 is a published parameter set, a real schedule, phone notifications, sequential books, and none of it is fitted to this study’s data. Every human figure on this page carries modelled person for that reason. A reader who declines to accept a modelled baseline should read the agent against passive instead, a book that is never touched: 164.6 bps, agent ahead on 710 paths. Nothing here is a claim about money made or lost on BNB Chain mainnet, and no testnet balance is converted to dollars anywhere on this page.

What ran
16 cells, shock (4) × clock (2) × books (2), fully crossed, at 50 paths each. 800 paths, 4,000 arm-runs, 8,000 book-level ledgers. One price path is replayed across all five arms, which is why the tests are paired.
Evidence label
simulation on everything generated here; the human arms are modelled person. The venue is one Aave-V3-shaped rule tuple, not three integrations, and the liquidator is testnet-shaped, mainnet MEV is faster than it, which is a pre-registered way for the agent to lose that this study does not run.
Corrections
Five defects were found by four independent passes over this study. 3 of them flattered the agent, one took something back from it, and one moved the result in no direction at all. All five are in §0, with what was published beside what is published now.
Data
  • T1-runs.jsonl (23.8 MB), one JSON record per arm-path, with its full event ledger · not in the repository, see below
  • T1-paths.json (29.0 MB), the 800 exogenous price paths, before any arm touched them · not in the repository, see below
  • T1-cells.json (59 KB), per-cell summaries, one object per cell
  • T1-confirmatory.json (565 KB), every published statistic, machine-readable
  • T1-run-manifest.json (37 KB), seeds, frozen constants and the run's own checks

The two large ones are not committed, and saying so is the difference between a link and a data-availability statement: at 23.8 MB and 29.0 MB they are excluded by the repository’s own .gitignore and are regenerated rather than stored. What is committed is everything needed to regenerate them byte for byte, the per-cell seeds in T1-cells.json and the frozen constants and run checks in T1-run-manifest.json, plus every published statistic in T1-confirmatory.json. The two ledgers are available on request as a release asset.

Schema termix-sim/T1-mvp/v1, generated 2026-09-07T18:12:23.600Z.

Figure 1

Move the shock from working hours to 01:00 and the human on a schedule loses 23.5 of every hundred positions. The two arms that are always on move by less than this study can resolve.

0%25%50%75%100%positions kept, of 100agent, always onA78.5% · 09:3079.9% · 01:00+1.4 pts, covers zeroperson, always onH167.6%68.9%+1.2 pts, covers zeroperson, realisticH227.5%4.0%−23.5 pts overnightperson, asleep 23–07H328.5%5.6%−22.9 pts overnightnobody actsP3.1%3.1%0.0 pts, covers zero
simulationmodelled personn = 800 book ledgers per arm per clock · 400 paths per clockCSV
Show the data as a table
ArmShock startsAll fourgrindcrashwick-persistwick-1blocknight − work, pp
A · agent, always on09:300.7850.752 – 0.8151.0001.0000.5700.570–
A · agent, always on01:000.7990.767 – 0.8271.0001.0000.5800.6151.4-3.4 – 6.1 ·
H1 · human, always on09:300.6760.636 – 0.7141.0001.0000.3100.395–
H1 · human, always on01:000.6890.649 – 0.7261.0001.0000.3200.4351.2-4.7 – 7.3 ·
H2 · human, realistic09:300.2750.236 – 0.3180.7400.2350.0000.125–
H2 · human, realistic01:000.0400.027 – 0.0590.0350.0000.0000.125-23.5-28.3 – -18.8
H3 · human, asleep 23–0709:300.2850.245 – 0.3280.7800.2350.0000.125–
H3 · human, asleep 23–0701:000.0560.040 – 0.0790.1000.0000.0000.125-22.9-27.9 – -17.9
P · passive, never acts09:300.0310.021 – 0.0460.0000.0000.0000.125–
P · passive, never acts01:000.0310.021 – 0.0470.0000.0000.0000.1250.0-1.7 – 1.8 ·

Book-level survival as a fraction of positions kept. Each shock column is 200 book ledgers. The dimmer figure under a number is its 95% interval, and a · beside one means it covers zero, the arm moved, but not by more than this sample can resolve. The four shock columns carry no interval because the figure does not draw them and the study does not interval them; publishing a band beside a rate nobody estimated one for would be the same mistake in a table that it would be in a chart.

Start at 09:30 on a weekday. Five policies face the same shocks on the same price paths. The always-on agent keeps 78.5% of positions, the attentive person 67.6%, the person on a realistic schedule 27.5%. Doing nothing keeps 3.1%.

Now start the same shock at 01:00. Same paths, same liquidator draws, same venue rules; only the clock the shock starts on has changed. The second bar in every row is the night.

Only the two scheduled humans move. The realistic person loses 23.5 positions per hundred on an interval of -28.3 to -18.8; the same person with sleep forced loses 22.9. The night takes away the two shocks that had been leaving a person time.

The two always-on arms do not move by anything this study can resolve. The agent shifts 1.4 points on -3.4 to 6.1; the attentive person 1.2 on -4.7 to 7.3. Both cover zero. Neither policy has a clock in it.

Doing nothing is the floor, and survival is a secondary. Passive keeps 3.1% at either clock because every shock here liquidates an untouched book by construction. An arm that closed the whole position would survive everything, which is why the headline is terminal equity and not this axis.

How this figure was drawn, and what its intervals are

Book-level survival, the fraction of positions kept, for each of the five arms at each clock, over 800 book-level ledgers per arm per clock, drawn from 400 price paths. Cells are pooled by book count, because a three-book cell carries three times the books of a one-book one and pooling them any other way is the defect §0 is about. It is book survival and never portfolio survival for the same reason: a portfolio comes through only when every one of its books does, so at three books it is a three-of-three event and at one book a one-of-one, and the agent’s portfolio rate falls from 86.5% to 56.8% across that axis without any arm doing anything differently. Both are in the §3 table, side by side. The clock is the instant the shock starts, weekday 09:30 or 01:00 CST, and not an hour an operator chose.

The bars carry a 95% interval and it is the point of the figure. These are proportions estimated from a finite number of drawn paths, and at these rates the interval reaches ±4.3 points, so without one a reader cannot tell an arm that moved from an arm whose movement its own interval swallows. A, H1, P all move by an amount whose interval covers zero; only H2 and H3 move measurably, and those two, and only those two, carry a dashed rule down from their 09:30 level into their 01:00 row, so the collapse is a distance to look at rather than a subtraction to do. Wilson score rather than the textbook normal interval, because several of these rates sit at or beside 0% and 100% where a normal interval either leaves the unit range or collapses to a point of zero width, and over an effective sample size rather than the raw 800, because three books replayed against one price path are not three independent draws. That correction costs up to a factor of 1.76 of the nominal n and widens every band here. The interval on the change between the two clocks is not these two bands subtracted: it is a bootstrap that resamples whole paths, published beside them. All of it is exploratory and uncorrected, and all of it is computed by the study, exploratory.survivalUncertainty in T1-confirmatory.json, rather than by this page.

Rows are ordered by availability, not by height, and the two humans without a colour are the exploratory arms. Survival is a secondary here and can never be the headline, an arm that closes the whole position survives everything, and the primary barely moves on this axis: the median paired gap against the realistic human is 149.4 bps in working hours against 164.4 bps at night, because by 09:30 most paths are already in the cluster where protection binds. the full study is about that disagreement.

the same book-count weighting re-derives the study’s own per-arm and per-book-level rates exactly before anything is drawn

intervals read from the study, not computed here: Wilson score at 95% over the clustering-adjusted n, with the change between clocks from a 10,000-resample bootstrap over whole paths · exploratory, uncorrected

The night does not make the human worse at the shocks that were always going to beat them. It takes away the two that had been leaving them time. The realistic human keeps 74.0 of every hundred positions on the slow grind at 09:30 and 3.5 at 01:00, and 23.5 against 0.0 on the crash. On the two wicks the number is identical at both clocks, 0.0 either way on wick-persist and 12.5 either way on wick-1block, because three seconds is not enough for a person at any hour. That is also why this is a claim about availability rather than about skill: across the same axis the agent moves by 1.4 positions per hundred and the attentive human by 1.2, both upward, and neither of those two movements is a difference this study can resolve. The agent’s95% interval runs -3.4 to 6.1 points and the attentive human’s -4.7 to 7.3; both cover zero, and passive moves by exactly nothing on an interval of -1.7 to 1.8. Neither of those two policies has a clock in it at all, so what the figure shows there is variation in the exogenous paths and the liquidator draws. The realistic human’s -23.5 points, on an interval of -28.3 to -18.8, is on a different scale entirely, and that separation is the whole finding rather than the ranking of the five bars.

One oddity in the figure is better named than left to be found. H3 is H2 with sleep forced over 23:00–07:00, so it is strictly less available by construction and cannot really be better, and it measures very slightly better at both clocks, 28.5 against 27.5 in working hours and 5.6 against 4.0 at night. The two arms share the market and share the liquidator, but they draw availability from separate streams, keyed by arm name on purpose so that adding or removing an arm cannot perturb another arm’s draw. This one contrast is therefore paired on the exogenous world and unpaired on the very quantity it tests, which is why the study reports it as a null this design cannot resolve rather than as evidence that a sleep schedule does not matter.

0What four passes over this study found wrong with it

Defects found by four independent passes5one inflated a secondary about fourfold; every one is printed beside what replaced it
Of them that flattered the agent3one took something back from it, one moved nothing
The primary, before and after155.4 bpsunchanged, gaps are formed per path on that path's own equity, so none of the five could touch it

An independent replay recomputed every headline in this study from the stored ledgers, in a second language. Every one matched, including the primary. What it found instead were three defects in the analysis layer; a later independent verifier, reading the corrected document, found two more. Four of the five are the same mistake, a statistic computed over a sample that mixes the study’s one-book and three-book portfolios, on a scale the book count itself sets.

This section is at the front because one of the five was a fourfold inflation of a primary, and because three of them moved the published result in the direction the study is selling. An error that flatters the thing being measured is the one a reader is entitled to assume was left in on purpose.

  1. moved toward the agent · the second primary

    C1b's tail was selected on terminal equity in absolute numeraire over a sample that mixes one-book and three-book portfolios. The two clusters do not overlap, so no three-book path could enter the tail: what was printed as CVaR(5%) of 800 paths was arithmetically CVaR(10%) of the 400 one-book paths, and the effect was inflated about fourfold.

    127.3 bpscorrected to29.9 bps

  2. moved toward the agent · a renderer, and the test that guarded it

    The report rendered the engine-gaps table without its direction column, dropping, among others, the statement that one engine choice is worth the whole of a pre-registered loss in the agent's favour. The unit test that claimed to assert the disclosure only checked that the field was non-empty in the data structure.

    not printedcorrected toprinted, with a direction column

  3. moved toward the agent · the cost secondaries

    The gas table was computed over book records and labelled per arm-path, so the largest transaction count contradicted the mean transaction count printed two rows above it.

    max 1 tx per arm-pathcorrected tomax 3 tx per arm-path

  4. moved against the agent · the latency secondaries

    The agent's realised delay was pooled over three round-robin book offsets and printed against book 0's model band alone, which read as the agent missing its own latency model by six seconds. It does not: every book index is inside the band that book's own offset gives it.

    9.000–20.985 s against one bandcorrected toevery book index inside its own band

  5. moved neither way · the workload secondaries

    Protects and transactions per run were averaged over two levels whose support differs, 0 or 1 on a one-book run, 0 to 3 on a three-book one. The pooled mean is set by how many cells hold three books, not by anything an arm did, and it describes neither level.

    1.584 protects per run, pooledcorrected to0.865 at 1 book, 2.303 at 3

The primary is unchanged, and that is the check that any of this is trustworthy. C1’s gaps are formed per path and divided by that path’s own opening equity, so a one-book and a three-book pair enter on one scale and none of the five defects can touch it. If it had moved, something else would be broken.

And the correction to the second primary makes this study’s own point harder rather than easier. The tail gap fell from 127.3 bps to 29.9 bps, which puts it much further below the median gap than the superseded figure was, the worst 5% of paths are exactly where the shock outruns the agent and it is liquidated too. The estimand was fixed because it was wrong. Which way it happened to point is not the reason.

Four separate readings each found one more instance of one class and each was patched, so what the study carries now is a mechanism rather than a fifth patch: every summary the report prints is rebuilt three times, pooled, one-book only, three-book only, and every numeric leaf compared. 251 statistics swept, 37 moved by the book-count axis and therefore required to declare themselves, 0 undeclared. An undeclared leaf stops the run before a report is produced.

1How much, and how sure

C1 · median paired gap, pooled over every path155.4 bps95% BCa 145.9 to 167.0 · p = 3.4 × 10⁻¹¹⁷ two-sided
C1b · the same gap in the worst 5% of outcomes29.9 bps10.3 to 65.3 · corrected from 127.3 bps
Where protection binds200.1 bps611 of 800 paths, 76.4%

Two primaries were pre-registered and both were run, Holm-corrected over the family of two that this study actually contains rather than the family of four the plan lists for three tasks. Both tests are two-sided, which is the conservative choice against a pre-registered direction.

TestWhat it measuresGap95% CIp, two-sided
C1median paired gap in cost-inclusive terminal equity155.4 bps145.9 – 167.03.4 × 10⁻¹¹⁷
C1bgap in the CVaR(5%) tail of the same return29.9 bps10.3 – 65.3< 10⁻⁴

C1b’s p is the bootstrap’s own floor, not a measurement: 10,000 resamples were drawn and none crossed zero, so the honest statement is p < 1/(resamples + 1). Both gaps are in basis points of each path’s own opening equity, the endpoint is scale-free, so a one-book and a three-book portfolio enter on one scale.

The two numbers disagree by a factor of five and the disagreement is the finding. C1 says what protection is worth on a typical path where it binds; C1b says what it is worth in the worst 5% of outcomes, and there it is worth far less, because the paths in that tail are the ones where the shock outran the agent and it was liquidated too. An insurance product that is weakest exactly in the tail is a thing a buyer should be told, and it is why both were pre-registered.

Both are medians, and a median is only a summary of a population that has a middle. This one does not. Laid out path by path, the 800 paired gaps fall into two populations with an empty span between them: on 189 of them the two arms finish within 10 bps of each other, and on the rest the agent reaches the position and the modelled operator does not, or not in time. Nothing in this study lands between 0.3 bps and 32.2 bps, a two-order-of-magnitude hole, which is why the study’s 10 bps threshold does no work: any cut inside that hole gives the same three counts.

Figure 2

The gap has no middle, so the median describes no path: a quarter of the sample sits on zero and the rest is spread over two orders of magnitude above it.

paths per bar · bars equal width on a symmetric-log axis−10101001,0005,000gap in bps of opening equity, agent minus modelled personnothing between 0.3 and 32.2 bps68 exact ties121 under 10 bps611 protection bindsmedian where it binds · 200.1 bpspooled median · 155.4 bps
simulationmodelled personn = 800 paired paths · one row per path, not per cellCSV
Show the data as a table
From, bpsTo, bpsClusterPathsShare
-2.80.0under 10 bps222.8%
0.02.8exact tie688.5%
0.02.8under 10 bps9912.4%
24.934.8protection binds10.1%
34.847.5protection binds10.1%
47.563.9protection binds202.5%
63.984.9protection binds384.8%
84.9111.8protection binds486.0%
111.8146.4protection binds769.5%
146.4190.9protection binds11113.9%
190.9247.9protection binds475.9%
247.9321.2protection binds334.1%
321.2415.2protection binds283.5%
415.2536.0protection binds637.9%
536.0691.1protection binds10.1%
1,474.11,895.7protection binds465.8%
3,131.94,024.3protection binds334.1%
5,170.16,641.4protection binds658.1%
-2.86,641.4all paired paths800100.0%

Every one of the 800 paired gaps, laid out on one axis. Agent minus modelled person, in basis points of that path’s own opening equity, linear to 10 bps and logarithmic beyond.

68 paths are exact ties. Both arms were liquidated in the same state or both were untouched, and they finish identical to the wei.

121 more differ by less than a keeper fee, and then there is nothing at all between 0.3 and 32.2 bps. The 10 bps threshold does no work: any cut inside that hole gives the same three counts. The 22 paths where the agent finishes behind are the short bar left of zero.

On the remaining 611, protection binds. The agent reaches the position and the modelled operator does not, or not in time, and the median of those paths is 200.1 bps, the number in the hero.

The pooled median falls between the two populations. C1, the confirmatory result, is 155.4 bps: 44.7 bps below the material median and 580 times the largest gap on any path where protection did not bind. It describes no path, which is why both numbers are printed.

How this figure was drawn, and what its intervals are

Every one of the 800 paired gaps in cost-inclusive terminal equity, arm A minus arm H2, in basis points of each path’s own opening equity. Bars are counts of paths, not a density, and are not smoothed, a kernel would invent a shape across the empty span that is the whole finding. Every bar is the same width on the symmetric-log horizontal axis, linear to 10 bps, logarithmic beyond, the same scale as Figure 3, which makes one bar 2.8 bps wide at the left of the axis and 1,471 bps wide at the right. The dashed rule is the confirmatory pooled median, 155.4 bps.

every count tallied from T1-runs.jsonl and checked against the published mixture before drawing; material median off by 2.3 × 10⁻¹³ bps

The 22 paths on which the agent finishes behind the modelled human are in here too, as the short bar left of zero, at most 1.9 bps each. Every one of them comes from wick-1block, the shock that drops and then recovers, which is also the shock behind every gap above 1,000 bps, all 144 of them. The largest wins in this study come from the same shock seen from two sides, and the full study takes that up.

2In which conditions

Largest per-cell effect5,328 bpsthe wick that recovers, one book, at night
Smallest per-cell effect0.0 bpsthe slow grind in working hours, a person has three hours
Cells whose 95% interval reaches zero2 of 16the largest effects in the study are also its least certain

The pooled effect is an average over sixteen deliberately different worlds, and it hides almost everything. Split by cell, the agent is worth nothing at all on the slow grind during working hours, a 28% drift over eight hours leaves a human three hours of slack between crossing the trigger and health factor 1.0, and three hours is enough for anyone. On a 35% wick that prints for three seconds and stays down, it is worth four hundred basis points. On the wick that recovers, where being liquidated is the most expensive thing that happens anywhere in this study, it is worth fifty times that.

Figure 3

Where the shock leaves a human time, the agent is worth nothing; where it does not, it is worth two orders of magnitude more.

median gap, bps of opening equity · thick 50% · thin 95%0101001,0005,000wick-1block · 01:00 · 1 book5,328.5wick-1block · 09:30 · 1 book5,288.9wick-1block · 01:00 · 3 books1,816.7wick-1block · 09:30 · 3 books1,795.1wick-persist · 01:00 · 1 book425.4wick-persist · 09:30 · 1 book409.5wick-persist · 09:30 · 3 books266.2crash · 09:30 · 3 books169.2crash · 01:00 · 1 book169.1crash · 01:00 · 3 books168.9wick-persist · 01:00 · 3 books162.2crash · 09:30 · 1 book159.1grind · 01:00 · 3 books90.1grind · 01:00 · 1 book88.3grind · 09:30 · 1 book0.1grind · 09:30 · 3 books0.0pooled, C1 · 800 paths155.4
simulationmodelled personn = 800 paired paths · 16 cellsCSV
Show the data as a table
CellBooksnMedian gap, bps50% interval95% intervalA aheadH2 aheadTies
wick-1block-night-b11505,328.55,303.7 – 5,343.70.0 – 5,359.431712
wick-1block-work-b11505,288.95,272.4 – 5,306.10.0 – 5,341.829615
wick-1block-night-b33501,816.71,808.8 – 1,830.01,796.9 – 3,547.14424
wick-1block-work-b33501,795.11,790.4 – 1,806.11,783.5 – 1,818.94073
wick-persist-night-b1150425.4421.4 – 436.0400.6 – 446.640010
wick-persist-work-b1150409.5398.0 – 423.7386.4 – 438.233017
wick-persist-work-b3350266.2188.0 – 276.5151.3 – 280.94703
crash-work-b3350169.2163.4 – 173.0155.4 – 180.75000
crash-night-b1150169.1167.7 – 172.1165.6 – 188.55000
crash-night-b3350168.9166.1 – 171.4159.8 – 179.65000
wick-persist-night-b3350162.2152.0 – 200.9145.0 – 260.74604
crash-work-b1150159.1146.4 – 165.558.3 – 175.75000
grind-night-b335090.188.6 – 93.283.0 – 99.95000
grind-night-b115088.384.0 – 93.578.0 – 103.25000
grind-work-b11500.10.0 – 0.10.0 – 0.15000
grind-work-b33500.00.0 – 0.00.0 – 0.15000
C1 pooled · n=800–800155.4–145.9 – 167.07102268

Sixteen cells, largest effect first. Shock × clock × books, 50 paired paths each. The thick rule is the 50% interval and the thin one the 95%, both the study’s own bootstrap.

The wick that recovers carries the largest effects and the least certain ones. On both one-book wick-1block cells the 95% interval reaches all the way to zero, because a third of the paths are exact ties: the trough is long enough for the agent to act and long enough for a liquidator to reach the human too.

Where the shock leaves a person time, the agent is worth nothing. On the slow grind and the crash during working hours the median gap is a keeper fee at most; three hours of slack between the trigger and health factor 1.0 is enough for anyone.

Move the same two shocks to 01:00 and the gap opens. The person on a schedule is asleep, the agent is not, and the difference is the cost of a liquidation on that position.

The diamond is C1, pooled over all 800 paths, 155.4 bps with the study’s BCa interval. It is the confirmatory result and the least descriptive number on the figure.

How this figure was drawn, and what its intervals are

Median paired gap in cost-inclusive terminal equity, arm A minus arm H2, in basis points of each path’s own opening equity, one row per cell and n = 50 paired paths each. Thick rule 50%, thin rule 95%. The horizontal scale is symmetric-log, linear to 10 bps, logarithmic beyond, because the sixteen effects span 0.0 to 5,328 bps and a linear axis stacks twelve of them on the null rule. Rows run largest effect first; a dashed rule reaching the null is a cell whose lower bound the bootstrap could not lift off zero, not a very wide interval. The diamond below the separating rule is C1, pooled over all 800 paths, with the study’s own BCa interval.

Where these sixteen intervals come from. They are the study’s, not this page’s: a BCa bootstrap over that cell’s own 50 paired gaps, resampling pairs, so the pairing the design paid for survives, at 10,000 resamples, one seed per cell from the analysis block starting at 91,000, computed by sim/full.ts and published as medianGapAvsH2Ci95 and medianGapAvsH2Ci50 in T1-confirmatory.json. Until recently this page computed them itself, from the run ledger, because the study published seven pooled intervals and this figure needs sixteen per-cell ones; the arithmetic was right and it was still the wrong place, because a figure carrying a statistic the study does not publish is a statistic no reader can check. Exploratory and uncorrected, sixteen intervals, no Holm, no multiplicity adjustment of any kind, so the widest of sixteen is a maximum over sixteen draws rather than a finding. The acceleration is degenerate on all sixteen of them, as it is on C1’s, because the jackknife of a median takes two or three distinct values: each is in practice a bias-corrected percentile interval, and the artefact says so per row rather than letting the letters BCa imply an accuracy it does not have.

intervals read from T1-confirmatory.json, not computed here; every median re-derived from T1-runs.jsonl before drawing, worst disagreement with the published figure 4.2 × 10⁻¹⁷

Read the two widest intervals rather than the two largest dots. On both wick-1block one-book cells the 95% interval reaches all the way down to zero, because a third of the paths in each are exact ties, the trough is long enough for the agent to act, but also long enough for a liquidator to reach the human, and when both are seized in the same state they finish identical. The largest effects in this study are also its least certain, and a forest plot is the form that says so without being asked.

3How it was measured

Crossed cells · shock × clock × books1650 paired price paths each, 800 in all
Arm-runs, one price path replayed across five arms4,000the market and the searchers are shared; only an arm's own actions move its state
Book-level ledgers8,000every one regenerable byte for byte from the committed seeds and constants

A simulation, and the label is on every figure. One exogenous price path is generated first, a shock shape plus idiosyncratic volatility of 2.4% a day, measured on BNB Chain mainnet, and then replayed across all five arms. On a three-book cell the three liquidators are replayed too. The market and the searchers are therefore shared, only an arm’s own actions move its own state, and every test on this page is paired for that reason. An unpaired test would throw away the variance reduction the whole design exists to get.

3.1The five arms, and which two the confirmatory test is between

A · confirmatory
simulation the keeper. Unattended, evented, one protect per block round-robin across books. Its decision-to-execution latency is a measured input and is never zero.
H1 · exploratory
modelled person an attentive operator. Always at the screen, no operational error, threshold rules, and a total event-to-broadcast delay FASTER than the agent's. Sequential across books.
H2 · confirmatory
modelled person a realistically available operator. A published availability schedule by hour, phone notification at night, sequential books. This is the arm the confirmatory test compares against.
H3 · exploratory
modelled person H2 with sleep forced over 23:00–07:00 CST regardless of the schedule, which separates always on from smart.
P · exploratory
simulation never repays, never closes. It measures whether intervening helps at all, and it is the column left to a reader who rejects a modelled human.

Three of the five are models of a person and none of them is a measurement of one. Every parameter of H1, H2 and H3 is published and none is fitted to this study’s data, which is the most that can be said for a modelled comparator. The arm that would have settled it, a runnable rule-based comparator a reviewer could execute themselves, was removed by the operator’s decision and has no substitute here. A reader who declines to accept a modelled baseline is left with the agent against passive, and that column is on this page rather than in a footnote. Each arm below ran all 800 paths.

ArmBook survivalPortfolio survivalMedian returnLatency, 1 bookLatency, last of 3Tx per run, 1 / 3
A0.7920.716-47.4%12.1 s18.0 s0.865 / 2.303
H10.6830.669-47.5%12.4 s103.3 s0.835 / 1.830
H20.1580.140-49.3%336.4 s454.1 s0.148 / 0.358
H30.1710.153-49.3%241.7 s497.5 s0.155 / 0.403
P0.0310.016-49.4%––0.000 / 0.000

The two survival columns are two different questions and only the first is comparable across this design. Book survival is positions kept over positions held, so the Books axis divides out of it. Portfolio survival is whether every book came through, which is a three-of-three event on half the design and a one-of-one on the other: the agent’s falls from 86.5% at one book to 56.8% at three while its book rate falls only from 86.5% to 76.8%, and the difference between those two falls is the axis rather than the policy. That is why every survival figure on this page is book-level and why the portfolio column appears here, beside its own denominator, and nowhere else. The intervals on all of them, 185 rates and 55 differences, are in exploratory.survivalUncertainty of T1-confirmatory.json.

Every arm finishes down about half. The market itself falls on every path in this study, so the return column is a property of the shocks and not of any policy, the agent ends at -47.4% and passive at -49.4%, and the whole finding lives in the difference between two arms on the same path rather than anywhere in that column. The two latency columns are also two different quantities and are never summed: at one book it is the time to protect the only book, at three the time to protect the last of three under the round-robin. Pooling them was the fifth defect in §0.

3.2The position, and the venue rule tuple that scored it

A venue is a tuple read from published parameters, not a label. Swapping the label without swapping the rule is not a variable, so the tuple is printed rather than named, and two of its rows are marked PROVISIONAL because they are Aave V3’s canonical rule adopted, not a parameter read from a named venue’s published configuration. Every arm starts from the identical position on every path, per book.

ParameterValueWhere it comes from
Opening equity, per book1,478.25 Nthe denominator every basis point on this page is of
Health factor at open / trigger / target1.35 / 1.15 / 1.4frozen in the plan before the run
Liquidation threshold7,000 bpsread from the chain-97 deploy script
Close factor5,000 bpsPROVISIONAL, Aave V3’s canonical rule, adopted because the mock pool has no liquidation entry point to mirror. Rises to the whole debt below health factor 0.95, and is read at the moment of seizure rather than applied as a constant.
Liquidation bonus500 bpsPROVISIONAL, the low end of the plan’s range, which is the choice that flatters the agent least. the study rescores the other end.
Keeper fee10 bpsof the amount pulled; measured from the deployed contract’s own source
Gas0.00751 Nper transaction, reconciled against a real BNB Chain mainnet gas ledger
Idiosyncratic volatility2.4%realised daily volatility, measured on BNB Chain mainnet

At that opening health factor the position crosses the trigger on a 14.8% fall and health factor 1.0 on a 25.9% fall. Every shock in the design is larger than the second of those, which is what makes passive die by construction, otherwise there would be no errand to run and the task would be vacuous. That is a design choice and it is stated as one: this study measures what protection is worth in worlds where the position was going to be liquidated, and it does not sample the world’s own frequency of those.

The venue record, as the study wrote it: LT 7000 bps from DeployTestnetV2.s.sol listReserve(wbnb, 700e8, 7000, 7500). Close factor and bonus PROVISIONAL, see comment; resolve at freeze into outputs/sim/venue-profiles.json.

3.3The race, which is the only mechanism in the study

Everything the agent is worth here comes out of one comparison of delays. The agent observes, decides and gets mined in 9 to 15 seconds, a 6 s floor measured from a real testnet dip-to-repay transaction, up to 6 s of jitter above it, and a 3 s block, and it is charged 3 s for each extra book, one protect per block, round-robin. The human is charged 45 s per extra book, sequential hands, which is the plan’s own figure and not this study’s. Against both of them stands a liquidator drawn LogNormal with a median of 15 s, labelled CALIBRATION-TARGET, because it is a target rather than a measurement, and because mainnet MEV is faster than it.

The agent’s per-book cost is deliberately an upper bound. A keeper batching consecutive nonces lands all three books in one block, which would make the marginal cost zero, and zero would decide the parallelism question by assumption rather than by measurement. So the agent is charged a whole block per book and every figure on this page understates it. The same rule runs the other way on the liquidator: the three books draw three independent searchers, so some of them draw a slow one a slow hand can still beat. Perfectly correlated liquidators would kill every book at once and hand the agent the axis for free.

BookOffsetIts own model bandRecordsObserved bandMedianInside its own band
0+0 s9–15 s6939.000–14.998 s12.039 syes
1+3 s12–18 s29712.000–17.997 s14.866 syes
2+6 s15–21 s27715.011–20.985 s17.934 syes

All 1,267 uncensored book records the agent produced sit inside the band that book’s own offset gives it, so the latency model is not violated anywhere in the study. Printing this per book rather than pooled is §0’s fourth defect: pooled and set beside book 0’s band alone, the same records read as the agent missing its own model by six seconds, and that was the one correction in this study that took something back from the agent.

3.4What one protect costs, and what one seizure costs

A repayment retires debt rather than destroying it, so a protect costs the keeper fee plus one transaction of gas and nothing else. Almost the entire gap against a human is therefore an avoided seizure, and what a seizure is worth is not the liquidator’s discount as the ledger memos it, which is marked at the seizure price. What it takes out of the primary is marked at the terminal price, and the two coincide only when the price does not move afterwards.

QuantityValue
Book pairs where the human was seized and the agent was not1,015 of 1,600
Median seizure, as the ledger memos it32.34 N = 218.8 bps
Median cost of that seizure to terminal equity29.10 N = 196.9 bps
Ratio of the true cost to the memo, min, median, max0.155, 0.877, 12.656
Largest transaction count on any single arm-path3
Largest whole gas line on any arm-path0.02253 N = 0.051 bps
Accounting identity residual over every pair5.7 × 10⁻¹³ N

That ratio crosses one, and the direction it crosses in is the reason the study quotes the harder number. On paths where the price ticks up after a seizure the memo understates what was lost, by as much as ×12.7; on paths where it keeps falling the memo overstates it. Quoting the memo would have been the flattering choice on most paths and the wrong one on all of them, so this study prints the terminal-equity cost and puts the memo beside it. Gas is charged in numeraire rather than in the chain’s own token, a disclosed compromise, and the bound on the error it introduces is computed from the run rather than assumed: 0.028 bps at worst, against effects measured in hundreds.

3.5The tests, and the correction applied over them

Wilcoxon signed-rank on the paired endpoint for C1; a paths-resampled bootstrap for C1b, with the pairing preserved inside every replicate, both arms are recomputed on the same resampled set, because resampling the arms independently would destroy the correlation the design exists to exploit. Both are two-sided against a pre-registered direction, which is the conservative choice and roughly doubles each p.

TestComparisonp, rawp, Holm over 2Rejected at α = 0.05
C1A-vs-H2 · median paired terminal equity< 1.0 × 10⁻⁴< 1.0 × 10⁻⁴yes
C1bA-vs-H2 · gap in CVaR(5%) of E(T)/E(0) − 1< 1.0 × 10⁻⁴< 1.0 × 10⁻⁴yes

The family is two, and the plan pre-registered four. A p corrected over two is not comparable with a p corrected over four, so the page says which was applied rather than leaving a reader to assume: the other two tests belong to tasks that are not in this study, and correcting over tests that were never run would be a courtesy to nobody.

Separately from the two tests, the plan wrote 80 survival predictions before any path existed, and 14 of them are falsified at α = 0.05. Which ones is the finding.

Kind of targetWrittenFalsified at α = 0.05
asserted in the plan, with no derivation printed5014
re-derived from the model’s own frozen constants300

Every falsification lands on a number the plan asserted without printing its arithmetic, and not one lands on a number re-derived from the model’s own frozen constants. That is the strongest internal-consistency evidence in the study, the simulator does what its published inputs say it should, and where it disagrees with the pre-registration it is the pre-registration’s prose that was wrong. The two kinds are separate columns in the artefact so the claim can be checked rather than taken, and where a target was re-derived the planned figure it replaced is printed beside it. Re-deriving a prediction from published inputs is not the same act as tuning an input until a prediction comes true.

3.6Seeds, and how to run it yourself

Seed block {1000…1799}, fifty contiguous seeds per cell, bootstrap seed 90,000 at 10,000 resamples. The exogenous streams, the price path and each book’s liquidator, exclude the arm from their key, which is what makes every arm face the same market and the same searchers; the arm-internal streams include the arm name, so adding or removing an arm perturbs no other arm’s draw. Determinism is proved by regenerating the whole population from the same seeds and comparing digests, and again by re-running the engine on a sample of paths and comparing serialised results byte for byte, which covers the arm-internal streams a path digest cannot see.

The corrections in §0 were applied with the study’s --rescore step, which recomputes the manifest’s own digests over the files as they sit on disk and refuses to proceed if either has moved. A defect in an estimator, a renderer or a label is not a defect in the runs, and re-running the runs to fix one would have discarded the byte-identical reproduction an independent replay had already established over them.

Show the seed block for all 16 cells
CellBooksPathsSeeds
grind-work-b11501,000…1,049
grind-work-b33501,050…1,099
grind-night-b11501,100…1,149
grind-night-b33501,150…1,199
crash-work-b11501,200…1,249
crash-work-b33501,250…1,299
crash-night-b11501,300…1,349
crash-night-b33501,350…1,399
wick-persist-work-b11501,400…1,449
wick-persist-work-b33501,450…1,499
wick-persist-night-b11501,500…1,549
wick-persist-night-b33501,550…1,599
wick-1block-work-b11501,600…1,649
wick-1block-work-b33501,650…1,699
wick-1block-night-b11501,700…1,749
wick-1block-night-b33501,750…1,799

REPORT-PLAN §5 reserved {1000…1599} for a 12-cell design. The shock axis is four levels wide since wick-1block was added, so the crossed design is 16 cells and the block is {1000…1799}. Still strictly below T2's reserved {2000…2719}, and disjoint from the MVP's 90000 block.

4What this does not show

The agent against passive, for a reader who rejects a modelled person164.6 bpsahead on 710 paths · the column that survives every objection below
Liquidator median delay this study ran15 stestnet-shaped · mainnet MEV is faster, and a faster liquidator is a pre-registered way to lose that was not run
Book counts tested1 and 3nothing here supports an extrapolation to a large book count; the sign and the mechanism are established at three

None of the following is a hedge added at the end. Each one is a decision that was taken before the run and is on the page because a reader is entitled to attack it.

  1. The human is a model, not a person. Every parameter of the three human arms is published and none is fitted, but a reader who declines a modelled baseline should reject those three columns and read the agent against passive, 164.6 bps. The runnable non-agent comparator that would have settled it was removed and has no substitute.
  2. One venue rule tuple, Aave-V3-shaped, and its close factor is that rule’s canonical form adopted rather than read from a named venue’s published configuration. Not Venus, not Lista, not three integrations.
  3. The liquidator is testnet-shaped at a median of 15 s. Mainnet MEV is faster, and a faster liquidator is a pre-registered way for the agent to lose that this study does not run.
  4. The books axis has two levels, one and three. The interpolation check at two books was not run and nothing here supports an extrapolation to a large book count. What is established is the sign and the mechanism at three.
  5. Only one of the four shocks rewards holding. The mixture Figure 2 shows is one the design chose, not one the world produced. Converting these basis points into an expectation needs the real-world weight between the fall persists and the market repairs itself, and this study does not estimate it.
  6. The pre-registration was not hashed. What survives of it is the discipline: predictions written into the code before the run, printed beside what was observed, and reported as failed when they fail. A reader who wants the stronger guarantee should note that this is not it.
  7. Interest is off, because the mock pool accrues none. Any venue where it is not zero moves every arm here, since all of them carry debt for the whole path.
  8. One contrast is unpaired on the thing it tests. The two realistic humans draw independent availability schedules, so the comparison that isolates a sleep window has far less power than its sample size suggests. It is reported as a null this design cannot resolve rather than as evidence that sleep does not matter.
  9. Testnet units are not dollars and are never converted to any. Nothing on this page is a claim about money made or lost on BNB Chain mainnet. Only chains 56 and 97 appear as sources anywhere in the study.

The sentence this study supports

On a simulated Aave-V3-shaped liquidation drill, an always-on keeper finishes ahead of a published model of a realistically-available human by a median of 155.4 bps of opening equity across 16 crossed cells, 800 paired paths, p = 3.4 × 10⁻¹¹⁷ two-sided, Holm-corrected over the two tests that were run, and on the 76.4% of paths where protection actually binds that median is 200.1 bps. The advantage over an attentive human comes almost entirely from working more than one position at once.

And the one it does not

Any claim about dollars, about mainnet, about a venue other than the single rule tuple modelled here, about a liquidator faster than 15 s, or about a book count larger than three.

Every figure on this page is drawn from a module compiled at build time out of T1-confirmatory.json and the run ledgers, and rendered on the server; scrolling changes which marks are lit and never what they say, and the numbers in the markup are the numbers in the artefact.