FLYPIT documentation
FLYPIT is a futures desk whose only decision maker is a simulated fruit fly brain. This document explains exactly what is simulated, exactly how a price series becomes an order, and exactly what we cannot promise.
What FLYPIT is
A token on Robinhood Chain taxes its own trading. The tax funds a wallet. That wallet trades a single perpetual futures market. The direction and size of every trade come from a simulated fruit fly connectome that has been shown the market as visual motion. No human is in the loop after launch, and no human can withdraw from the desk.
There are three moving parts:
- The token. Standard tax-on-transfer token. Split is fixed at deploy.
- The signal service. Ingests price, renders the visual field, runs the circuit, emits a steering scalar.
- The relay. Takes the steering scalar, applies risk rails, sends orders, publishes the log.
Status and honesty
At the time of writing, the token is not deployed, the desk is not funded and no order has ever been sent. The equity panel on the front page is a shape preview and is labelled as one. When the treasury address is configured, that panel switches to real chain state and the preview disappears permanently. It will never be replaced with a flattering fake.
We would rather ship a smaller honest claim than a large unfalsifiable one, so here is the boundary. We run the visual and descending motor pathways from the released connectome. We do not run a whole animal, we do not claim consciousness, and we do not claim the fly understands markets. It does not. It responds to motion, and we have chosen to treat that response as a trading signal, which is a bet we are making in public with a public balance.
The connectome
In September 2026 Google Research and HHMI Janelia released a whole nervous system reconstruction of Drosophila melanogaster: roughly 166,000 neurons and about 125 million synaptic connections spanning the central brain, both optic lobes and the ventral nerve cord. It is the first complete wiring diagram of a nervous system that can both see and walk.
We use three regions of it:
| REGION | ROLE IN FLYPIT | APPROX NEURONS USED |
|---|---|---|
| Medulla | First stage of motion processing. Receives the rendered visual field. | ~40,000 / eye |
| Lobula plate | Wide field motion integration. Home of the horizontal system cells we read. | ~5,000 / eye |
| Descending neurons | The brain to body bottleneck. Their firing is the steering command. | ~1,300 |
Everything else in the dataset is loaded but not driven. Olfactory, gustatory and mechanosensory inputs are held at baseline because we have nothing honest to feed them. A market has no smell.
Encoding price as flow
This is the only place where we make a creative choice, so it is the part worth scrutinising.
A fly's visual system is built to answer one question extremely well: is the world sliding past me, which way, and how fast. That is optic flow. We hand the market to the fly as optic flow and nothing else.
The transform
// 250 ms tick, 480 sample ring buffer = 2 minutes of mark price
v = ema(dPrice/dt, halflife=6s) // price velocity
s = stdev(returns, window=120) // realised vol
flowDegPerSec = clamp(v / (s * k), -180, +180) // k = 2.5
contrast = clamp(0.30 + s * 14, 0.30, 0.95)
frame = squareGrating(
width = 720, height = 360, // 1 px ~ 0.5 deg azimuth
spatialFreq = 1/22 cycles/deg,
drift = flowDegPerSec,
contrast = contrast
)
Three things are deliberate here:
- Velocity is normalised by volatility. A two dollar move in a dead tape and a two dollar move in a violent one are not the same event, and the fly should not see them as the same speed.
- Contrast carries volatility. In a real fly, higher contrast produces a stronger and faster HS response. So a volatile tape produces a more decisive fly, which is the behaviour we want and it falls out of the biology rather than being bolted on.
- Spatial frequency is fixed near the peak of the measured HS tuning curve. We are not tuning this parameter to fit returns. It is set from the literature and left alone.
We could have mapped price to light intensity, to looming, to a bar moving up and down. We chose horizontal wide field drift because it is the single stimulus the fly's optic lobe is best characterised on, which means the response we read is the one the circuit was actually built to produce rather than a side effect we talked ourselves into.
Running the circuit
The frame is projected onto the photoreceptor array and propagated through the loaded connectivity. Neurons are leaky integrate and fire with synaptic weights taken from reconstructed synapse counts and sign assigned by neurotransmitter prediction from the dataset.
| PARAMETER | VALUE | NOTE |
|---|---|---|
| Integration step | 0.5 ms | Fixed step. 500 steps per 250 ms market tick. |
| Membrane tau | 20 ms | Uniform. We do not have per cell values for most neurons. |
| Synaptic weight | counts x 0.275 mV | Single global scale factor, set once so baseline firing lands in a plausible range. |
| Sign | predicted NT | Cholinergic excitatory, GABA and glutamate inhibitory, per the dataset predictions. |
| Noise | none | Deliberately zero. See determinism below. |
This is a coarse model. Real neurons are not uniform leaky integrators and the release does not hand us biophysics, only wiring. We are not going to pretend that gap does not exist. What the wiring does give us is the thing that matters for direction selectivity: the specific asymmetric delay lines that make a fly's motion detector work. That structure is in the data and it is what produces the left right asymmetry we read.
Decoding steering
We read the descending neurons associated with turning, sum them by side, and take the difference.
steer(t) = sum(rateL) - sum(rateR) // per 250 ms tick
bias = mean(steer, window = 120 ticks) // 30 seconds
conv = clamp(|bias| / B, 0, 1) // B calibrated on grating sweeps
if conv < 0.35 -> FLAT
else if bias > 0 -> LONG
else -> SHORT
notional = equity * 0.35 * conv
leverage = min(3.0, 1.0 + 2.0 * conv)
B is calibrated once, by sweeping the simulated fly with known grating speeds and recording the steering response. It is a property of the circuit, not of any price series, and it is not refit against returns. That distinction is the whole difference between this and a curve fitted strategy wearing a fly costume.
Why a 30 second window
Raw steering is extremely twitchy, because a real fly corrects its heading many times a second. Traded raw it would pay the spread to death. Thirty seconds is long enough to suppress correction reflexes and short enough to keep the response that gave the fly its direction in the first place. It is a judgement call and it is the parameter we are least certain about.
Determinism and replay
There is no stochastic term anywhere in the pipeline. Same price window in, same steering out, on any machine, forever.
Every tick we publish the input hash and the output:
{
"t": 1789200000000,
"inputHash": "sha256:9f2c…", // hash of the 480 sample price window
"flow": -37.4,
"steer": -0.181,
"bias": -0.094,
"conv": 0.508,
"decision": "SHORT",
"simRev": "flypit-sim@1.0.3"
}
Anyone can pull the order log, re-run the published simulator at the pinned revision against the published price window, and get the same decision. If they do not, that is a bug report we want.
Risk rails
The fly has no concept of ruin. The rails are the only adult in the building.
| RAIL | SETTING | BEHAVIOUR |
|---|---|---|
| Max leverage | 3.0x | Clamped, not rejected. An out of range request is reduced to the cap and logged as clamped. |
| Position cap | 35% of equity | Notional ceiling. Conviction scales inside the band only. |
| Daily loss cap | 8% of equity | Flatten and halt until 00:00 UTC. The signal keeps running and keeps being logged, it is just not acted on. |
| Flip cooldown | 15 min | Minimum interval between direction changes. A flip requested inside the window is deferred, not dropped. |
| Conviction floor | 0.35 | Below this, flat. In backtest-free sanity checks this leaves the desk flat most of the day. |
| Equity floor | 15% of peak | Desk stops trading entirely and waits to be refilled by fees. It does not get to average down to zero. |
| Kill switch | 3 of 5 | Multisig can call flatten() and halt(). It cannot call any transfer function. Signer set published at launch. |
The relay
The relay is the only component that holds an execution key. It is deliberately small and deliberately stupid.
- It accepts a decision object signed by the signal service.
- It verifies the signature, the
simRev, and that the input hash is fresh. - It applies every rail above, in order, and records what each rail changed.
- It sends one order. It cannot send a batch, and it cannot open a second market.
- It has no withdrawal function. The key it holds can trade and can call the buyback contract. That is the entire capability surface.
A relay with an execution key is a hot key. If it is compromised, an attacker can make the desk trade badly. They cannot withdraw the funds, because there is no path, but they can lose them for us. We consider this the largest single risk in the system and we are not going to bury it in a footnote.
Public order log
Every order, every clamp and every rail trip is appended to a public log, published at /api/log and mirrored to chain in daily Merkle roots so the history cannot be quietly edited.
GET /api/log?from=1789200000000&limit=100
{
"orders": [
{ "t": …, "side": "SHORT", "notional": 412.88, "lev": 2.0,
"conv": 0.51, "clamped": false, "txHash": "0x…" }
],
"merkleRoot": "0x…",
"anchorTx": "0x…"
}
Fee routing
4 percent on buys and sells, split at the contract level, no privileged setter after renounce.
| SHARE | DESTINATION | PURPOSE |
|---|---|---|
| 2.5% | Desk treasury | The only capital the fly ever trades. No withdrawal path exists to any team address. |
| 1.0% | Liquidity | Paired and locked, so the fee stream is not itself the thing moving the price. |
| 0.5% | Compute | GPU time for the simulator and the public readout. Spend is published monthly. |
Buyback and burn
When a position closes in profit, the realised gain splits in half.
- 50 percent is used to buy $FLYPIT on the open market and send it to the burn address.
- 50 percent stays in the desk and compounds.
Losses do nothing. There is no burn on a losing trade, no burn on a schedule, and no burn from a reserve we quietly held back. If you see a burn, a trade paid for it. That is the only mechanism.
Contracts
| CONTRACT | ADDRESS | STATUS |
|---|---|---|
| FLYPIT token | not deployed | pending |
| FeeSplitter | not deployed | pending |
| DeskTreasury | not deployed | pending |
| BuybackBurner | not deployed | pending |
| Kill switch multisig | not deployed | pending |
Addresses appear here and on the front page at the same moment they go live. There is no private phase where they exist and are not listed.
HTTP API
| ENDPOINT | RETURNS |
|---|---|
GET /api/desk | Current equity, open position, leverage, today PnL, equity curve, last order. Returns configured: false until the treasury is set. |
GET /api/signal | Latest decision object: flow, steer, bias, conviction, decision, input hash, sim revision. |
GET /api/log | Paged order log with Merkle root and anchor transaction. |
GET /api/desk
{
"configured": false,
"reason": "DESK_TREASURY unset"
}
Known limitations
Read this section before you read anything else on the site.
- Wiring is not biophysics. The release gives us connectivity, not per neuron dynamics. Our uniform leaky integrator model is a strong simplification and a different plausible choice of parameters would produce a different fly.
- The encoding is our invention. The circuit is real. The decision to show it a price series as a drifting grating is ours, and it is unfalsifiable as a piece of biology. It is defensible, it is not proven.
- No edge is claimed. We have not published a backtest and we are not going to, because a backtest of a hand designed encoding over one asset proves nothing and would be used to imply a track record we do not have.
- One market, one position. No hedging, no basket, no market selection. If the traded market goes quiet, the desk goes quiet.
- The relay key is hot. Compromise means an attacker can lose the desk money, though not take it.
- Fee income depends on volume. If nobody trades the token, the desk never grows past its starting balance, and a buyback funded by a small desk is a small buyback.
Glossary
| TERM | MEANING |
|---|---|
| Connectome | A complete map of the neurons in a nervous system and the synapses between them. |
| Optic flow | The pattern of apparent motion across the visual field when the observer or the world moves. |
| HS cell | Horizontal system cell. A large lobula plate neuron that responds to wide field horizontal motion. |
| Descending neuron | A neuron carrying a command from the brain down to the motor centres in the nerve cord. |
| Steering | Here, the left minus right difference in turn related descending neuron firing. |
| Conviction | Normalised magnitude of the steering bias. Drives size and the flat threshold. |
| Clamp | A rail reducing a requested value to its cap rather than rejecting the order. |