Notebook 027 — We Cut the Roster, Hardened the Screener, and Wrote the Rules Down
Trading journal from a systematic desk, not trading advice.
Notebook 026 ended with a flat book, a supportive tape, and a desk that refused to trade because the prices never met the plans. The lesson was about authority: who is allowed to change what.
This week we answered the harder question. If the desk is going to enter on its own, what gets to reach the desk?
Because the change underneath everything else was this: ONYX now buys without asking. A sized lane that holds daily_review will, on its own, take a zone entry the moment the full checklist agrees — stabilization, own-VWAP, live gates, caps, earnings freeze — and place its GTC target automatically. No per-trade human approval. The operating rule is one sentence: the homework is the decision.
That is a much sharper knife than the one we were holding last week. When a human armed every plan, a bad candidate cost a minute of review. When the screen feeds an executor that fills by itself, a bad candidate can cost money. So most of this week was spent making sure fewer bad candidates ever arrive: a smaller roster, a stricter screener, and the whole operating doctrine written down where it can be argued with.
The book is no longer flat
First, the honest read on the tape, because it did not cooperate.
The regime rolled over. QQQ closed Friday at 695.33 — under the 700 hard floor, with SPY defensive and VXX neutral. That is the environment the desk walked into positions in. This week ONYX armed and held two names: AMD (110 shares at 540.83) and QQQ (83 shares at 718.23), both carrying resting GTC exits. Both are underwater against entry. QQQ buy-and-hold, our benchmark, is down roughly 4% from the 07-10 baseline of 725.51.
That benchmark is the point. In June the board set the success metric in plain language: beat QQQ buy-and-hold over the window, and losing less than QQQ still counts as winning. A down tape does not suspend the scorecard; it changes what a good week looks like. This was not a good week for the book in absolute terms. Whether it was a good week relative to a 4%-lower index is the only question the desk is actually keeping score on.
Monday's brief is written accordingly: base case risk-off, manage-first. AMD is flagged for a full exit — its post-parabolic 500 floor failed on the 07-16 chart review, and when the structure that justified a position breaks, the human takes disposition rather than nursing a broken thesis. QQQ reduces by half. The runtime still never sells itself at a loss; the operator does, deliberately, when the map is gone. Five lanes queue behind the management work — AAPL, META, VRTX, DDOG, FTNT — each with a price attached and a gate still required. Location is not permission.
None of that is comfortable. It is, at least, legible. The desk knows exactly what it holds, what it will do at the open, and why.
We cut the roster to thirteen
The old roster had grown the way rosters do: every name that once looked interesting stayed subscribed. We took it back to thirteen — AAPL, AMD, AMZN, ARM, GOOGL, META, MSFT, NVDA, QQQ, RIVN, RKLB, SPCX, TSLA — and archived the memory and semi-equipment research cluster (AMAT, DELL, INTC, MRVL, MU, SNDK, WDC). Their plans moved to the archive, their watchlist entries moved to blocked with a written reason, and the lab roster shrank to a single research name.
The subtle part is what we deliberately did not delete. The archived tickers stay members of their correlation groups. Semis and memory can still crack the market open, and when WDC falls 9% in a session — as it did on the 16th — the desk needs to see that stress even though it will never trade WDC again. A name can be too marginal to hold a plan and still be a useful sensor. We kept the sensor and dropped the plan.
We also onboarded SPCX, watch-only, into a new space group alongside RKLB. Watch-only here is strict: no geometry until the first board chart review, and its earnings date must be verified before it can ever be armed. That earnings rule is not a formality, which brings us to the screener.
Four candidates taught the screener to reject them
The screener is the funnel that now feeds an executor with a checkbook. It went through two full revisions this week, and every hard filter we added is named after a candidate that should never have surfaced.
GE taught earnings discipline. A screen hit walked into an earnings print the desk had not clocked. So the S&P screener (v2) got an earnings-freeze window with cached print dates, knife-day excludes (a hard cut at −5%, a softer one at −3% on heavy volume), and a $100M desk-tradeable liquidity tag, on top of per-lane scoring that weighs relative strength, group stress, and regime. The freeze is why SPCX cannot be armed until its date is verified. The desk must never be surprised by a print again.
BKNG taught the MA200 gate. A leader bouncing under a falling 200-day is not a leader; it is a laggard catching a bid. Those names now grade as laggard_bounce and can never reach candidate status. To even compute a clean 200-day, we pushed the bar lookback from 120 to 320 days.
FTNT taught R:R geometry. A setup can be a real leader and still not pay from the middle of its band. The screener now demands a minimum band reward-to-risk of 1.2; geometry that doesn't clear it demotes to leader_rr_fail.
EA taught story risk. The single most dangerous thing a systematic buyer can do is walk into a name that is quietly in play on an M&A headline. We added a flag-only keyword scan of the wire: near-entry candidates get a 30-day headline pass, and anything that smells like a deal demotes to a hold until a human reads it. Deliberately flag-only — a false positive costs a person one minute; a missed takeover costs a position.
Then the story-risk scan taught us a few things, in the way that live code always does. The first version missed the actual EA headline because the term list was too thin, so deal and takeover went in with a test pinned to the real headline. The news fetch was building a malformed date parameter and silently failing open on every call — fixed to a clean date, live-verified against EA's deal headline. A 320-day lookback pushed 50-name data batches past the broker's 10,000-row page cap and quietly dropped the tail of each batch, which is how a candidate slips through un-scanned; batch size came down to 20. And the scan learned the difference between acquirer and target: a company making an acquisition ("acquires," "agrees to acquire") is not the same risk as a company being acquired, so the active-buyer verbs now pass while target-side language still flags. DDOG and VRTX, both acquirers this week, correctly stopped tripping it; EA still does.
Four filters, one theme. The screener's job is no longer to find reasons to trade. It is to disqualify — on earnings, on trend, on geometry, on story — before a name can reach a desk that buys on its own.
We wrote the operating doctrine down
You cannot automate a process you cannot state. So this week the desk's rules stopped living in our heads and in commit messages and became documents.
The Desk Analyst SOP reached v1.0 and then v1.1 approved: the premarket, market, and post-market routines; a six-lens question framework for reading any name (global news, company news, earnings, Fed data, tape, chart); the working rules for how AI is allowed to contribute; and the six standard prompts the desk actually uses. Its Appendix A is the part that matters most — it encodes the week's hard lessons directly: the GE earnings miss, falling knives, blanket stand-downs, the rule that closes decide, and the standing suspicion of stale AI claims.
Alongside it, the Onyx State Model explainer v1.0, written after a collision that kept happening in plain conversation: "the desk is supportive, so why can't we buy?" The answer is a five-rung decision ladder — the switch, the risk gate, the posture color, the symbol gates, and doctrine — and the honest admission that a green posture and a risk-off gate can be true at the same time. GREEN/YELLOW/RED is a display of posture with its own per-color caps; risk ON/OFF is a separate frozen session gate off the MA50/MA20. Supportive is the weather. Risk-off is whether you're cleared to launch. They are different questions, and pretending they were one question is what caused the argument.
Documents are not glamorous. But a desk that fills on its own needs its reasons to be inspectable by a human who wasn't in the room, and now they are.
We took authority down to one switch
The other half of trustworthy automation is having fewer things that can claim to be in charge. Last week we found fail-open edges in the authority layer. This week we removed whole layers.
Authority is now one switch with three colors — full stop. We dropped the legacy mode mirror that shadowed it; switch is the only signal that says whether the desk may act, and close-now pause and restore move that switch directly instead of quietly editing a second copy that could disagree with the first. Two sources of truth about whether you're allowed to trade is one source too many.
We also deleted things that were adding surface without adding edge. Slack came out entirely — fill pings, zone pings, the whole integration — after a board call that a trading desk does not need a chat bridge in its critical path. GitHub Actions CI came out too; the pre-push hook is the gate, and a second CI that could pass or fail on its own schedule was ceremony, not safety. And the Narrative surface with its social-heat pipeline was retired for good. We briefly let Grok pull attention data server-side as research-only, then concluded the whole surface was answering a question the desk doesn't trade on, and cut it.
Every one of those removals makes the system smaller. A desk you can hold in your head is a desk you can trust to run without you.
The dashboard learned to separate money from research
If the desk now trades on its own, the read-only console has one job above all others: never let a watch idea look like a trade. So the Opportunity Set split into two tiers. "Trading today" carries the armed lanes and held positions — the cards with money attached. "Watching" sits below it for research and watch-only names, and a plan-status flip re-sections the grid automatically.
The watch tier became a plain table rather than zone-map cards, because watch names have no buyable geometry and an axis with nothing on it is wasted ink. Its most important column is EARNINGS — the print date rendered as "Jul 22 · 6d," yellow inside a week, red inside the three-day entry freeze, checked once reported. That column exists because of the GE miss; the one date the desk must never be surprised by now rides on the face of every watch row. A ZONE column followed, so the leaders-screen candidates can show their real board geometry (with the not-buyable ⊘ mark) while they're still watch-only.
Underneath, the unglamorous fixes that decide whether operators believe the screen: LAST prices now tick green or red in place and hold their direction through a full grid rebuild; a null one-minute close no longer renders a freshly-subscribed name at 0.00 and "100% below," which was a real bug the DDOG/FTNT/VRTX promotions surfaced the first time names rendered before building a bar; and the reachability rule now flags any armed lane whose nearest buyable band sits more than 4% from the close as CRITICAL, auto-disarming the fantasy round-trips a ⊘ band used to hide.
We also moved the whole close earlier. The end-of-day pipeline now starts one minute after the bell instead of thirty — 16:01, not 17:00 — because the review is the thing that writes tomorrow's brief, and there is no reason to make the desk wait half an hour to learn what it already knows at the close.
What we did not do
We did not keep twenty names subscribed because they were once interesting. We did not let a leader bouncing under a falling 200-day grade as a candidate. We did not let a mid-band setup with no reward-to-risk reach the executor. We did not let a name in an M&A story get bought because the tape looked clean. We did not keep two copies of the authority state and hope they agreed. We did not leave a chat integration, a redundant CI, and a social-heat surface in a system whose whole value is being small enough to trust.
And we did not pretend a down week is a failure of the process. QQQ fell about 4%. The book is underwater and defensive going into Monday. Whether the desk did its job is a question we answer against the index, not against zero, and the honest version of that answer comes after Monday's management, not before it.
Going into next week
The base case is risk-off and manage-first. AMD flattens into any strength; QQQ reduces by half. Behind the management work, five lanes hold daily_review and will enter on their own if — and only if — the gate turns risk-on and the full checklist clears: AAPL at 320–324.5 (no chase, digestion only), META at 640–655 (the lead conditional), VRTX at 480–490, DDOG at 244.92–254.92, and FTNT at 152.99–156 with an earnings freeze to watch on the 29th. MSFT was demoted to watch on Friday's re-rank. EA and BKNG are blocked, board-enforced twice — the two names the new filters exist to keep out.
The funnel is narrower and the trigger is now automatic, which sounds like a contradiction and is actually the whole design. A desk that enters without asking has to be pickier about what it lets near the door, not less.
The lesson
Notebook 024 wiped the board. Notebook 025 proved the plan could manage a live book. Notebook 026 taught the desk to say no. This week the desk started saying yes on its own — and that changed everything upstream of the trade.
When a human arms every position, the quality of the funnel is a convenience. When the funnel feeds an executor that fills by itself, the quality of the funnel is the risk control. So we cut the roster to the names we actually trade, taught the screener to disqualify on the four ways this month's candidates went wrong, wrote the doctrine down where a stranger could check it, and shrank authority until it fits in one hand.
The homework is the decision now. So we spent the week making the homework harder to pass.