Run something
Everything here also runs on its own schedule — these buttons are for when you do not want to wait for it. A click queues the task; the pipeline picks it up within about a minute and the result appears in place, exactly as the terminal would have printed it.
Maintenance
Start with “Check LLM providers” when triage or analyze has gone quiet — withdrawn model ids are the usual cause.
Check LLM providers
Probes every configured model on a real task. Run this first when triage or analyze dies.
output
configured: groq, gemini, openrouter, ollama provider tier model latency result groq cheap qwen/qwen3.8-27b 454ms ok groq deep openai/gpt-oss-120b 1239ms ok gemini cheap gemini-flash-lite-latest 1154ms ok gemini deep gemini-3.5-flash 4458ms ok openrouter cheap nvidia/nemotron-3-super-120b-a12b:free 20ms FAILED - openrouter rate limited (429) openrouter deep nvidia/nemotron-3-super-120b-a12b:free 336ms FAILED - openrouter rate limited (429) ollama cheap gemma4:31b-cloud 1929ms ok ollama deep gpt-oss:120b-cloud 2575ms ok 2 model(s) are not usable. Pick a replacement below and set it in .env, e.g. OPENROUTER_MODEL_CHEAP=<model id> OPENROUTER_MODEL_DEEP=<model id> openrouter currently serves 22 usable model(s): deepseek/deepseek-v4-flash-0731:free thinkingmachines/inkling-small:free thinkingmachines/inkling:free nvidia/nemotron-3.5-lightning:free nvidia/nemotron-3-ultra-550b-a55b:free dots-studio/dots-3-note-preview:free inclusionai/ling-3.0-flash-vl:free nex-agi/nex-n2.5-mini:free nex-agi/nex-n2.5-pro:free inclusionai/ling-3.0-flash-sante:free inclusionai/ling-3.0-flash-fin:free qwen/qwen3.8-27b:free poolside/laguna-s-2.1:free poolside/laguna-xs-2.1:free google/gemma-4-26b-a4b-it:free google/gemma-4-31b-it:free nvidia/nemotron-3-super-120b-a12b:free cohere/north-mini-code:free nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free nvidia/nemotron-3.5-content-safety:free liquid/lfm-2.5-2.6b:free z-ai/glm-5.2:free done in 12.2s
Re-run the backtests
Rebuilds the evidence behind the Screen page verdicts from the stored bars.
output
market strategy rank n months long-vs-univ t won longDD spread(net) t long universe bench
us cross_sectional mom 149 108 8.0% 2.0 59% -19.4% 3.4% 0.9 31.2% 21.5% 14.8%
us cross_sectional composite 149 108 8.1% 2.1 57% -17.1% 4.1% 1.0 31.4% 21.5% 14.8%
us time_series mom 201 108 0.6% 0.5 53% -19.5% 4.6% 2.0 20.0% 19.3% 14.8%
india cross_sectional mom 97 108 1.4% 0.6 51% -29.2% 1.9% 0.8 22.1% 20.4% 10.1%
india cross_sectional composite 97 108 0.4% 0.3 49% -26.7% -0.6% 0.3 20.9% 20.4% 10.1%
india time_series mom 108 108 -0.0% 0.1 56% -25.4% 2.9% 1.2 19.6% 19.6% 10.1%
crypto cross_sectional mom 36 98 -41.4% -0.1 46% -87.0% -81.9% -0.2 53.2% 161.3% 32.3%
crypto cross_sectional composite 36 98 -52.6% -1.2 45% -84.2% -90.8% -1.3 24.0% 161.3% 32.3%
crypto time_series mom 37 98 14.4% 1.3 57% -91.0% 43.3% 1.0 199.7% 161.9% 32.3%
commodity cross_sectional mom 20 108 -4.4% -0.3 45% -47.0% -21.7% -1.1 7.5% 12.5% 11.0%
commodity cross_sectional composite 20 108 -6.8% -0.7 48% -41.2% -21.2% -1.2 4.9% 12.5% 11.0%
commodity time_series mom 29 108 -1.7% -0.4 52% -34.4% -0.8% 0.2 9.1% 10.9% 11.0%
long-vs-univ: the top quantile minus an equal-weight hold of the whole list - the edge from the RANKING, with no shorting.
This is the number to read if you will not short. "won" is the share of months it was ahead.
spread(net): the academic long-short factor return after 10bp/side costs. Needs a borrow; a drawdown near -100%
means the short leg was squeezed and the strategy is not implementable unlevered.
t below 2 is not distinguishable from luck. The universe is today's constituents, so long-only and universe
figures carry survivorship bias; the long-vs-universe difference is far less affected, since both legs share it.
rank: composite is what the /screen page ORDERS BY (12-1, 6-1, 52w-high proximity, 200d trend);
mom is 12-1 alone, the literature's factor and the reference the composite must justify itself
against. Read the composite row for the ranking you are actually looking at on the page.
done in 2.8sAudit the price primitives
Asserts session counts, fills and priced-in reads against real market history. 20 checks.
Refresh price signals
Syncs whatever daily bars have gone stale and recomputes momentum for the screen.
output
total: 0 signal snapshots, 301 ranked (0 bars synced, 0 with too little history, 0 failed) done in 0.0s
Re-download all price history
Ten years of bars for every name, from scratch. Only needed if the stored history is suspect.
Re-seed sources and graph
Reloads sources, instruments, the entity graph and the screen universe from data/seed.
Run a stage now
The scheduled pipeline stages, forced early. Safe to press; each one is the same pass the scheduler makes.
Fetch news now
Polls all 50 sources immediately instead of waiting for the next 2-minute pass.
Group stories into events
Drains the whole clustering backlog, rather than the 800 items a scheduled pass takes.
Score pending events
Materiality, novelty and surprise on everything waiting. About 90% is rejected here.
Build causal chains
Spends the remaining daily analyze budget on the events that survived triage.
Match names to instruments
Puts unresolved chain nodes through the hallucination gate against 15,700 real listings.
Rank and open calls
Ranks scored chains and freezes predictions at the price and volatility of this instant.
Send Telegram alerts
Pushes anything above the conviction threshold. Does nothing if Telegram is unconfigured.
Fill and grade calls
Fills due calls at the next traded price and grades them on excess return.
Stages
Every scheduled pass is recorded, including the ones that found nothing to do — that is what separates an idle stage from a stopped one.
| stage | every | last run | took | p50 / max 24h | runs 24h | last result |
|---|---|---|---|---|---|---|
| collect | 2m | 1m ago | 8,379ms | 5,392 / 184,946ms | 537 | polled=43 fetched=1246 inserted=3 failed=2 |
| cluster | 2m | 2m ago | 2ms | 421 / 9,061ms | 512 | processed=0 joined=0 created=0 |
| triage | 10m | 10m ago | 12,423ms | 8,001 / 100,100ms | 135 | scored=20 passed=0 calls=1 expired=0 |
| analyze | 15m | 4m ago | 6ms | 8 / 794,146ms | 91 | attempted=0 chains=0 nodes=0 order2plus=0 expired=0 deferred=0 |
| resolve | 15m | 4m ago | 22ms | 18 / 14,505ms | 91 | chains=0 resolved=0 rejected=0 |
| score | 15m | 4m ago | 1ms | 2 / 116,359ms | 91 | chains=0 predictions=0 skipped=0 |
| deliver | 5m | 4m ago | 0ms | 0 / 1ms | 245 | sent=0 skipped=0 |
| verify | 10m | 9m ago | 241,008ms | 129,280 / 733,935ms | 137 | checked=13 hits=8 misses=5 waiting=376 |
| signals | 10m | 10m ago | 10,367ms | 5,005 / 96,629ms | 135 | attempted=12 synced=12 bars=275 computed=12 tooShort=0 failed=0 ranked=246 |
| models | 720m | 6h ago | 35,859ms | 8,478 / 35,859ms | 2 | lines=30 tail= glm-5.2:cloud |
| backtest | 1440m | 6h ago | 4,139ms | 4,139 / 4,139ms | 1 | lines=22 tail= against. Read the composite row for the ranking you are actually looking at on the page. |
| calendar | 10080m | 7h ago | 4,334ms | 4,334 / 4,334ms | 1 | lines=25 tail=priced-in reads the last trade at or before the call, never a later one |
Host
Largest tables
Recent failures (0 in the last 24h)
No stage has thrown in the last 24 hours.