Changelog
What we're building, week by week — shipped features, fixes, and changes. All performance is paper-traded at a flat $5/trade.
Top performers right now
Live from the leaderboard — ranked by Sharpe (bots with ≥30 closed trades). Full leaderboard →
A running log of what we've built. The Baseline below is everything standing as of the first digest; each Weekly entry after it captures what shipped, what got fixed, and what changed that week. Newest week on top.
Baseline — what we've built so far (as of 2026-05-31)
The product. tinycorp.ai is a paper-trading quant marketplace + leaderboard for prediction markets (Kalshi and Polymarket). Anyone can build a rules-based "bot," watch it trade live markets with no real money, follow the ones that perform, and (if a creator lists it) unlock the rules. Everything is flat $5/trade so performance reflects skill, not bankroll.
Core surfaces
- Marketplace (
/marketplace) — browsable catalog of *listed* strategies with real performance, sortable. - Leaderboard (
/leaderboard) — every qualifying bot ranked by Sharpe (risk-adjusted return per $5 bet), with Follow buttons and a "not for sale" tag on private bots. Top-3 podium. - Builder (
/builder) — visual + JSON strategy builder with a live "markets matching now" preview. - Strategy detail (
/strategy/<slug>) — performance, plain-English rules, full config (when entitled), trade feed, version history, owner listing toggle. - Compare (
/compare) — side-by-side of up to 3 strategies (real KPIs, metrics table, P&L overlay). - My Quants / Library / Positions / Activity / Following / Creator profiles — the logged-in surfaces.
- Tools (
/tools) — tool hub; flagship is WX Lookup (public preview + Pro multi-station view) for weather markets.
Engine + strategy grammar (the "DSL")
- Entry signals: price band, liquidity, timing, momentum (
ya_change_*), volume-spike, title match. - External anchors:
wx_anchor,nws_anchor,crypto_anchor,eco_anchor(FOMC/CPI/NFP),injury_anchor(ESPN),lineup_anchor(MLB). - Flat $5 sizing,
max_concurrent, exit-at-expiry, YES/NO sides. - Backtester — replays a config against captured price history (~33+ days and growing) with the same exit math as the live engine; flags signals it can't yet replay rather than skipping them silently.
- Strategy versioning — v1→retire / v2→active, per-version stats, lifetime vs current scope.
WX Lookup (weather tooling)
- Real NWS/FAA feeds; forecast-trail surfacing, SPECI capture, Kalshi consensus chip, a "governing number" on every panel, monotonic lock ratchet. Public tool + Pro multi-station + a v2 design running on the
.138LAN box.
Reference / education
/learn,/how-it-works,/signals,/backtesting, and/docs(the full strategy-grammar spec + a "How we measure performance" metric glossary).
Two-surface social/marketplace model
- Leaderboard/social = always public (performance + @handle + Follow). Marketplace = opt-in per bot (
marketplace_enabled, default private). Pro does NOT override a private bot — the creator controls whether rules are sold. - Creator-following (
user_creator_follows) + a real/followingfeed of followed creators and their bots.
Trust / data honesty
- Swept a 42-item audit punch-list: every hardcoded/fabricated/placeholder value was wired to real API data or removed/relabeled honestly, across marketplace, leaderboard, /tools, /start, /live, /compare, /creators, /activity, WX landing, and the /build pages.
- Real creator identity (handles + avatars). Welcome email on signup; magic-link auth.
Weekly digests
Week of 2026-06-01 →
Shipped
- Evolution Lab — strategies that improve themselves, in the open (
/evolution). A new feature where an AI (Grok) studies our house strategies and proposes targeted mutations — tighten this entry band, skip these hours, flip this side. Every proposal is backtested head-to-head against the current version and shown publicly, winners and losers, with the AI's own reasoning and the P&L delta. The AI is fenced to only the fields our backtester can faithfully replay, so the numbers mean something; a candidate must clear real thresholds (enough trades, a genuine P&L gain, no worse risk) to be flagged "improved." Its first run already found a real fix — tightening a weather bot's entry turned a backtest loss meaningfully smaller. Nothing goes live until a human approves it (an admin reviews and promotes a winner to a new live version). Transparent by design, paper money, no fabricated numbers — and promoted bots are tracked forward so you can see whether the edge actually held. - Tropical Outlook tool (
/tools/tropical-outlook) — our 7th live tool. Every active tropical system with the detail that matters (category, wind, pressure, position, movement, and a link to NHC's official forecast cone), the areas of interest NHC is watching with its own 48-hour / 7-day formation odds, and the live season-count markets (Kalshi's "more than N named storms / hurricanes" ladders, showing the count the market still rates more-likely-than-not). The pitch: read the government's own formation probability right next to the market's price — a real external signal, not a number you can back out of the market itself. Free NOAA/NHC data. - New signal category: tropical / hurricanes. With the Atlantic season just open, bots can now gate on real National Hurricane Center activity — e.g. "only when a hurricane is active in the Atlantic," "when 2+ systems are active," or, best of all, "when NHC gives a disturbance ≥ 40% 7-day formation odds." That last one pairs the official NHC formation probability against named-storm/formation markets — a real external signal, not a number you can read off the market itself. Built on two free, keyless NOAA feeds (active-storms JSON + the Tropical Weather Outlook). Full pipeline: poller →
tropical_anchorinterpreter gate → builder validation/plain-English → /signals catalog. The library now spans eight categories: weather, crypto, macro, sports, finance, energy, space and tropical. - Sports Edge now keeps a live, forward-tested track record. Every game's prediction is now locked before first pitch and scored on the real final — no backfilling, no fabricated number. The tool shows a "Live track record · forward-tested" panel: it honestly reads "building… 54 predictions locked, none scored yet" until games settle, then fills in the running W–L record, hit-rate, and a calibration grid (what the model *said* vs what *actually happened*, by confidence band). This is the real number — built game by game — that will eventually back up the "~61% validated" claim with live results. Picks are locked and scored automatically every 30 minutes. And it's now model-vs-market head-to-head: we also capture the market's pre-game price on each game (37 of today's 54 so far — model and market disagree on 7), so once they settle the panel shows not just "was the model right" but "did the model beat the market," with the head-to-head record on the games where they took different sides. The real receipts behind a "called it" scoreboard.
- You can now build anchor bots in the UI. The builder already created real bots from its visual chips (price/liquidity/timing/category) — but signal *anchors* had no path. Added an "Advanced · full JSON config" editor: toggle it, the textarea pre-fills with your current config, and you can drop in any anchor from the signal catalog (weather, finance/macro, the MLB model, crypto funding, energy, launch…). It's validated on save with clear errors. Closes the "read the feed → build the bot" loop in the UI. Also fixed two catalog examples that had wrong field names.
- New signal category: space. Bots can gate on upcoming rocket launches — e.g. "only when a Go SpaceX launch is within 7 days" (or a specific rocket like Starship). Free Launch Library 2 data. For the launch-by-date markets on Kalshi/Polymarket. Poller →
launch_anchor→ builder validation → /signals catalog. - Opportunities scanner (
/tools/opportunities) — our 6th tool, a trader's scout sheet. In one screen: where our model beats the market (top MLB edges, with BACK/FADE leans), where leverage is crowded (crypto funding), and where the macro regime is shifting (VIX, yield curve, CPI, unemployment — flagged). Pulls the strongest readings from everything we've built into one view. - Macro indicators — gate on the actual economy. Added unemployment, CPI YoY inflation, the 2s10s yield-curve spread and GDP growth (real FRED data) as
finance_anchorsymbols and a new Macro group on Markets Lookup. Bots can now gate the abundant recession/rate/inflation markets on the real macro state — e.g. "only when unemployment > 4.5%" or "only when the yield curve is inverted." sports_anchor— the Sports Edge model is now a bot signal. Bots can gate trades on our own MLB win-probability model vs the market: "only buy Kalshi game-winner markets where our model beats the price by ≥ 8 points." The model's edges are precomputed every 30 min, so the trading engine just reads them — and the gate is opt-in, so it can't affect existing bots. The transparent edge that the Sports Edge *tool* shows, now tradeable as a *signal*.- Crypto funding-rate signal. Bots can now gate on perpetual-futures funding — e.g. "only when BTC funding ≥ 0.05%/8h" (crowded, over-leveraged longs = reversal risk), or negative (crowded shorts). A real regime signal crypto traders use, on the abundant BTC/ETH/SOL price-bracket markets. Free OKX data (Binance/Bybit are geo-blocked from our servers; OKX works). Poller →
funding_anchor→ builder validation → /signals catalog. - New signal category: energy. Bots can now gate on the EIA weekly crude-oil and natural-gas inventory reports — e.g. "only trade when crude stocks drew ≥ 2,000 kbbl last week" (a draw is bullish for oil). Real EIA Open Data, week-over-week build/draw. Full pipeline: poller →
energy_anchorinterpreter gate → builder validation/plain-English → /signals catalog. The library now spans weather, crypto, macro, sports, finance and energy. - Sports Edge now shows the edge vs the market. Pulled Kalshi's live MLB game markets into our feed and matched them to our model's predictions (by team + date). Every game now reads "model 69% vs Kalshi 58¢ → +11 edge on the Twins" — surfacing where our pitching-aware model thinks the market is mis-priced. That turns Sports Edge from a predictor into a true edge-finder.
- Sports Edge tool (
/tools/sports-edge) — our 5th live tool, and our own MLB win-probability model. Built entirely from real game results + the dominant signal (starting-pitcher quality), it's validated ~61% out-of-sample. Every upcoming game shows the model's win-% *and exactly why* — each team's Elo + each starter's ERA. Transparent, calibrated, honestly labeled an estimate (no fabricated numbers; track record builds forward). No paid feed — we own it. (Live "model vs market edge" comes next, as we add MLB markets.) - FOMC page now leads with live rate-decision odds. The Econ Calendar's FOMC detail view shows the market's implied probabilities for the next meeting straight from Kalshi — e.g. June 17: "Fed maintains rate 97¢ · Cut 25bps 3¢ · hikes 1¢" with probability bars — above the historical rate path. The clearest "what's the market actually pricing" read for a Fed decision.
- Kalshi financial markets are now in the system — fixed our poller (it was weather-only) to also pull Kalshi's public index/Fed/rate-cut markets (KXINX/KXFEDDECISION/etc., no auth). ~150 S&P + Fed brackets now flow into /live and the edge layer. Markets Lookup now shows brackets from BOTH Kalshi and Polymarket, tagged by venue — e.g. the S&P 500 maps to its Kalshi index bracket ("nearest live (Kalshi) ›>7,900 · +290 · 31¢"), while SPY maps to Polymarket. Doubles our prediction-market coverage on prices.
- Markets Lookup — live bracket alignment + SPY/QQQ. Added the S&P 500 and Nasdaq-100 ETFs (the instruments the daily price brackets actually reference) and the nearest-live-contract row: e.g. "SPY $759.57 → nearest >$760 · +$0.43 (0.1%) · 0¢ · Jun 2", clickable to the market. Oil too. The edge layer (which contract, how far, what price) now runs on all four tools — WX, Econ, Crypto, Markets.
- Crypto Levels — live bracket alignment. Each coin now shows the nearest *live Polymarket contract* its price is fighting — e.g. "BTC nearest live ›>$66,000 · +$949 · 100¢ · Jun 2", clickable straight to the market. Distance in $ and %, the market's yes price, and the expiry. Turns the spot board into "which contract, how far, what's it priced at" — WX Lookup's bracket-alignment ported to crypto.
- Econ event detail views (
/tools/econ-calendar/<event>) — the Econ Calendar is no longer just a countdown. Each release (FOMC/CPI/NFP/PPI/GDP) now opens a trader page: the last 12 actual prints + range/average (real official data via FRED — e.g. NFP's recent +115k/+185k/−156k swings), the live prediction-market brackets for that print (the market's own implied estimate), and theeco_anchorto trade the window. We show the real release history, not a consensus guess. - Treasury yields + Fed Funds rate added to Markets Lookup (new Rates group) and as
finance_anchorsymbols (10Y,FEDFUNDS) — authoritative daily data via the FRED API. Bots can now gate on rate regimes (e.g. "only when 10Y < 5%"). - Econ Calendar tool (
/tools/econ-calendar) — our fourth live tool. Live countdowns to the US macro releases that move markets (FOMC, CPI, jobs/NFP, PPI, GDP, Fed minutes), each tagged with what it moves and theeco_anchorwindow to trade it. Reuses the same dated calendar the eco_anchor signal gates on — no new data dependency. - Crypto Levels tool (
/tools/crypto-levels) — our third live tool. Spot, 24h move and history sparkline for Bitcoin, Ethereum, Solana, XRP, Dogecoin, plus a live Fear & Greed gauge (currently "Extreme Fear · 23"). Built on the existing crypto feed + the free, keyless alternative.me sentiment index. Linked from the Tools hub. - Markets Lookup tool (
/tools/markets-lookup) — our second live tool after WX Lookup. A live board of the instruments that settle Kalshi/Polymarket price markets: S&P 500, Nasdaq, Dow, VIX, gold, WTI oil + 7 mega-cap stocks, grouped, with day change and (Pro) price-history sparklines. Refreshes every 30s off a free, keyless feed (Stooq). Linked from the Tools hub. finance_anchorsignal — bots can now gate on market regime:{"symbol":"VIX","below":18}, or S&P/gold/stock levels and daily %-moves. The same feed powering Markets Lookup, expressible as a strategy. (Backed by a newfinance_poller→finance_quotespipeline, polling every 5 min.)- Live pulse — an at-a-glance "the engine is trading right now" indicator on the homepage hero and the leaderboard. Shows real activity (trades in the last 24h, open positions, and how long ago the last paper trade filled), polling every 15s.
/api/quants/statsextended withtrades_24h/closed_24h/open_positions/last_fill_at. (The leaderboard's 30-day totals are smooth by design; the pulse makes the constant underlying churn visible.)
Fixed
- Mobile menus now work site-wide. The nav menu didn't open on phones — quants/tools pages had no hamburger button at all (the links just vanished below tablet width), and the marketing pages had a hamburger with no code wired to it. Both are fixed with one small self-contained script, so the ☰ menu opens, navigates and closes correctly on every page.
- Admin "visitors" number no longer flashes a fake figure. The admin dashboard briefly painted leftover placeholder numbers (e.g. "2,481 visitors") on load before the real figures replaced them — which read as a sudden drop. Those baked-in mock values are gone; the page now shows neutral placeholders until the real, bot-filtered numbers load. (The traffic counter itself was working correctly the whole time.)
- Admin "poly-stuck-resolver" false-alarm WARN — the health check flagged degraded whenever the resolver found unsettled markets but resolved none, which is the *normal* state (Polymarket finalization lag; and a couple of markets Polymarket itself mislabels — e.g. an Iran market that resolves in July but reports an end date in May while still trading at 65¢). The resolver now classifies each unsettled position (
zombie= decided >7d ago but never finalized ·resolve_failed·awaiting_close·still_trading), and the admin only WARNs on the genuinely-degraded states. A real zombie pile-up will still surface — normal lag no longer does.
Week of 2026-05-26 → 05-31
Shipped
- Two-surface social/marketplace model —
marketplace_enabledflag (default private); entitlement rewritten so Pro can't unlock an unlisted bot (enforced on the page *and* the API); creator-following endpoints;/followingcreator-feed; creator-profile Follow button; owner listing toggle; marketplace filtered to listed bots; leaderboard Follow buttons + "not for sale" tags. - Max drawdown surfaced everywhere (marketplace cards, leaderboard column, strategy detail) — computed in
engine.perf_statsas the worst peak-to-trough drop of the cumulative-P&L curve. /docs#metrics— a "How we measure performance" glossary defining every stat exactly as computed (P&L, EV/trade, win rate, Sharpe, Max DD, etc.).- Docs added to the site-wide navigation.
Fixed
- Full fake-data audit sweep — /leaderboard "428/18 pages" footer, /tools "alive brackets" + roadmap vote counts, /start "428 bots / 9,840 markets / +$1,842", /live counts, /compare fabricated verdict/metrics/correlation/overlap, /creators tabs + edge profile, /activity "This week" rail + chips, WX-landing "LIVE PROOF" block.
- Render bugs:
/build/cryptoserved weather (SSR now renders the real topic);/creatorsswapped "Total trades"/"Median Sharpe" stats;/live.mkt-listonly filled one of three columns; a misplaced</script>that was silently breaking JS on every strategy-detail page.
Changed
- Leaderboard ranking made understandable — kept Sharpe as the headline metric, added an EV/trade tiebreak, a ≥30-closed-trade eligibility gate (so a lucky small sample can't top the board, with a "N building a track record" note), and honest header copy + a Sharpe tooltip + link to
/docs#metrics. Corrected the mislabeled "30-day Sharpe" (it's lifetime). - Confirmed/clarified the flat $5/trade cap prevents a large bettor from buying the leaderboard.
Template for future weeks
### Week of YYYY-MM-DD → MM-DD
**Shipped** — new features / pages / capabilities
**Fixed** — bugs, data-honesty corrections, render issues
**Changed** — behavior/copy/methodology changes, deprecations