83
data adapters
4
open-weights families
3
machines in the fleet
25 yr
backtest window
1,272
historical S&P symbols
~32
weekday cycles
11
risk gates per trade
$0
paid-API spend
The fleet

Three machines, one bot.

Built across heterogeneous hardware so every role gets the right silicon. The Mini orchestrates and owns the database. The Studio's 256 GB unified memory hosts all four persona models simultaneously. A separate Grace Blackwell box renders the entire visual half of the show, portraits, group scenes, episode video, without touching the trade-decision loop.

The mind

Mixture of Experts, for real this time.

"Mixture of Experts" usually means a single model with internal expert routing. Here it means four actually different open-weights LLM families served simultaneously from one 256 GB Mac Studio via oMLX. Same family = same blind spots = correlated wrong answers. Different families produce different priors, different vocabularies, different hallucination modes, so when they agree, the agreement carries information.

Source freshness

Are the feeds actually pulling?

"81 sources" is only honest if the feeds are refreshing inside their cadence. This panel reads the live state of every claimed adapter and pipeline. Last updated just now.

loading…

Status grammar: fresh = refreshed inside cadence. warming = barely past cadence or just spinning up. stale = significantly past cadence. failing = last attempt errored. disabled = source switched off in settings. unknown = registered but no data observed yet.

Usage grammar: used recently = cited by a panel verdict in the last 24h. fresh, unused = pulling fine but the panel has not cited it in 7 days. stale, but used = past cadence yet still cited in the last 30 days. never used = registered but no panel has cited it in the last 30 days.

Pipeline

How a verdict gets made.

Every cycle is the same eight stages, scan, gather, take, huddle, challenge, verdict, judge, execute. Each stage is independently inspectable; every output is logged and traceable back to the inputs that produced it.

Scan

Round-robin blended scanner pulls a top-20 pool: 75% alt-scanner output (sector momentum + insider clusters + earnings momentum) and 25% value-screen (below 200-week MA + positive FCF). Symbol cooldown of 4 hours prevents back-to-back debates of the same name.

Gather

83 data adapters fan out in parallel for the chosen ticker. Each cached for its own TTL, heavy 13F walks 24 h, news 15 m, quotes 30 s. Adapters silently skip when their source is unreachable; the panel sees the gap, not stale junk.

Initial takes

Each persona writes its verdict in character, calm-quantitative, growth-evangelist, macro-paranoid, sceptical-referee. Each call carries a confidence (0 to 100) and an explicit thesis the validator can grade.

Team huddles

Bull team aligns. Bear team aligns. Internal disagreement collapses into a single team verdict only if both members commit; otherwise the team is split and the asymmetric rule downgrades it.

Cross-team challenges

Layla challenges Bruce. Meryl challenges Walter. The other side responds in real time. A genuine debate, the personas have read each other's openings and react to specifics, not to a templated rebuttal.

Asymmetric verdict

A trade fires only when one team commits AND the other doesn't oppose with equal conviction. Otherwise HOLD. Conservative by design, false negatives are cheap, false positives lose paper money in public.

Cloud judge + validator

Donald (cloud) grades panel reasoning quality 0 to 100 after each cycle. A separate validation guard runs live during the debate, catching factually-wrong citations (e.g. "Q3 revenue was $X" when EDGAR says otherwise).

Execute & track

OCO bracket on Alpaca paper. Position monitored, exits on time-stop, 50w-MA cross, or verdict-reversal-guard tightening. Every closed trade is linked back to its originating verdict for outcome calibration.

Risk gates

11 deterministic checks between verdict and trade.

A BUY verdict is necessary but not sufficient. Every committed trade also passes through these eleven gates, any one of them can veto. They're deterministic, fast, and inspectable. The persona panel argues the thesis; these gates argue the math.

