Install
$ agentstack add mcp-austin-starks-public-portfolio-challenge ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README — it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Public Portfolio Challenge
4 AI agents. One open runbook. Real $25K, live and verifiable.
[](https://nexustrade.io/shared-portfolio/69a7dc7cf99e43688fcec567) [](https://nexustrade.io/developers) [](episode-10/BAKEOFF_RUNBOOK.md) [](#get-started)
[](https://nexustrade.io/shared-portfolio/69a7dc7cf99e43688fcec567)
Live portfolio card — generated from current positions. Open the full dashboard →
| Account value | Total return | Return vs. SPY | Max drawdown | Days live | | ---: | ---: | ---: | ---: | ---: | | $30,712.48 | +22.85% | +10.78 pp (SPY +12.07%) | −12.33% | 144 |
As of July 31, 2026. Same-window comparison begins with the first stored live observation. Portfolio data · Performance data · SPY data · refreshed weekly by GitHub Actions.
Quick start: Copy the live incumbent · [Connect MCP](#step-3--connect-your-ai-tool) → python3 start.py → paste prompt.txt into a fresh agent chat
Contents
- [What is this?](#what-is-this)
- [Agent bakeoff](#agent-bakeoff)
- [What this repo gives you](#what-this-repo-gives-you)
- [How the runbook works](#how-the-runbook-works)
- [What's inside](#whats-inside)
- [Community leaderboard](#community-leaderboard)
- [Get started](#get-started)
- [Risk disclaimer](#risk-disclaimer)
- [More links](#more-links)
What is this?
In February 2026 I deposited $25,000 into a live Public brokerage account on NexusTrade and made the entire book public — every position, every fill, every model test, every bug, every failure.
Not paper. Not a backtest screenshot. Real money, documented in real time.
The live story is a blog series. Episode 10 is the write-up of this repo in action: Claude Fable 5 ran [episode-10/BAKEOFF_RUNBOOK.md](episode-10/BAKEOFF_RUNBOOK.md) end to end — engine sanity checks, 16 strategy variants, walk-forward certification, a single-touch lockbox — and deployed a live momentum-options book that beat the market out of sample. Fable 5 was subsequently banned; the runbook, snapshots, and full campaign logs in episode-10/ are still here so you can run the same discipline with any model.
| | | | --- | --- | | Full series → | Ten episodes and counting: model bakeoffs, deploy day, production bugs, week-one gains, panic sells, engine rewrites, and the open runbook. | | Episode 1 → | Where it started — why $25k, why Public, why total transparency. | | Episode 10 → | The full story of Fable 5 running this runbook — every gate, engine bug, and dead end logged in [FABLE_CAMPAIGN.MD](episode-10/FABLECAMPAIGN.MD). | | Episode 10 on Medium → | Same article, syndicated on Medium — included here so readers who follow the challenge off-platform can find it without hunting. |
This repo is the open playbook. Episode 10 documents one agent's run through it. The runbook is yours to replay with whatever model you have. The agents don't just trade the account—they commit to this repo.
Agent bakeoff
Four agents received the same Episode 10 discipline. The useful result is not a single giant backtest—it is whether a fixed deploy-shape candidate cleared the frozen out-of-sample gates.
| Agent | Best comparable OOS mean return | Passed every gate? | Outcome | Notable failure | | --- | ---: | --- | --- | --- | | [Claude Code](episode-10/CLAUDECODECAMPAIGNLOG20260613T165226Z.md#deliverable--verdict-no-deployable-finalist-honest-no-deploy) | +53.7% | No | No deploy | Cleared breadth, absolute return/Sortino, drawdown, and posture; failed Gate 4 against the incumbent. | | [Codex](episode-10/CODEXCAMPAIGNLOG20260613T165248Z.md#final-wf-verdict) | +32.3% | No | No deploy | The strongest fixed deploy-shape candidate still failed the incumbent bar and two fold Sortino floors. | | [Cursor](episode-10/CURSORCAMPAIGNLOG20260613T165224Z.md#session-3--assembled-book-gate-evaluation-2026-06-13t1732z) | +33.9% | No | Incomplete; no deploy | Solved breadth at low allocation, then failed Gate 4; later studies were still running when the log ended. | | [Claude Fable 5](episode-10/FABLE_CAMPAIGN.MD#head-to-head-for-deploy-both-measured-directly-on-the-deployable-object) | +88.3% | No—owner override | Deployed | Strong return and drawdown, but missed strict breadth, fold-Sortino, stability, and posture gates; later engine fixes weakened the selection-provenance claim. |
Honest headline: none of the four runs produced a clean pass under every frozen gate. Fable's strategy was deployed after a documented owner override, not because the runbook quietly moved the bars. Follow the links for fold-level evidence and every failure.
What this repo gives you
No install
Connect the NexusTrade MCP server to Cursor, Claude, or any OAuth-capable client. No NexusTrade install, no API keys to rotate — OAuth signs you in once in the browser. (Grab start.py + example_profile.json from the repo, or just copy them from GitHub.)
One prompt
[episode-10/BAKEOFF_RUNBOOK.md](episode-10/BAKEOFF_RUNBOOK.md) is a self-contained agent brief — paste it into a fresh session and let the agent execute. It prescribes what must be true, never how to achieve it. New here? Take the [fast path](#get-started) instead — run python3 start.py and paste one prompt.
Real rigor
Walk-forward validation, a held-out lockbox, deploy gates, and capital-posture rules. A high in-sample backtest number is never the headline.
How the runbook works
The campaign is built around one idea: out-of-sample performance is the only result that counts.
flowchart LR
A["🔍 Searchbacktests & optimization"] --> B["✓ Certifywalk-forward folds"]
B --> C["🔒 Lockboxsingle-touch confirm"]
C --> D["🚀 Deploylive portfolio"]
| Layer | Job | | --- | --- | | Search | Invent and tune candidate strategies fast — variants, sweeps, backtests. | | Certify | Walk-forward: each fold optimizes in-sample, scores on held-out OOS the optimizer never saw. | | Lockbox | A final untouched window. One touch. No peeking. | | Deploy | Clone to a live portfolio, parity-check, attach monitoring. |
Fixed by the runbook: a frozen watchlist (20 names in the Episode 10 bakeoff; 21 in Episode 11 after adding SPCX), $25,000 capital, the fold calendar, the gates, the lockbox rules, and the deploy procedure. Yours to design: signals, structures, deltas, exits, sizing — anything that clears the gates is valid.
The watchlist (frozen — 20 in Ep 10, 21 in Ep 11)
ANET · DUOL · HOOD · LLY · GS · META · TSM · AVGO · XOM · COP · OSCR · AMAT · ADI · DDOG · OKTA · NET · APP · GLD · MU · SNDK · SPCX*
*SPCX was added in Episode 11; the Episode 10 bakeoff runs the first 20.
What's inside
The discipline lives in two forms. The skills library ([skills/](skills/)) is the runbooks decomposed into composable agent skills on the open SKILL.md standard — the same folder runs in Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot and ~15 other tools (skills/install.sh handles each tool's path + adapter). Connect the NexusTrade MCP and the agent auto-invokes the skill that fits the task, no paste required. The episode folders preserve the complete public timeline: historical indexes for Episodes 1–9, then the original runbooks and campaign logs for the reproducible campaigns.
skills/ ← the skills library (install into ANY agent — see skills/README.md)
├── README.md ← index + how the skills compose
├── run-episode/ ← entry point: /run-episode 10 (sequences the stages)
├── portfolio-certification/ ← umbrella orchestrator (the staged PASS/FAIL run)
├── walk-forward-oos/ ← the OOS certification engine
├── breadth-audit/ ← true participation at fixed $25k
├── sweep-reoptimization/ ← re-sweep on structural change + provenance
├── options-structure-rules/ ← spread-shape rule + hard constraints
├── alt-data-indicators/ ← custom indicators (Reddit, congressional, …)
├── bug-protocol/ ← "loudly declare" + hand-off doc template
├── deploy-gate/ ← the gated deploy + reconcile flow
├── engine-sanity/ ← Stage-S0 pre-flight contract checks
├── strategy-bakeoff/ ← the SEARCH→CERTIFY multi-family funnel
└── lockbox-holdout/ ← single-touch holdout + A/B/C baselines
Each episode is a self-contained folder: the runbook to paste, plus the campaign logs from each operator/agent run.
Episodes 1–9 predate the current repository format. Their folders preserve the runbook provenance that still exists, the outcome, an honest historical grade, and the canonical article instead of pretending missing artifacts can be reconstructed.
| Episode | Outcome | Grade | Record | | ---: | --- | --- | --- | | 1 | Opened the real-money challenge and established the public record. | Historical; not scored under current gates | [episode-01/](episode-01/) | | 2 | Converted expert feedback into a more disciplined agent workflow. | Historical; not scored under current gates | [episode-02/](episode-02/) | | 3 | Compared 11 AI models on strategy construction. | Research bakeoff; pre-current gates | [episode-03/](episode-03/) | | 4 | Tested automated hill-climbing and found optimization did not automatically beat the first attempt. | Research result; pre-current gates | [episode-04/](episode-04/) | | 5 | Reached the first live options deployment milestone. | Deployed under episode-era controls | [episode-05/](episode-05/) | | 6 | Documented day-one live behavior. | Live observation; not a certification | [episode-06/](episode-06/) | | 7 | Hit a close-order failure and rebuilt the risk engine around it. | Failure documented and remediated | [episode-07/](episode-07/) | | 8 | Published the week-one gain with the live book visible. | Live snapshot; not forward evidence | [episode-08/](episode-08/) | | 9 | Documented the gain, the panic sell, and the human override risk. | Failure documented | [episode-09/](episode-09/) |
episode-10/
├── BAKEOFF_RUNBOOK.md ← paste this into a fresh MCP session
├── RUNBOOK_OG.md ← the original (Episode 1) runbook, kept for reference
├── snapshots/ ← baseline + incumbent seed portfolios the runbook loads
├── addendum/ ← entry/exit redesign, deploy evidence, diagram, and bug note
├── FABLE_CAMPAIGN.MD ← operator run log (Fable 5)
├── CLAUDE_CODE_CAMPAIGN_LOG_*.md ← agent run log (Claude)
├── CODEX_CAMPAIGN_LOG_*.md ← agent run log (Codex)
└── CURSOR_CAMPAIGN_LOG_*.md ← agent run log (Cursor)
| File | What it is | | --- | --- | | [skills/](skills/) | The skills library. 12 composable agent skills on the open SKILL.md standard (Claude Code, Codex, Cursor, Gemini, Copilot, …) — the whole certification discipline, auto-invoked instead of pasted. Entry point: /run-episode 10. [skills/README.md](skills/README.md) is the index. | | [start.py](start.py) + [example_profile.json](exampleprofile.json) | Start here (fast path). python3 start.py walks you through your watchlist + risk tolerance, writes profile.json and a prompt.txt to paste — the agent builds you a personalized strategy. No runbook needed. | | [episode-10/BAKEOFF_RUNBOOK.md](episode-10/BAKEOFFRUNBOOK.md) | The agent brief you run — walk-forward validation, lockbox, deploy gates. Paste and execute top to bottom. | | [episode-10/RUNBOOK_OG.md](episode-10/RUNBOOKOG.md) | The original Episode-1 runbook, kept for reference (the brief has since expanded). | | [episode-10/snapshots/](episode-10/snapshots) | Baseline A/B and incumbent seed portfolios the runbook loads via create_portfolio. | | [episode-10/addendum/](episode-10/addendum) | Episode 10 entry/exit redesign addendum: runbook, campaign evidence, OOS comparison diagram, and bug note. | | Campaign logs | Per-run logs from each operator/agent: [FABLE_CAMPAIGN.MD](episode-10/FABLECAMPAIGN.MD), [CLAUDE_CODE_…](episode-10/CLAUDECODECAMPAIGNLOG20260613T165226Z.md), [CODEX_…](episode-10/CODEXCAMPAIGNLOG20260613T165248Z.md), [CURSOR_…](episode-10/CURSORCAMPAIGNLOG_20260613T165224Z.md). |
Episode 11 continues the story on the now-live book — each attempt is its own runbook:
episode-11/
├── attempt1/ RUNBOOK.md + CAMPAIGN_LOG.md ← certify the live book, re-optimize on FAIL
├── attempt2/ RUNBOOK.md + CAMPAIGN_LOG.md + TOTALBUDGET_BUG.md ← repair cross-watchlist participation
├── attempt3/ RUNBOOK.md ← alt-data (Reddit/WSB) on the certified book
└── … ← later focused strategy campaigns
Each new episode/attempt gets its own folder when the runbook or campaign parameters change materially.
Community leaderboard
Think your agent can beat the incumbent without moving the gates? Prove it. Fork the repo, run the campaign on NexusTrade, and open a PR under [community-runs/](community-runs/).
| Rank | Run | Agent | OOS return | OOS Sortino | Worst max drawdown | Gates | Evidence | | ---: | --- | --- | ---: | ---: | ---: | --- | --- | | — | No verified community runs yet | — | — | — | — | — | [Submit the first run](community-runs/README.md) |
Only runs that pass every current gate are ranked by mean OOS return. Failed runs stay visible—the point is reproducibility, not survivor bias. Start with the [submission guide](community-runs/README.md) and [result template](community-runs/example/result.json).
Get started
Step 1 — Developers page
Open nexustrade.io/developers.
[](https://nexustrade.io/developers)
Step 2 — Create a free account
You'll need a NexusTrade account to authorize MCP and access portfolios, backtests, and live trading tools.
[](https://nexustrade.io/register)
Step 3 — Connect your AI tool
Recommended: OAuth. No keys to copy, rotate, or leak. Sign in once in the browser when your client first calls a NexusTrade tool.
https://nexustrade.io/api/mcp
Cursor (recommended)
- On the Developers page, expand API Keys.
- Under Connect an AI tool to NexusTrade, click Add to Cursor.
- OAuth runs automatically on first tool use.
[](https://nexustrade.io/developers)
[](https://nexustrade.io/developers)
Manual Cursor config
{
"mcpServers": {
"nexustrade": {
"url": "https://nexustrade.io/api/mcp"
}
}
}
Claude Desktop / Claude Code
Click Copy install command on the Developers page, or:
claude mcp add nexustrade --transport http https://nexustrade.io/api/mcp
VS Code, ChatGPT, Windsurf, Zed, and other MCP clients
Use Add to VS Code on the Developers page, or paste the MCP URL into your client's connector settings. OAuth 2.1 discovery works the same eve
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: austin-starks
- Source: austin-starks/Public-Portfolio-Challenge
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.