Operator Surface
Neutrality before volume.
Research Control
The worker loop is the live rehearsal engine. The autoresearch loop is the policy improver. One generates paper-trade evidence from live market data, and the other tries to turn that evidence into a less lossy paper-entry policy.
Why this exists
The worker loop trades continuously from live GRVT and Extended market data. The autoresearch loop wakes up on a fixed cadence, scores the accumulated closed paper trades, tries one challenger policy change, and either promotes it or discards it.
Wakes every 15s and uses live GRVT plus Extended quotes.
Wakes every 2h and tests one challenger policy change.
Fresh closed-trade evidence is scarce right now, so a faster schedule mainly increases policy search on the same sample instead of learning from new outcomes.
Collects live quotes from GRVT and Extended, reranks opportunities, stages intents, and manages paper opens and closes.
Reads closed paper trades, tests one challenger policy change, and keeps it only when validation improves without breaking guardrails.
Forward Test
Replay still proposes ideas, but the forward paper lanes are the real safety layer. Champion stays stable while challenger runs the latest replay winner on new live opportunities.
Latest Result
A challenger policy only matters if it improves validation and still survives the risk guardrails. The split cards below show that decision boundary directly.
increased net_pnl_usd_weight to 54.0 - validation score improved (47132.32 vs 45389.09), test score improved (55890.87 vs 53821.22), all guardrails pass on both splits
Experiment Log
This is the keep-or-discard history. If the page shows many discards, the loop is still learning what not to do. If it shows keeps, the paper-entry champion policy is being tightened with evidence.
increased net_pnl_usd_weight to 54.0 - validation score improved (47132.32 vs 45389.09), test score improved (55890.87 vs 53821.22), all guardrails pass on both splits
increased net_pnl_usd_weight to 52.0 - validation score improved (45389.09 vs 43645.87), test score improved (53821.22 vs 51751.57), all guardrails pass on both splits
increased net_pnl_usd_weight to 50.0 - validation score improved (43645.87 vs 41902.65), test score improved (51751.57 vs 49681.92), all guardrails pass on both splits
increased net_pnl_usd_weight to 48.0 - validation score improved (41902.65 vs 40159.43), test score improved (49681.92 vs 47612.27), all guardrails pass on both splits
increased net_pnl_usd_weight to 46.0 - validation score improved (40159.43 vs 38416.20), test score improved (47612.27 vs 45542.63), all guardrails pass on both splits
increased net_pnl_usd_weight to 44.0 - validation score improved (38416.20 vs 36672.98), test score improved (45542.63 vs 43472.98), all guardrails pass on both splits
increased net_pnl_usd_weight to 42.0 - validation score improved (36672.98 vs 34929.76), test score improved (43472.98 vs 41403.33), all guardrails pass on both splits
increased net_pnl_usd_weight to 40.0 - validation score improved (34929.76 vs 33186.54), test score improved (41403.33 vs 39333.68), all guardrails pass on both splits
Paper Lifecycle
These are the active paper trades being managed by the worker loop. They come from live venue data and use the current runtime champion entry policy.
No active paper-open positions right now. In `simulation` mode this stays empty by design. In `paper` mode it fills only after staged intents clear the tighter entry gates.
Recent Closes
Closed paper trades are the training evidence for the autoresearch loop. More closes means better signal about which filters actually reduce losses and which simply cut trade count.
Stage in paper: EV 213.78 bps, basis 0.38 bps, liquidity 10.00. [challenger] Awaiting maker fill window until 2026-03-30T02:00:25.624213+00:00. {'requested_quantity': '856.7500000000', 'estimated_filled_quantity': '0', 'fill_ratio': '0', 'status': 'unfilled', 'touched_snapshots': 0, 'time_to_first_fill_ms': None, 'time_to_complete_fill_ms': None} [challenger] Paper entry approved at 2026-03-30T02:04:40.046462+00:00. Closed in paper: basis risk breached the paper exit threshold. Closed at 2026-03-30T02:19:44.962801+00:00.
Stage in paper: EV 213.78 bps, basis 0.38 bps, liquidity 10.00. [champion] Awaiting maker fill window until 2026-03-30T02:00:25.624204+00:00. {'requested_quantity': '856.7500000000', 'estimated_filled_quantity': '0', 'fill_ratio': '0', 'status': 'unfilled', 'touched_snapshots': 0, 'time_to_first_fill_ms': None, 'time_to_complete_fill_ms': None} [champion] Paper entry approved at 2026-03-30T02:04:38.442491+00:00. Closed in paper: basis risk breached the paper exit threshold. Closed at 2026-03-30T02:19:43.857914+00:00.
Stage in paper: EV 249.94 bps, basis 0.70 bps, liquidity 10.00. [challenger] Awaiting maker fill window until 2026-03-29T18:38:13.824709+00:00. {'requested_quantity': '1892.0000000000', 'estimated_filled_quantity': '0', 'fill_ratio': '0', 'status': 'unfilled', 'touched_snapshots': 0, 'time_to_first_fill_ms': None, 'time_to_complete_fill_ms': None} [challenger] Paper entry approved at 2026-03-29T18:42:19.061842+00:00. Closed in paper: basis risk breached the paper exit threshold. Closed at 2026-03-29T22:12:05.395396+00:00.
Stage in paper: EV 249.94 bps, basis 0.70 bps, liquidity 10.00. [champion] Awaiting maker fill window until 2026-03-29T18:38:13.824700+00:00. {'requested_quantity': '1892.0000000000', 'estimated_filled_quantity': '0', 'fill_ratio': '0', 'status': 'unfilled', 'touched_snapshots': 0, 'time_to_first_fill_ms': None, 'time_to_complete_fill_ms': None} [champion] Paper entry approved at 2026-03-29T18:42:17.092574+00:00. Closed in paper: basis risk breached the paper exit threshold. Closed at 2026-03-29T22:12:03.261784+00:00.