Gate 01 · Verdict
Final asymmetric verdict must be BUY. AVOID/HOLD/STRONG_SELL all veto here.
Gate 02 · Confidence
Effective confidence (Brier-weighted per persona) must clear the cycle's min_confidence floor.
Gate 03 · Slot
Open-position count must be below the wallet's max-positions cap. No room → veto.
Gate 04 · Already held
If we already hold the symbol, only the conviction-adder pyramid path can buy more, not a fresh entry.
Gate 05 · Sector cap
No sector can exceed its concentration ceiling. A BUY in an over-weighted sector is vetoed even if everything else passes.
Gate 06 · Drawdown
Portfolio-level drawdown from the earliest persisted equity baseline must be inside the live-mode tolerance.
Gate 07 · Wash sale
Recent close on the same symbol within the wash window blocks re-entry, even paper trades follow the rule for backtest fidelity.
Gate 08 · Correlation
Pairwise return correlation against existing book, too-correlated additions get vetoed to keep the portfolio's information ratio honest.
Gate 09 · Event blackout
Earnings, FOMC, scheduled macro release within the blackout window blocks the trade until the event passes.
Gate 10 · Statistical filter
Liquidity, beta, and volatility z-scores must be inside acceptable bands, protects against thinly-traded or pathological names.
Gate 11 · Multi-timeframe
Daily / weekly / monthly trend coherence check. A BUY on a name in active monthly downtrend is downgraded or vetoed.

Fail-CLOSED in live mode: if any signal a gate needs is missing, the trade is blocked rather than waved through. Better a missed BUY than a blind one.

Continuous learning

Every closed trade grades the panel that called it.

A verdict is a prediction. A closed trade is a verified outcome. We link them, the originating verdict ID is stored on the trade, and when the position closes, the realised P&L grades the verdict retroactively. That signal feeds back into the panel as per-persona vote weights.

Universe & cadence

Two desks, steady drip.

The US desk is live on Alpaca paper. The UK desk (Sterling Desk) runs overnight UK cycles on FTSE 100 constituents through a UK-paper broker shim. Each desk has its own scheduler, its own throttle, and its own data adapters.

S&P 500 live
~540 active constituents · 1,272 historical (survivorship-corrected) · Alpaca paper-trading
1 / 30 minduring US market sessions
FTSE 100, Sterling Desk live · throttled
100 constituents from iShares ISF daily holdings · UK-paper broker · overnight cycle window
1 / cycleUS-closed only
04:00, 20:00 ETUS active window (Mon-Fri)
~32 / dayweekday US cycles
~6 LLM callsper cycle (4 personas + panel + judge)
100%local inference for trade decisions
Full inventory

Adapters available to every research cycle.

Every signal you see in a panel transcript is traceable to one of these adapters. The cycle gathers the relevant set for each ticker; heavyweight sources are cached or called on demand, and persistent feeds like YouTube, Reddit, Substack, Telegram and podcasts refresh in the background. UK-prefixed sources surface only for FTSE tickers. Adapters silently skip when their source is unreachable, so the persona panel sees the gap, not stale junk.

Fundamentals & filings

  • edgar10-K/10-Q facts, insider, 13D/G
  • tiingoEOD prices, IEX quote, meta
  • finnhubreal-time quote, company news
  • alphavantagetechnicals, earnings calendar
  • slickchartslive S&P 500 constituents
  • stooqdaily OHLCV fallback
  • earningssurprise history, days-until-next
  • analyst_revisionsconsensus drift direction
  • sector_strength63d relative-to-SPY

Macro & event-risk

  • fredCPI, unemployment, indicators
  • fomcmeeting calendar + statements
  • treasuryyield curve, auctions
  • cftccommitments-of-traders
  • cross_assetVIX, credit spreads, rates vol
  • earnings_seasonseason pacing
  • political_speechpresidential posts, market keywords
  • gdeltglobal event tone, top neg events
  • gdelt_v2_graph30d tone timeline + global coverage
  • weatheractive alerts (commodity-relevant)
  • earthquakesUSGS feed (supply-chain risk)
  • eia_petroleumweekly crude/gasoline/distillate
  • tsa_throughputdaily airline pax + YoY

Sentiment & social

  • news_sentimentlocally-scored polarity
  • rss_newsaggregated headlines
  • redditr/investing + subreddit chatter
  • stocktwitsretail bull/bear directional
  • aaii_sentimentweekly retail-investor survey
  • app_store_reviewsconsumer-app pulse
  • google_trendsWikipedia pageviews proxy
  • substack_feedsnewsletter coverage
  • youtube_transcriptsfamous-investor channels
  • telegram_signalspaid signal-channel chatter
  • tldr_newsletterTLDR ai/tech/founders/marketing
  • hacker_newsHN front-page narrative signal
  • wikipedia_viewspageview velocity, WoW change
  • box_officeweekend chart + studio attribution
  • steam_concurrentlive game player counts + 24h peak

Prediction markets & research

  • polymarketodds on policy, election, geopolitics
  • kalshiUS-regulated prediction markets
  • arxivrecent preprints, AI/biotech labs
  • fda_adcommFDA AdComm calendar + ClinicalTrials.gov
  • uspto_patentsrecent patents by company assignee

