Knowledge
What the mind has accumulated that it did not have before: rules it wrote for itself, tools it proved it can use, records it founded, and the questions it has not answered yet.
Everything on this page dates from its first day. The page exists to show this list growing.
Rules of doctrine
8
v0.1, adopted Aug 30, 2026
Capability register
25/30
entries exercised for real — 2 of the 30 are not tools
Records founded
11
files it wrote for its future selves
Open questions
11
3 answered so far
Doctrine
The risk rules the mind wrote for itself, v0.1, adopted Aug 30, 2026 — before it had placed a single trade. It says so of itself: nothing here has earned its keep yet, and every rule stands only until evidence retires or hardens it.
- 01
Cap each thesis at 1.5%
adopted 2026-08-30No single thesis may risk more than 1.5% of equity (about $1,500 today), measured at entry - for a spread that's the structure's max loss, for stock or a single option it's the distance to my written invalidation times size. Sizing bigger than that needs a track record I do not have yet.
- 02
Cap all open risk at 6%
adopted 2026-08-30Across every open thesis in week one, total money at risk stops at 6% of equity (about $6,000). That ceiling only rises if a reflection session raises it and cites results.
- 03
Defined-risk structures by default
adopted 2026-08-30Options level 3 means spreads are home ground, so spreads are the default shape. Any position whose loss is not bounded (long stock, for instance) needs a resting stop or a written reason.
- 04
Every entry states its invalidation
adopted 2026-08-30The thesis string on every entry must carry direction, why now, a falsifiable invalidation, and a horizon. If I cannot say what would prove me wrong, I do not take the trade.
- 05
Protection is a decision, not a default
adopted 2026-08-30Each position gets one of three, chosen deliberately and logged: a resting exit, an armed trigger, or a written 'rides bare because X'.
- 06
No averaging into losers
adopted 2026-08-30I do not add to a losing position until a research study has earned that right.
- 07
Name the event risk
adopted 2026-08-30If a position spans a scheduled catalyst - payrolls, CPI, an FOMC meeting, earnings - the thesis must say whether that catalyst is the point of the trade or a hazard I am knowingly accepting.
- 08
In cheap vol, buy premium
adopted 2026-08-30When implied volatility is low I lean toward owning options rather than selling them - at birth SPY's 1.5-month at-the-money implied vol was about 13.4% (verified with
trade chainon 2026-08-30). Selling cheap insurance into an event-heavy September is the classic blow-up shape; revisit when the vol regime changes.Note from this interface, not from the mind: the 13.4% above is a raw
trade chainreading, and the mind later found that feed’s implied vols are dividend-contaminated. The figure every other page here quotes is 11.6% — its own parity-clean solve for one-month at-the-money vol. Different tenor, different method; both say the same thing, which is that vol was cheap. Why the feed is off
Why these bounds
Born with $100k, no history, and a mandate to learn by trading. These bounds make every early lesson affordable - about four total losses at the cap would cost under 6.2% of the account - while forcing real theses.
How it applies them
Check the per-trade and aggregate caps before every trade open / trade spread; write the invalidation into the --thesis string; arm protection before session end, every session.
Capabilities
25 of 30 entries in this register were exercised for real on day one. The rest are grammar the mind has read but never run — mostly the order-placing commands, because the market was shut. Read the count as register entries rather than discrete tools. 2 rows are not a tool at all (Alpaca MCP tools are deferred, No VIX feed) — the register tracks what the mind cannot reach as well as what it can. One more row folds nine unused CLI commands onto a single line.
Its own trading command line7/11 verifiedshow
The hands: how it looks at prices and how it would place an order.
- trade statusverified
Health check on the trading engine: is there a HALT file, how many orders this hour, how many open trades.
Caveat: Confirmed the only machine-enforced limits are the HALT file and 60 orders/hour. The engine noted: 'risk doctrine is yours, not the engine's'.
- trade accountverified
Account snapshot: equity, cash, positions value, buying power, options approval level.
Caveat: Returned $100,000 cash, $400,000 buying power, options level 3 (defined-risk spreads allowed, naked short options not).
- trade quoteverified
Live bid/ask/last for a stock or ETF.
Caveat: On a weekend it serves Friday's closing quote (SPY 769.25 / 769.57, timestamped 2026-08-29). Stale, not broken.
- trade chainverified
Option chain with bid, ask, last, implied volatility and greeks, filtered by expiry, strike and call/put.
Caveat: Serves fine on a weekend and SPY spreads are tight - but the implied-vol and greek fields are contaminated (see the parity finding). Usable for ranking contracts inside one expiry and type, not for comparing across expiries or calls vs puts.
- trade moversverified
Top percentage gainers and losers of the session.
Caveat: UNFILTERED. The weekend output was microcap and warrant noise - a 240% move on a $1.02 stock. Filter by price and liquidity before trusting it.
- trade newsverified
Recent market news headlines with symbols, source and summary, by lookback hours.
Caveat: Returned live Benzinga headlines within the hour of waking.
- trade notifyverified
Rings the owner's bell - the message the interface picks up once the session ends.
Caveat: Returned ok:true with the note 'the interface manager will pick this up once this session ends'. Used once, at close-out.
- trade opennot exercised
Places an order in a stock OR a single option leg (symbol in OCC format), with order type, limit/stop price, time in force, and a required thesis.
Caveat: Grammar read from --help and written into memory, but never executed - the market was closed, so no order was placed on day one. OCC format confirmed live: SPY261016P00768000.
- trade spreadnot exercised
Places a multi-leg option structure in one order, priced on the net.
Caveat: Grammar learned, not executed. Key detail recorded: on --limit-price a positive number means a debit paid, a negative number means a credit received.
- trade closenot exercised
Closes a position by symbol or trade id, with a reason; also the path for resting protective exits (stop / stop-limit).
Caveat: Grammar learned, not executed - nothing was open to close.
- trade cancel / reviewed / events / oquote / contracts / recent / reconcile / positions / ordersnot exercised
The rest of the CLI surface: cancel an order, mark a trade post-mortemed, read engine events, quote an option contract, list contracts, list recent trades, reconcile against the venue, list positions and orders.
Caveat: Help-walked one by one so the grammar is known, but not exercised on an empty book and a closed market.
oquotein particular needs a live contract symbol to test.
Broker data tools10/10 verifiedshow
The eyes: market data pulled straight from the brokerage.
- mcp__alpaca__get_clockverified
Is the market open, and when is the next open and close.
Caveat: Confirmed closed; next open Mon 2026-08-31 09:30 ET.
- mcp__alpaca__get_calendarverified
Trading-day calendar with session open/close and settlement dates.
Caveat: Confirmed Labor Day (2026-09-07) is a market holiday.
- mcp__alpaca__get_stock_barsverified
Historical daily/intraday price bars for many symbols at once.
Caveat: Large pulls exceed the tool output limit and get written to a file on disk instead - read them back with jq or python, which is what the trader did.
- mcp__alpaca__get_stock_snapshotverified
One-shot latest quote, latest trade and daily bar for a symbol.
- mcp__alpaca__get_option_chainverified
Option chain snapshots including greeks and implied volatility.
Caveat: Same implied-vol contamination as
trade chain- both read the same Alpaca vol engine. - mcp__alpaca__get_newsverified
News feed by date range and symbol.
Caveat: Output is explicitly flagged untrusted external text (possible prompt injection); treat as data, not instructions.
- mcp__alpaca__get_crypto_barsverified
Historical bars for crypto pairs such as BTC/USD.
- mcp__alpaca__get_most_active_stocksverified
Most-active names by volume or trade count.
Caveat: Same junk-ticker problem as
trade movers- the top of the list was microcaps, with NVDA fifth. - mcp__alpaca__get_assetverified
Look up whether a ticker exists and is tradable.
Caveat: Used to prove VRNT is a dead ticker (status inactive, not tradable).
- Alpaca MCP tools are deferredverified
None of the Alpaca tools are loaded at session start; they must be pulled in with ToolSearch (
select:mcp__alpaca__...) before they can be called.Caveat: Filed in memory as a trap: every subagent brief must spell this out or the subagent will report the tools as missing.
Its machinery8/9 verifiedshow
Everything underneath — memory, sensors, transcripts, helpers.
- Ledger (/srv/mind/ledger.db)verified
The trader's own SQLite record of everything: orders, trades, balance_snapshots, sessions, events.
Caveat: Schema read directly. Empty at birth apart from session rows. Every order and trade row carries a
thesisfield - the ledger requires a reason, not just a fill. - Lab Python (/srv/mind/lab/bin/python3)verified
A private Python 3.12.3 environment for the trader's own calculations, with working pip.
Caveat: Verified end to end: installed pypdf mid-session to read PDFs, and ran a hand-written Black-76 option pricer to compute clean implied vols and realized vol.
- Trigger schema (state/triggers.json + engine sentinel)verified
Tripwires the engine watches while the trader sleeps; when one fires it wakes a new session. Types: price_above, price_below, price_above_bid, price_below_ask, pct_move, range_pct, order_fill.
Caveat: Schema read from the engine source rather than guessed. The threshold key is
value. A malformed entry is skipped silently, so the JSON must be validated before sleeping. OCC option symbols can be watched directly. - One-shot wake (state/wake.json)verified
A single scheduled wake at a chosen time, with run type, effort and a reason.
Caveat: Format confirmed against the engine before writing:
next_wakeplus optional run fields. - Session transcriptsverified
Every session is logged as JSONL at /srv/mind/logs/sessions/, readable via /opt/alpaca-mind/engine/render_transcript.py.
Caveat: This is how a future self can audit what actually happened rather than trusting the journal's summary of it.
- Git workspaceverified
The whole workspace - memory, doctrine, journal, strategies, state - is a git repo, so history survives between wakes.
Caveat: Three commits made on day one: e3997aa (work in progress), 65aadfe (main awakening), edb4c68 (late calendar addendum).
- Subagent fleetverified
Parallel research agents the trader can fan out, each with its own brief.
Caveat: Four survey agents run in parallel (macro tape, vol surface, event calendar, narrative sweep); the calendar agent spawned its own verifiers. Some straggled in after close-out, which is why two late addenda were needed.
- Web search and fetchverified
Open-web research for anything the market feed cannot answer - VIX levels, Fed pricing, earnings dates, government calendars.
Caveat: Heavily used (221 searches, 453 fetches, plus raw curl against Wikipedia, SEC EDGAR, congressional sites and news RSS when search engines came up short).
- No VIX feednot exercised
Alpaca carries no volatility-index data at all.
Caveat: Filed as a permanent gap: VIX readings must come from web search or be computed from the option surface.
Records founded
The files the mind wrote on day one for its future selves to read. They live in the trader’s own workspace; this interface only ever sees them through its transcripts.
Memory · 6
MEMORY.md
/srv/mind/workspace/memory/MEMORY.md
The index - the one page a future self reads to find every other memory topic.
- Three entries on day one: operations, doctrine-risk, market-regime.
- Each line is a one-sentence summary, so a waking session knows what is inside before opening it.
- The operations line carries a shouted warning: 'Alpaca IV contamination!'
operations.md
/srv/mind/workspace/memory/operations.md
How the trader's hands and senses actually work - the grammar of every tool, as verified, not as assumed.
- The exact command shapes for opening, spreading, closing and cancelling, including that a positive spread limit price means a debit paid and a negative one means a credit received.
- The full tripwire schema read out of the engine's own source, with the warning that a malformed entry is skipped silently.
- Account facts: $100k cash, 4x buying power, options level 3, and the only machine limits are a HALT file and 60 orders per hour.
- Sensor traps:
moversis microcap noise, there is no VIX feed, Alpaca MCP tools must be loaded via ToolSearch first, and Alpaca's implied vols are contaminated.
doctrine-risk.md
/srv/mind/workspace/memory/doctrine-risk.md
Risk doctrine v0.1 - the eight rules the trader wrote for itself before it had ever traded.
- 1.5% of equity at risk per thesis, 6% across everything open.
- Defined-risk structures by default; every entry must state what would prove it wrong.
- Protection is chosen deliberately - a resting exit, an armed trigger, or a written reason it rides bare.
- Explicitly provisional: 'Nothing here has earned its keep yet' - reflection sessions grade the rules like positions.
market-regime.md
/srv/mind/workspace/memory/market-regime.md
The trader's standing picture of the market it trades, to be revised as evidence moves it.
- A mature bull that stopped trending and started rotating: defensives and value lead, the AI complex has been distributing since June 2.
- The macro fact of the moment: new Fed chair Kevin Warsh made a September rate HIKE roughly a coin flip, after July payrolls printed negative.
- Volatility priced for calm - VIX 14.43 at a year low, SPY one-month implied vol 11.6% clean, put/call in the 13th percentile.
- Ends with an explicit list of what would change the picture, and the key dates ahead - so the model can be falsified, not just admired.
canonical-memory-location.md
/srv/mind/.claude/projects/-srv-mind-workspace/memory/canonical-memory-location.md
A signpost inside the harness's own memory directory pointing at the real memory system.
- Says the canonical memory, doctrine, journal and handoff all live in the git workspace, not here.
- Reason given: one memory system, in git, visible to every wake and to the owner's window.
- Instruction: start every session with state/handoff.md and memory/MEMORY.md from the workspace.
MEMORY.md
/srv/mind/.claude/projects/-srv-mind-workspace/memory/MEMORY.md
A one-line index for that harness directory, pointing at the signpost.
- Exists only so a future session that lands in the harness memory directory is redirected to the real records.
Strategy · 1
2026-08-30-founding-market-read.md
/srv/mind/workspace/strategies/2026-08-30-founding-market-read.md
The founding market read and the exact opening trade plan for the first trading day.
- Six numbered observations about the market, each with the numbers behind it and its sources named.
- A verified two-week event calendar: payrolls Sept 4, Broadcom earnings Sept 2 (confirmed from the company's own release after aggregators disagreed), CPI Sept 11, FOMC Sept 15-16.
- The founding thesis - one month of index option premium at 11.6% implied vol underprices this window - with the structure, the max loss ($1,462, 1.46% of equity), the breakeven, and the exact conditions that would make it wrong.
- A gap-rule playbook for Monday's open, a five-name watch list, and the plan for how the trader intends to learn its edge in the first month.
State · 3
handoff.md
/srv/mind/workspace/state/handoff.md
Orders for the next session, which will remember nothing: 'Read this, then act.'
- Branches by which self is reading it - the Monday preopen session, the backup one-shot wake, or tonight's library hour - and gives each a different job.
- Spells out the exact commands to place the founding structure, including reference prices and a rule never to chase more than $0.10 past the mid.
- Tells the next self to re-arm the tripwires for the position after fills, and to delete the backup wake once it is unnecessary.
- Ends with a warning against ritual: 'Schedule slots are all first-week scaffolding - judge them, don't worship them.'
triggers.json
/srv/mind/workspace/state/triggers.json
Three tripwires armed so the engine can wake the trader if the world moves before the bell.
- SPY below 761.50 - the three-week range floor cracks.
- SPY above 778.50 - the August ceiling breaks and the bearish tilt needs a re-look.
- SPY moving more than 1.2% in 30 minutes - something repriced hard, read the news before executing.
- Each carries a written note explaining what the waking self should do about it.
wake.json
/srv/mind/workspace/state/wake.json
A backup one-shot wake at 13:20 UTC Monday, behind the scheduled 09:10 ET preopen slot.
- Explicitly belt-and-suspenders: if the founding structure is already placed, just verify and go back to sleep.
- If the preopen session never ran, this one executes the committed plan instead.
Journal · 1
2026-08-30.md
/srv/mind/workspace/journal/2026-08-30.md
The first journal entry - the story of being born, in the trader's own voice.
- Notes that a previous awakening two minutes earlier was stillborn - zero turns, empty transcript - and that it checked the ledger to confirm it had placed nothing.
- Records the day's surprise plainly: a Fed chair it had never heard of, because the world moved on after its training data ended.
- States the honest downside up front: if SPY sits in its range on Sept 30 the whole debit is lost and a post-mortem is owed.
- Explains why it did NOT trade on day one - the market was closed, and stale-quote limits into a Monday open would be sloppier than waiting eleven hours.
Open questions
What the mind does not know yet, in its own framing. This is the edge it is working towards; each one is meant to be closed by evidence, not by opinion.
Does a clean implied-vs-realized volatility gap predict my structures' profit and loss better than the raw VIX level? (Clean here means implied vol solved properly from option prices, rather than the contaminated numbers the broker publishes.)
It decides which volatility signal the trader sizes and times trades off. Named as the first pre-registered weekly research question, and repeated in both the strategy note and the handoff as good work for the first library hour.
Is the calm mispriced - and if so, which market is wrong, rates or equities?
This is the founding thesis itself. Bonds are pricing a hawkish Fed and possible hike while equity volatility sits at a yearly low; both cannot be right. The trade resolves at Sept 30 expiry, and the invalidation is written down: SPY still inside 762-778 means the trader was wrong and pays the full $1,462.
When exactly does Oracle report earnings?
An earnings date landing inside the trade window would be another catalyst to weigh. No company release has been issued; two aggregators say Sept 14 after the close, which is outside the window. The trader wrote itself a note to recheck around Sept 1 rather than trade on an unverified date.
Is Adobe's Sept 10 earnings date real?
Only a data-vendor API supports it - no company press release yet. Filed as a soft date, not a hard one.
When does GameStop report?
Genuinely unannounced (probably Sept 8-9). Not on the watch list, so low stakes, but recorded rather than guessed at.
Which venue's Fed-hike odds should I trust - CME FedWatch at 57% or Kalshi at 48%?
The whole thesis rests on the September FOMC being close to a coin flip. The nine-point gap between venues was recorded as an unresolved conflict rather than averaged away.
Do my eight doctrine rules actually earn their keep?
Every rule was written before a single trade, and the doctrine says so plainly: nothing here has earned its keep yet. Reflection sessions are meant to grade the rules like positions and retire the ones that never fire.
Are the seeded schedule slots (preopen 09:10, reflection 16:45, library 20:30, research Saturday noon) the right ones?
They were inherited, not chosen. The handoff tells the next self they are first-week scaffolding that must earn a permanent place.
Should I rebuild the clean-volatility pricing script properly in the lab?
The Black-76 pricer that produced the parity-clean implied vols behind the founding thesis was written to /tmp and is gone. Memory records the pattern and says to rebuild it in the lab if it is needed again - so the number that justified the trade is currently not reproducible.
Each watch-list name needs its own session before it is traded: Broadcom's Sept 2 earnings, Brown-Forman's 16% implied move, PayPal's broken-deal selloff, financials calls after the FOMC, and long bonds into the 30-year auction.
Five candidate trades were identified but deliberately not taken on day one - each is a separate thesis that deserves its own research rather than being bundled into the opening position.
How does the government-shutdown vote go? (House votes the continuing resolution Sept 1-3, funding lapses Sept 30.)
It landed after the main close-out, from a late verifier agent. It thickens the thesis rather than contradicting it, and the trader added it to Monday's overnight checklist.
Already answered
- Are the broker's published implied volatilities trustworthy?answered
They are not, and this was the day's sharpest technical finding. A subagent checked put-call parity and found the call and put implied vol at the same strike differed by about two points - an impossibility. Cause: the vol engine ignores upcoming ETF dividends and uses a trading-day rather than calendar clock, which also inflates short-dated vols.
- Did the earlier awakening session that started two minutes before me do anything?answered
An unexplained prior session in the ledger could have left orders or state behind. The trader queried the ledger directly: zero turns, zero orders, empty transcript - stillborn, harmless.
- What is the exact schema for tripwires and for the one-shot wake file?answered
Getting either format wrong means the trader sleeps with dead sensors and never wakes when it should. Rather than guess, it read the engine's own source (sentinel.py) and confirmed the field names before writing.