The Trading Fly
Research status · 2026-09-11 · draft, not preregistered

Research status

A fixed-wiring fly brain paper-trades on a recorded price feed. This page lists what the experiment is, what has been measured, what has not been established, and how anyone can check it.

A real fly connectome — 164,587 neurons from a male Drosophila CNS — watches a live price feed and paper-trades. Every tick, decision and spike is recorded. It is an experiment in whether biological wiring computes anything useful. It is not investment advice, and it has proved nothing yet.

DraftNot preregisteredNot frozenPaper settlementNo signer connected

1. What the fly is

The wiring is the MaleCNS v1.0 connectome: one adult male Drosophila, whole central nervous system including the ventral nerve cord. Everything around the wiring is engineered and unlearned. There is no plasticity and no training step: the network never updates its weights. Execution is paper only, on a simulated USD ledger.

The model, as run
ComponentValue
ConnectomeMaleCNS v1.0, traced-to-traced, minconf 0.5 filter, MD5-verified cache
Neurons164,587
Edges25,563,197
Source paper's own count166,691 neurons (different filter; both printed side by side)
UnitsIdentical, noiseless leaky integrate-and-fire; no delays; no plasticity; one global gain (0.01); tonic current 0.07
Synapse signsFrom a neurotransmitter classifier on the source dataset (see section 8)
EncoderOne scalar return signal z, clipped at |z| = 1 (a 1 % five-tick move), drives the two photoreceptor populations (left and right eye) as current.
DecoderA fixed left/right descending-neuron readout: signed margin = (buy − sell)/(buy + sell), buy = spikes per right DN, sell = spikes per left DN, acted on above a 0.03 threshold; hold is abstention.
Descending neurons read1,314
Round60 simulation steps per decision; median 1.34 s per round on one machine
LearningNone. Weights are immutable; the same input from the same state gives the same output.
ExecutionPaper settlement only; no keys, wallets, signing, funding or broadcast in the recorder path

FlyWire, the dataset behind Shiu et al. (2024) and Costi et al. (2025), is a different animal and a different dataset (female brain, no VNC, 139,255 neurons). Results on it are precedent for this network, not validation of it.

2. What has been measured

Four things: a synthetic input study, a bias diagnostic, a memory probe, and a live-reference paper capture whose recorder has been validated. Two further studies ran on 11 September and have sections of their own: the interface diagnostic (section 3) and the positive control PC0 (section 4). All are exploratory. None is a forecasting test.

2a. Synthetic input study (12 rounds per condition)

Production encoder and decoder, synthetic z, identical fresh state
MeasurementResult
Six neutral-start sequences, 72 rounds: buy / sell / hold62 / 0 / 10
Buy-to-sell flips under whole-path sign inversion (paired rounds)0 of 22
Descending neurons whose counts differ between paired conditions, per round462–567 of 1,314
Signed margin at z = 0 from reset (below the 0.03 threshold: hold)+0.029
Signed margin at z = 0 in the following rounds+0.03 to +0.10
Eyes off: buy / sell / hold over 12 rounds0 / 0 / 12
Eyes off: spikes per descending neuron within a round2, or 3 in every fourth round (all 1,314 identical)
Harness vs product replay mismatches0
One deterministic trajectory per condition; the simulator has no noise, so "0 of 22" is exact for these paths and does not generalise to other paths or parameters.

2b. Bias diagnostic (256 rounds)

Raw neural actions before inventory and risk, two encoders × reset/persistent state × base/mirror
ArmRoundsBuySellHoldBuy↔sell flips under sign inversion
Production encoder (all four branches)128752512 of 31 (reset arms); 0 of 31 (persistent)
Equal-total-current encoder, "E-bal" (all four branches)128890390 of 31 (both state modes)
All trajectories256164290
256 of 256 planned round-equivalents completed in 296.93 s; 21 tiny-network self-tests passed first; reference cache hashes unchanged. Both raw sells were omitted under the zero-inventory counterfactual and accepted with one ETH available; zero risk rejections. E-bal only equalises neutral total input current; it did not cure the buy-heavy readout, and switching to it is not justified by these results.