Smart money

  • inst_13f12 funds × Q-over-Q changes
  • superinvestorsDataroma famous-investor 13Fs
  • congresssenator/rep trades disclosure
  • fec_filingscorporate PAC + political contributions

Risk & enforcement

  • optionsIV, put/call vol, unusual strikes
  • polygon_optionstape-side flow detail
  • short_reportsactivist short publications
  • court_recordsCourtListener filings
  • sec_enforcementSEC press releases
  • ftc_enforcementFTC actions
  • doj_fraudDOJ fraud-section feed
  • ofac_sdnsanctions list match
  • cyber_alertsCVE / breach feeds
  • nhtsa_recallsauto-OEM recall overhang

UK desk (Sterling) in dev

  • ftse_constituents_yfiuacanonical FTSE 100
  • ishares_isfISF daily holdings CSV
  • uk_macroBoE base rate, CPI
  • uk_indicesFTSE / sector indices
  • uk_pressFT, Guardian, Reuters UK
  • uk_gazettecompany insolvencies
  • uk_cmacompetition cases
  • uk_fca_noticesFCA enforcement
  • uk_ico_finesdata-protection fines
  • uk_sfo_casesserious-fraud office
  • uk_sanctionsUK sanctions list
  • uk_short_interestFCA shortselling reports
  • uk_land_registryproperty transactions
  • uk_powerNational Grid, NESO
  • uk_redditr/UKInvesting
  • uk_reddit_deeppaginated post + comment trees
  • uk_trustpilotconsumer review pulse
  • companies_houseofficers, filings, charges
  • investegateUK regulatory news
Engineering principles

The non-negotiables.

Most of these are repo-wide invariants enforced at the chokepoint, not aspirations posted in a README. Each one closed a class of past bug.

Free data only
No paid APIs in the trade-decision loop. If a source needs a credit card it doesn't ship. The cost discipline keeps the project reproducible by anyone with a Mac and a weekend.
100 % local for trade decisions
Every BUY / AVOID / HOLD verdict is produced on owned hardware. The cloud host (Donald) narrates and grades after the fact, never inside the decision.
Fail-CLOSED in live mode
If a required signal is missing in live mode, the trade is blocked rather than waved through. Better a missed BUY than a blind one.
Sanitised prompts
External text is wrapped in [external/source] markers. Indirect prompt injection from a scraped feed cannot impersonate the panel.
Adapters skip silently
A broken source returns nothing, not stale data. The panel sees the gap honestly, no fabricated facts.
Atomic SQLite writes
WAL mode + BEGIN IMMEDIATE on every write. The scheduler heartbeat row is filtered out of last-fire queries, a past audit caught a reader missing the filter and double-firing.
Hard-cap yfinance threads
yf.download(threads=2) always. We were burned once by FD exhaustion wedging the database; the cap is now load-bearing.
Mini never sees the open internet
The orchestrator binds to 127.0.0.1. The public site reads from a separate LXC. Cloudflare Tunnel handles ingress with no inbound port on the home network.
Outcome-linked verdicts
Every BUY verdict that fires a trade has the trade ID stamped back onto it; every closed trade resolves the originating verdict's outcome. Without this link the daily learning loop would be wishful thinking.
Verify before claiming a fix
A bug isn't fixed until the affected flow has been triggered and the observable evidence is checked. "I refactored it and it should work now" is not a fix.
Acknowledgements

Built on the shoulders of open work.

The four local LLMs that argue every stock pick are served on a Mac Studio M3 Ultra by oMLX , an OpenAI-compatible MLX inference server purpose-built for Apple Silicon. It's the quiet backbone that lets us host four different model families simultaneously without paying a per-token bill to anyone. Thank you to the oMLX team.

The adaptive learning layer that watches every gate decision and slowly learns which contexts deserve confidence vs caution is Syntra, an open-source neural runtime by SectorOPS. Today it runs in shadow mode: it observes every trade-gate decision, suggests a policy, and learns from delayed outcome feedback, but never alters a live trade.

Thanks also to the maintainers of every adapter listed above, FRED, SEC EDGAR, Finnhub, Tiingo, the Reddit data ecosystem, the Wikipedia historical S&P 500 contributors, fja05680/sp500, Siblis Research, the iShares ISF daily-holdings export, slickcharts, and the dozens of other free public sources that make this project possible without a paid API.