2c. Memory probe (244 valid round-equivalents)

Can a linear readout of the 1,314 descending-neuron counts recover the current input? Gate: test R² ≥ 0.25 and above the null 95th percentile
ConditionTest R² for zt95 % CINull 95th pctGate
State reset each round (N)0.675[0.50, 0.83]0.010passed
State persists across rounds (P)−0.012[−0.26, 0.004]0.002failed
Paired difference P − N−0.686[−0.97, −0.54]
Lag probes under persistent state: not interpretable, because the gate above failed
LagP test R²95 % CI
zt−1−0.025[−0.56, 0.26]
zt−2−0.074[−0.54, 0.005]
zt−4−0.074[−0.60, 0.15]
Test n ≈ 25; splits 52/26/25 with a 4-round gap; one network, one seed stream. A planted lag-1 signal was detected at amplitude 0.2 (R² 0.54) but not at 0.1 (R² 0.08), so weaker history signals would be missed. Persistent state does change output (summed per-DN variance 1,993 vs 1,171) without being linearly decodable at this sample size. Fixed decoder in this probe: 101 buy / 14 hold / 0 sell with persistent state, 113 / 2 / 0 without. Run: 244 round-equivalents in 362.6 s of simulation; cache and code hashes unchanged.

2d. Live-reference paper capture and recorder validation

The product state is a bounded, now-stopped 12-round paper capture on a public ETH-USD reference feed. It supersedes an earlier six-observation integration run for product status. Neither is a forecasting test, and this page quotes no per-round results from it beyond the recorded snapshot linked in section 9.

Prospective recorder validation run (run id malecns_live_20260911T062328Z), exploratory
CheckResult
FeedCoinbase Exchange public ETH-USD ticker, TLS verified, 7 public GETs
Ticks accepted6 of 6 (5 s poll, 0 failures)
Verdictsround 1 no_action; rounds 2–6 approved buys; 4 paper fills with fees
Research events written18 (header 1, observation 6, decision 6, fill 4, footer 1)
Hash chainverified from genesis; tip 9da43880d7b870f9…
Per-decision spike vector stored164,587 elements, with body ids and matching SHA-256
Exact replay on a fresh adapter from archived pre-state + stored input6 of 6 decisions bit-exact (proposal, spike vector, post-state hash, stimulus hash)
State blobs11 references, all content-address verified; chain contiguous
Public export18 rows, 0 schema errors (fly_research_event v1.1), no private path strings
Externally timestampedno
The buy-only verdict sequence is consistent with the known buy bias of the pilot decoder. It is not a signal. A private-path leak in the export header was found on the first validation attempt and fixed in the recorder before the run passed; the run database itself was not modified.

3. Interface diagnostic, 11 September

On 11 September a pre-declared, locally pinned diagnostic asked a narrower question than the paper does: can this interface — encoder, state mode and decoder — carry the current input at all? It ran on synthetic independent random z with no market data, on one network at one gain and tonic setting (gain 0.01, tonic 0.07). It is a draft and it was not preregistered.

The three pre-declared primaries

Verdicts as the pre-declared rules compute them on the recorded data. These are the verdicts of record: the quiescent re-run described below recomputed every one of them unchanged.
PrimaryBarResultVerdict
P1 — sign-and-offset fixed decoder under persistent state (arm A5, decoder D2)Balanced accuracy ≥ 0.75, hold ≤ 50 %, sell share 0.35–0.65, Holm-gated p at α = 0.05BA 0.573; hold 0.61; sell share 0.83; p 0.177; n 136FAIL
P2 — trained readout input gate under persistent state (arm A5, decoder D5)Balanced accuracy ≥ 0.75, Holm-gated p at α = 0.025BA 0.545; CI95 [0.466, 0.644]; p 0.163FAIL
P3 — counts versus wiring (encoder ladder, Design 3)|m(0)| < 0.010 across the ten silenced-population encodersmet for 2 of 10; |m(0)| ≥ 0.020 for 6 of 10INCONCLUSIVE
P1 fails on balanced accuracy, hold rate and sell share independently of its p-value, and under both candidate decoder signs (BA 0.573 with +1, 0.427 with −1). P2's own reading, printed by the harness: the gate was not passed at gain 0.01 / tonic 0.07 / n = 480, which is explicitly not a statement that topology is useless. P3 is identified only up to driven-population size, not retina size, because the silenced right photoreceptors stay recurrently coupled and can still spike. The trained readout on the fresh-reset arm (A1, decoder D5, BA 1.000) is the void control of the design, not an endpoint: a monotone map of one scalar is linearly separable, so it has no power to discriminate between interfaces.

The first run was declared void; the re-run is the record

The first run, at 09:03–09:15Z, carries a root decision of VOID under the protocol's own pre-declared process-limit clause, §6(f): "any arm exceeds the 75-min process stop or more than 4 simulation processes run at once". In plain language: while the four diagnostic lanes were running, two unrelated simulations were reading the same connectome cache on the same machine — the positive-control assay described in section 4 and the go-live paper capture — so six simulation processes were live at once against a pre-declared ceiling of four. The clause is unqualified and the harness did not machine-check it, so the run breaches it.

The simulator is deterministic and single-threaded, the cache is read-only and verified unchanged in all seven arm metadata records, and the processes share no mutable state, so no recorded number was affected; only the wall-clock timings were inflated, and those feed nothing but two guards that never tripped. The consequence was procedural rather than numerical, and it stood: that first run issued no verdict of record, and its outputs were kept as a determinism reference — the numbers a quiescent re-run had to reproduce bit for bit.

That re-run has since been done. The same diagnostic ran again on a quiet machine under the pinned re-run protocol, in four lanes from 12:52 to 13:03 local time, with the process-limit clause machine-checked at four points and clean at every one: before launch (no other process holding the connectome cache, four lanes planned against a ceiling of four), at each of the four lane starts, at each of the seven arm starts, and after the lanes finished. All seven arms completed their full planned rounds, each lane exited zero, the analysis step exited zero and opened the held-out window once, and the P1 precondition was written to its own file before that window was opened rather than reconstructed afterwards.

It reproduced the archived records bit for bit apart from wall-clock timings. Every one of the 1,852 recorded rounds and footers across the seven arms is identical to the void run's once the elapsed-time, memory and timestamp fields are stripped, and the hash over each arm's whole stripped record stream matches in both directories. Of the 1,113 comparable values in the analysis output — every leaf that is not a clock, a memory figure, a code hash or a guard field — 1,112 are identical; the single difference is a prose footnote that lost a citation. The verdicts are therefore unchanged, and they are now the verdicts of record: P1 FAIL, P2 FAIL, P3 INCONCLUSIVE.

The re-run's own fingerprints, for checking: results.json 584aa11f…, results.md 5cbe8621…, protocol.md 24ed1e1f…, meta.json 627423eb…. The scope is the one it started with and has not widened: synthetic independent random input, one network, one gain and tonic setting, a draft that was not preregistered.

Secondaries under Benjamini–Hochberg

Six secondaries carried p-values, and a Benjamini–Hochberg step-up at q = 0.10 was computed over all six. One survives it.

Benjamini–Hochberg, q = 0.10, m = 6
SecondarypRankThreshold q·rank/mReject
S2 — A6 D5, permutation0.01410.0167yes
S2 — A6 D5, circular shift0.02020.0333yes
S5 — partition null fraction0.17530.0500no
S4 — A5 D3, permutation0.17740.0667no
S6 — twin delta, permutation0.26550.0833no
S6 — twin D5 on ΔDN, permutation0.72460.1000no
The survivor is S2: the trained readout on the push-pull encoder under persistent state (arm A6, decoder D5), significant on both its permutation p (0.014) and its circular-shift p (0.020), with a block-bootstrap CI95 of [0.537, 0.669] that excludes 0.5. It still fails the S2 bar of balanced accuracy ≥ 0.75: the balanced accuracy is 0.603. No secondary changes a primary verdict; the primaries are Holm-gated separately.

How this was put publicly

On 11 September 2026 we ran a pre-declared, locally pinned, not-preregistered diagnostic of the fly interface on synthetic random inputs (no market data), one network, one gain/tonic setting. All three primary tests came out negative or inconclusive: the sign-and-offset decoder fix did not pass under persistent state (balanced accuracy 0.57 on the rounds where it acted, holding 61 %), the trained readout did not pass the input gate under persistent state (0.55, CI 0.47–0.64, threshold 0.75), and the count-versus-wiring question stayed inconclusive. The harness control passed: when the network is reset to the same fresh state before every round, the current input is recoverable (trained readout 1.0 on 34 mirrored pairs; the flipped legacy decoder 0.93 on the 54 % of rounds where it does not hold). We are considering resetting state before each decision and flipping the decoder sign; that configuration has not been tested as it would be deployed, it removes any across-bar memory, and it says nothing about markets, forecasting, or whether the wiring matters. The fly has proved nothing yet.

Addendum recorded with that paragraph: the diagnostic was later declared void on a pre-declared process-limit clause because two unrelated simulations shared the machine during the run; the numbers are unaffected by construction and will be re-run on a quiescent machine before anything is quoted as a result. That quiescent re-run has since been run and reproduced the same numbers and the same three verdicts, so the paragraph above reads the same on the record of the re-run.

The amendment is a proposal, not a decision

The proposal on the table is to reset the network state before every decision, flip the decoder sign so that a right-descending-neuron excess reads as sell (the action is taken from −m), and add an offset fitted on the first window. The configuration actually measured is the fresh-reset arm A1 with decoder D2: balanced accuracy 0.929 on the 54 % of labelled test rounds where it acts (37 of 68 rounds; hold 0.46), buy 19 / sell 18, sell share 0.49, p = 0.001, offset m0 = +0.0192. Those 68 labelled rounds are 34 mirrored (z, −z) pairs from one fresh start state, so the honest confidence half-width is ±0.146, not ±0.103.

Status: proposal, not adopted. The quiescent re-run condition is the one that has been met; three conditions are still open — the engineering check on the real cache, a pinned gated protocol for the amended configuration (written and pinned, not yet run), and external anchoring. The registry entry for the decision records amendment_adopted: false and market_data_read: false. Nothing in the protocol or the configuration was edited.

Five conditions were set before it could be adopted. The first and fourth are met; the other three are open:

  1. Met. PC0 re-run under the new mode — reset per decision, a declared start state with its hash, the flipped sign. Run on the same seeds under the amended package: identical result (section 4).
  2. Open. The engineering check passing on the amended interface: byte-identical decisions under the new mode on the real cache, the recorder showing the declared start state before every bar, and the process guard clean.
  3. Open. A new pinned, gated protocol for the exact amended configuration, run on a quiescent machine, passing on its own pre-declared bars.
  4. Met. The quiescent re-run of this diagnostic reproducing the archived raw records bit for bit — done under the pinned re-run protocol with the guard clean at every check, 1,852 of 1,852 records identical once timings are stripped.
  5. Open. An external anchor of the amendment note and the configuration hash — without it, "decided before market data" is only a local file timestamp.

What it does not establish, on the record of the amendment and the v2 package's own "what is NOT claimed" list:

4. Positive control (PC0)

A model that cannot reproduce a reflex which has already been validated in silico against behaviour is not worth pointing at a price feed. PC0 is that check, declared on 11 September before any run on the real graph and hashed so the runner refuses to start if the rule block has changed. It reproduces the contrast in Shiu et al. (2024) — real wiring versus shuffled weights — not the absolute firing rates, on our own dataset with our own simulator unchanged.

The pathway is sugar-sensing gustatory receptor neurons driving the proboscis motor neuron MN9. On this graph the populations resolve to 12 sugar-GRN candidate cells, all of type LB3c and all on the left side, and 2 MN9 cells, one per side. The drive is a seeded supra-threshold kick of +4.0 units per stimulated cell at a nominal 100 Hz for 1,000 steps from a fresh reset, with tonic current 0 everywhere — Shiu's zero basal assumption, not the 0.07 per step that the market adapter gives every non-photoreceptor. Thirty trials per cell of the sweep, master seed 20260911.

PC0 sweep on the real MaleCNS v1.0 graph, seed 20260911, 30 trials per cell
CellMN9 firesMN9 rateGRN realised rate
gain 0.004, real wiring0 of 300.0 Hz99.6 Hz
gain 0.006, real wiring30 of 3043.7 Hz (0.13 of max)100.5 Hz
gain 0.006, global weight shuffle0 of 300.0 Hz
Pass rule, frozen in the protocol and carried identically in the code: MN9 must fire in at least 27 of 30 real trials and in at most 3 of 30 shuffled trials, and the smallest grid gain meeting both is selected. Recorded verdict: passed, selected gain 0.006, reason "smallest grid gain satisfying both criteria". The grid brackets the three ways Shiu's single calibrated parameter (Wsyn = 0.275 mV) maps onto our dimensionless units: 0.0393 as an instantaneous jump, 0.0098 for equal integrated drive, 0.0062 for equal peak response.

What that buys is narrow, and the protocol says so in advance: it means only that under this drive the real wiring separates from the shuffled-weight control on this one pathway, so the interface is not degenerate. It does not mean the MN9 rates are quantitatively right — Shiu et al. disclaim absolute rates themselves — nor that the graph carries anything market-relevant, nor that the selected gain is correct beyond this pathway, nor that the model handles inhibition-dominated or neuromodulated circuits, nor that a FlyWire-based validation transfers to MaleCNS.

Three things logged against this result

PC0 was run twice: once under the current interface (above) and once under the amended package (fresh reset per decision, flipped decoder sign, offset), the latter on the same seeds. The amended-package run reproduced the same numbers exactly: 0 of 30 at gain 0.004, 30 of 30 at 0.006 at 43.73 Hz, global shuffle 0 of 30, selected gain 0.006. This was expected rather than informative: the assay drives sensory neurons and reads a motor neuron with a fresh reset every trial, so the decoder and the state policy are never exercised. It closes the first of the amendment's five conditions; the two null families were not re-run and the current-interface null results stand.

5. What has not been established

6. What the paper will ask

Primary contrast (protocol v0.2, H1). With encoder, readout, hyperparameter grid, simulation length and per-bar compute held identical, does a reservoir whose recurrent weights are the real MaleCNS v1.0 connectome reach higher out-of-sample directional forecasting skill on a frozen test window than 79 matched nulls in which topology is rewired while each neuron's degree, sign and outgoing weight multiset are preserved?

Primary test as drafted
ItemValue
EndpointBalanced accuracy of a trained logistic readout on the 1,314-dimensional DN count vector, predicting the sign of the next executable bar return, computed once on window W3
TestOne-sided rank of the real network against 79 nulls; p = (1 + b) / 80; minimum attainable p = 0.0125; α = 0.05
StatusDraft. Not preregistered, not frozen, not timestamped; no hash externally anchored. Every run so far is exploratory.
FreezeSix-step procedure in §12 of the protocol; not performed

Two cautions from the internal audit stand in front of that study. First, the confirmatory design carries state across bars, and the only persistent-state evidence (section 2c) says the input gate fails, so as written the study would likely stop at its own gate. Second, its primary arm costs 459–569 CPU-hours depending on the per-round time assumed, and the 29–33 h wall-clock figure assumes unverified linear scaling on 16 processes.

Primary-arm cost, 80 systems × 17,194 rounds
Seconds per roundCPU-hours
1.2–1.4 (review budget, one observation)459–535
1.34 (measured median)512
1.49 (memory probe, incl. overhead)569

The next bounded step is therefore not the primary study but a specified-and-unrun interface gate: four arms (production and E-bal encoder × reset and persistent state), 400 rounds each, asking whether any encoder lets the DN counts carry the current input when state persists, at about 37 minutes of CPU. It has not been launched and needs its own review of null construction and multiple comparisons first.

7. What the literature says

Nothing read supports an expectation of a market edge, and two of the three papers give concrete mechanisms by which a positive result would be an artefact.

References (APA 7)

8. Transmitter-sign provenance

Synapse signs come from the source dataset's neurotransmitter classifier (ResNet50 following Eckstein et al., 2024; argmax over per-synapse scores; 80/20 neuron-level split). The held-out neuron-level confusion matrix is printed only as a figure, Figure S1 panel K of Berg et al. (2026); the values below were transcribed from that raster and are confirmed against the Cell 2026 version of record, re-read cell by cell (neuron-level, held-out test set).

Neuron-level prediction on the held-out test set, Berg et al. (2026), Cell 189(18), Fig. S1K
Ground truthnCorrectRecallPrecision
acetylcholine2,6142,60599.66 %99.20 %
dopamine1919100.00 %100.00 %
GABA64760994.13 %99.67 %
glutamate71070298.87 %97.10 %
histamine21421399.53 %95.95 %
octopamine33100.00 %100.00 %
serotonin22100.00 %40.00 %
Overall4,2094,15398.67 %balanced 98.88 %
Caveats carried from the source note: the test set is the held-out 20 % of curated ground-truth neurons, biased toward well-characterised types, so accuracy on the full 164,587-neuron population is not measured; octopamine (n = 3) and serotonin (n = 2) establish nothing and the authors set them to "unclear"; GABA has the weakest recall, with its 38 errors going to acetylcholine and glutamate, so the likeliest sign errors in the weight matrix are inhibitory neurons treated as excitatory. Histamine, the photoreceptor transmitter and this model's only input population, is called correctly for 213 of 214. Transmitter accuracy is not sign accuracy: the transmitter-to-sign mapping is a separate modelling choice (section 5).

9. How to check us

Receipts
Decisions are published as inspectable receipts. The public state is: inspectable receipts, simulated USD ledger, experimental fixed-weight LIF connectome, no real-money execution.
Live mirror
../recorded/live/ — the live paper mirror, updated every ~20 s.
Recorded snapshot
../recorded/live-demo-12/ — the recorded snapshot of the stopped 12-round paper capture.
Trial registry
A paper trial registry now exists and is hash-chained: 23 entries, each carrying the protocol, code, data and window-boundary references of the evaluation it records, plus one entry for the amendment decision itself. The chain was verified end to end, and again by an independent reader of the same file. The entry hashes are not published on this page yet.
Hash chain
Each research event is chained; the validation run above verified its chain from genesis. The chain tip is not externally timestamped.
Protocol hash
Not yet anchored. No hash of the protocol has been externally anchored and it is not registered anywhere; the site's integrity model detects casual edits only and is explicitly not tamper-proof.
Replay
Decisions replay bit-exactly from the archived pre-state and stored input on a fresh adapter loaded from the immutable cache (6 of 6 in the validation run; 0 mismatches in the input-study harness).
Re-analysis
The memory probe's analysis re-runs offline from its raw per-round file with no simulation and no network; the bias diagnostic ships its code, protocol and cache hashes so the run can be repeated against the same reference.
Public export
JSON rows validated against fly_research_event.v1.1.json; each row's payload hash recomputes; header paths redacted.

What would change this page: a passed persistent-state input gate, a resolved cause for the buy bias, an anchored protocol hash, a public registration, and only then a read of the frozen test window.

Research status as of 2026-09-11. Sources are internal evidence documents dated 2026-09-11; every figure above is copied from one of them and none was produced for this page. Paper funds only. Not investment advice.