Skip to content
How it works

How the desk works

Twelve chapters, from the one paragraph to what we would tell you is weak. Everything here is illustrative: no live data, no performance figures. The quant engine, below, explains what is computed underneath.

00arrival

The one paragraph

  • Ccode computes, the model interprets
  • Bthe broker keeps the books
  • Nno AI output feeds AI input
  • Eerror bars on everything

The desk is an AI research and trading operation for one principal. It is not a chatbot with market data attached. It holds a conversation, reaches for tools to measure things, computes with code rather than in its head, forms a view, and puts a trade in front of a human as a card. The human accepts or rejects. On acceptance the order goes to the broker, and the broker, not the desk, is the record of what happened.

The whole architecture fits on one line. The model orchestrates; code computes; the broker keeps the books; the human approves every trade. Seven parts carry it: the agent at the centre, the tools it reaches for, the quant engine, the book, the broker, the watcher, and memory.

Four properties follow from that line, and this page is organised around them. Code computes and the model interprets, so every number can be traced to a tool call. The broker keeps the books, so the desk cannot be wrong about what you own for longer than one poll. No AI output ever feeds AI input, so the desk cannot talk itself into a story. And every estimate carries its interval, so the desk tells you when its answer is nothing. Each chapter below carries the marks of the properties it demonstrates.

The system as a field: the agent at the centre, its six parts around it, hairlines between them.

01the turn

How a decision gets made

  • Ccode computes, the model interprets
  • Nno AI output feeds AI input

A turn is one question from the principal to a finished answer. Before the model sees anything, the server assembles what it must not have to remember to ask for: the book with every position and its thesis, the portfolio's risk, the alerts that fired in code, any unexplained discrepancy with the broker, the standing preferences and the full record, and the clock read off the exchange calendar. That block arrives as an operator message, is never persisted, and is trusted over anything earlier in the conversation.

Then the model thinks, visibly, calls tools in parallel batches, and loops: results come back, it thinks again, it asks for more. The loop is bounded by a circuit breaker: 24 iterations, 40 tool calls, 600,000 tokens. Hitting a ceiling does not kill the turn; it hands the model one sentence, answer with what you have, so the turn ends in a conclusion rather than a stall.

It ends in a card, or in an explicit pass with the level or date that would change its mind. A card sits pending. Nothing has moved. Accept is the only event in the entire system that changes a position.

Illustrative turn: the question, the operator block, a thinking line, four data tools landing as cubes.

02what is deterministic, what is delegated

Code computes, the model interprets

  • Ccode computes, the model interprets

The split is structural, not a style. Anything with a deterministic right answer is a tool. The model decides what to compute and what the result means, and it never does arithmetic in its head that a tool can do exactly. If a number matters, it came from a tool call you can point at. Every number, every check and every write is code alone.

Every one of the desk's 36 tools belongs to one of six kinds. Data tools return measured facts: quotes, bars, filings, estimates, ownership, the option chain. Computation tools run the quant engine over the local store. Book tools file a card, record a pass, request a cancel, revise a thesis. Memory tools search what was said and read the record. Delegation tools put analysts or scouts on a question. Figure tools draw. The model may reach for any of them; it can write to the book through none of them, because a card is a proposal and the accept is a human tap.

The analysts see a shorter list still. Their allow-list names 23 of them, data and computation tools only, and it fails closed: a tool added to the desk reaches no analyst until someone puts its name on the list on purpose.

The dome taken apart into rows by kind, one cube per tool, named on hover, above the line where code alone continues.

03the data

What it sees

  • Nno AI output feeds AI input
  • Bthe broker keeps the books

One market data vendor supplies quotes, bars, filed financials, ratios, estimates, ownership, calendars and news. The SEC's own index supplies filings. A free feed supplements sentiment. The broker supplies the account itself: positions, cash, fills, order state. And a local store of split-adjusted daily bars is what every backtest, screen, scenario and correlation reads, so the same computation gives the same answer twice.

Two properties matter more than the vendor list. The first is primary data only: every tool returns raw measured facts, and the desk never works from a summary anyone wrote, including one it wrote earlier. The watcher's own assessments are projected out before the chat agent sees anything; the model's prior reasoning is stripped from history. No AI output is ever stored as AI input. The desk's own summaries of older turns are treated the same way: written for the record, never read back as evidence.

The second is that failures are data. A tool erroring is normal. The agent routes around it or says plainly which part of the answer it could not support, and it is instructed never to present a gap as a finding.

Five sources draw into the agent; the model's own outputs stop at the coral wall.

04the quant engine

What it computes

  • Ccode computes, the model interprets
  • Eerror bars on everything

This is where AI stops and arithmetic starts. All of it is pure, deterministic code with no model in the loop; the agent decides what to compute and what it means. A backtest returns its confidence interval before its headline number, with a flag that says whether the sample can tell this rule from no edge. It also runs the same statistics on the first two thirds and the last third of the history, so a rule whose whole edge came from one period shows it.

Position sizing reads the book and the live equity itself. It sizes on distance to the stop, on a volatility target, or on a fraction of Kelly, and Kelly fails closed: if the record has no winner and no loser with a measurable outcome, it refuses with the count rather than inventing a win rate. Portfolio risk measures the book as one thing: its volatility, how many independent bets it really holds, which names move together, its beta to the market, and how much of the covariance estimate is prior rather than data, stated as a number.

And every card carries odds. The desk simulates the trade forward under the name's own daily behaviour, rescaled to this week's volatility, thousands of times, with the drift removed. What comes back is the probability the stop is touched first, the probability the target is, and the expected outcome in units of the risk taken. The odds assume no edge. The thesis is the claim of edge; the odds are what the name does without one.

Illustrative: three computation tools land, and the well takes the dome's place with a fixture book.

05delegation and the fan-out

The team

  • Ccode computes, the model interprets
  • Nno AI output feeds AI input

When a question is bigger than a few tool calls settle, the desk puts analysts on it: two to five at once, running concurrently, each on one of six fixed lenses, each with a brief the desk writes. Fundamental works from filed financials. Technical from price and volume. Macro from rates, the dollar and sector behaviour, measured historically. Positioning from ownership, insider flow and where consensus is crowded. Catalyst from the calendar. And the bear argues the other side, hard and specifically.

There is deliberately no bull role. The desk's own view is the bull case, and the fan-out exists to surface what it would otherwise miss. Before a card is filed at conviction, an opposing read is required in the same turn, and the card is filed only after what came back has been addressed.

Analysts cannot see the book and cannot trade. Each has its own ceilings, 12 iterations, 24 tool calls and 250,000 tokens across the run with 64,000 in any one reply, sees a shorter allow-list of tools plus web search, and returns structured findings through one forced tool call. A fan-out takes minutes and costs real money, and the tool's own description says so and tells the desk not to reach for it on anything three of its own calls would settle.

Illustrative: three analysts orbit the dome as the product's own satellites, and each returns into it.

06a proposal and what would break it

The card

  • Ccode computes, the model interprets
  • Eerror bars on everything

A trade reaches the principal only as a card: the name, the direction, the size, the entry, the stop, the target, the odds, and a thesis in four bounded fields. What has to happen for the price to move. What the market is pricing now. Why the market is wrong. And the strongest evidence against, usually from the bear, and why the card is filed anyway.

Every card must carry at least one invalidation condition that code can evaluate without a model: a price level, a calendar date, or a reported fundamental crossing a number. The story changed is not a condition, and the schema rejects it. On acceptance those conditions become the position's thesis, and the watcher checks them mechanically for as long as the position is open.

The gates are code, not prose. A card at conviction is refused without an opposing read in the same turn. An opening card is refused without a sizing run for that symbol, and a quantity that matches none of the sizer's answers is refused unless the card says why. At acceptance, an order above a share of equity is refused outright, not trimmed, and a buy costing more than available cash is refused. The card sits pending. Nothing has moved until a human taps accept.

Illustrative card in the book's own layout, its fields arriving one by one; accept is the only control that moves anything.

07engineered absences

What it cannot do

  • Bthe broker keeps the books

This list is as built as the capability list, and for anyone with money at stake it is the more important half. The desk cannot move the book: a position changes only when the principal accepts a card, and there is no autonomous execution path anywhere in the system. It cannot cancel an order; it can request a cancel with a reason, which annotates the order, and the human decides. It cannot place a market order: every order it emits is bounded by a price the principal approved.

It cannot exceed a fixed share of equity on one order, and it cannot use margin; both are refused at acceptance. It cannot decide what filled: once the account is adopted, nothing is booked as a fill except what the broker's own ledger reported, and that switch is a fact on the book, not an environment variable, so no deploy can quietly hand a real account back to a simulator. The watcher never trades and never notifies. Analysts see no book and hold no write tools. There are two ways into the ledger and only two: the principal's accept, by hand, and the broker's own record of what filled.

Every path to the ledger stops at the wall except two: accept by hand, and the broker's own fills.

08the poll, the watcher, the brief

What runs unasked

  • Ccode computes, the model interprets
  • Bthe broker keeps the books

Three scheduled jobs, ordered so the book is current before anything reasons about it. The broker poll reads new fills, books them, reconciles positions and cash against what the broker says it holds, and re-derives every position's stop and target at the broker. Anything it cannot explain becomes a discrepancy, a row a human has to close. The desk does not guess its way out of a disagreement with the broker.

The watcher runs in two halves. The first is pure code with no model: for each position it checks stop and target proximity, the day's move against a volatility band, earnings inside a few sessions, and every invalidation condition on the thesis. A condition is one of four kinds: a price below a level, a price above a level, a date passed, and a reported metric across a threshold. A quiet market runs all of that and returns an empty array, and an empty array costs nothing. Only a non-empty return can spend money, on one scoped assessment of that position against its thesis, under a cooldown and a daily ceiling. A broad-market flush trips every position at once, and the honest response to the whole book moving is one look, not one per name.

The morning brief reads the book, the overnight tape, the news and the day's calendar, and tells the desk what happened and what is coming. It proposes nothing: the desk decides with the book in front of it. One honest cost is stated on every card: the stops and targets that stand at the broker fire only in regular hours.

Illustrative: the position from the card is watched, and every tick returns nothing until one fires.

09context discipline

Memory, and what is never remembered

  • Nno AI output feeds AI input

Every byte of every conversation is stored verbatim, so a turn can be replayed and audited exactly. But what is stored and what is sent are different questions, and the projection happens when history is loaded, not when it is written. The most recent turns keep their full evidence; older evidence is evicted in steps until what remains fits under a ceiling; and all prior thinking is stripped. What survives is what was said, plus recent evidence, and never the model's own earlier conclusions.

Three things ride in every turn regardless: standing preferences the principal has stated out loud, the full booked record, and recently declined proposals. A preference filed by the desk is marked as such until a person confirms it, because the tool cannot tell a sentence the principal said from one it read in a filing.

Searching history returns only what was said. It structurally cannot return a price or a tool result, so it can never be used to recall a number instead of fetching it again. Every model run is written to a ledger with its tokens and its dollars, so the bill is attributed rather than estimated.

The history as a column of turns: recent evidence kept, old evidence faded, thinking struck through, three items pinned.

10what stands between a cookie and an order

Controls on money

  • Bthe broker keeps the books

Reading an account and spending from it are different powers, and they are not one switch. Two independent flags, both default off, so nothing hosted reaches a brokerage as a side effect of a deploy. A session lasts weeks, which is fine for reading the book and not remotely fine for placing an order. Money moves only with a hardware passkey touched in the last few minutes, and the rule is one pure function with no cookies, database or framework in it, so the one decision standing between a stolen cookie and a live order can be read in full.

It fails closed. If trading is on and no authenticator is registered, trading fails, because treating no key as no check would make the control removable by exactly whoever it is meant to stop.

Placing an order is three phases, because a rollback cannot un-place one. Reserve a row in a placing state with an idempotency key; send; then record what the broker said. A placing row means the desk asked and does not know the answer: it reserves buying power, it can never fill, and the next poll resolves it by asking the broker what became of that key. An order the desk cannot find past a grace period is not marked dead. It opens a discrepancy and stays placing, because marking it dead while it might fill is the one direction that silently corrupts the book.

The order's phases: placing, then working or rejected, and a lost reply that waits for the poll.

11said first, on purpose

What we would tell you is weak

  • Eerror bars on everything

The track record is short, and most of the inherited book was not the desk's idea. The provenance of every position is tracked so nobody confuses the two, and a scoreboard that mixed them would be the first lie on this page. Broker-side stops fire only in regular hours; overnight and at weekends they do nothing. That was a deliberate choice, stated on every card, because on some instruments the alternative was no stop at all. But a weekend gap is uncovered.

Backtests carry no costs and no slippage, and say so on every result. The desk serves one principal and one account; the schema is multi-user and the operational experience is one book. And the desk is one model's judgement. The quant layer is deterministic and tested. The interpretation of it is not, and no amount of tooling makes it so. That is exactly why nothing executes without a human accept.

The field, pulled back out, with amber rings where the weaknesses live.

The quant engine

Ten method sheets: what is computed underneath the desk, how, with which parameters, from which feeds, and which tools expose it. Every figure below is produced by the desk's own code on synthetic, seeded inputs. Nothing here is live, and nothing is a performance figure.

01the feeds, and the two stores they fill

Data streams

One market vendor supplies quotes, daily bars, filed financials, ratios, analyst estimates, ownership, the earnings and economic calendars, call transcripts, sector performance and macro series. The SEC's own EDGAR index supplies filings, read directly rather than through a reseller. A free sentiment feed supplements the news. Consolidated short interest comes from FINRA's own file, because every vendor that sells it is reselling that file and none of them improves it. Options chains come from a second, options-only vendor: the market vendor sells no options data at any tier, and that is the one feed on the desk that is not the market vendor.

Nearly every method described here reads one thing: the local store of split-adjusted daily bars. The store is topped up on demand and checked on every top-up against the sessions it already holds, so a split or a restatement refetches the name's whole history rather than leaving two regimes of price spliced together. A backtest, an odds run, a factor fit and a book's covariance all read the same rows, which is what makes the same question give the same answer twice and lets every number computed from prices be reproduced from the store alone. The options sheet reads a second store beside it, a daily series of at-the-money implied volatility that the options vendor fills.

Two things go to a feed at call time rather than to a store: the fundamental half of a screen, fetched per name and cached, and an options chain, read when it is asked for. Everything else is the store: the feeds fill it and the methods read it. That separation is the reason a figure on this page can be produced by the same code that answers the desk, on inputs that are synthetic and seeded, with no key, no symbol and no request parameter anywhere in the page.

The feeds on the left, the two local stores they fill, and the computations and data tools that read them.
stated parameters
none
this sheet names feeds and methods, not constants

reach it throughget_quoteget_barsget_fundamentalsget_filingsget_newsget_ownershipget_option_chain

02aligned by index, null where the window is not full

Indicators and the screen

The indicator set is small, and every member returns an array the length of its input with null wherever the window is not yet full. Simple moving averages; Wilder's true range and average true range; Wilder's relative strength index with its textbook limits at the edges rather than a division by zero; rolling extremes over a window; bar-to-bar simple returns; z-scores against the sample deviation; single-factor beta; Pearson correlation and sample covariance, with the n minus one divisor because every series is a window onto a process that keeps running. Alignment is by index rather than by trimming, so an indicator is read against its bar without carrying an offset around, which is where the off-by-one defects live.

The screen has a fixed vocabulary of ten technical measures and eighteen fundamental ones, and the vocabulary is what the tool's own schema enumerates, so the model chooses from a list rather than guessing at a measure that does not exist. Returns are counted in sessions rather than calendar days, because a screen compares names against each other and sessions are the unit they share. The technical half is computed from the store; the fundamental half is fetched per name from the market vendor and cached, levels and year-on-year changes both, because a screen that can only rank on levels is biased toward whatever is currently cheap rather than whatever is currently improving.

Ranking is two steps and the order matters. Filters run first, and every name that fails one is reported with the reason. Then a weighted composite of z-scores is formed over the survivors only, never over the whole universe: the difference between the cheapest of the names one would actually own and the cheapest of everything, filtered afterwards. A surviving set with no spread on the ranked measures returns every score at zero and says so, because a ranking over identical things is noise wearing an ordering.

Illustrative bars with a moving average over the close, the relative strength index beneath, and the average true range below that, each absent until its window fills.
stated parameters
none
this sheet names feeds and methods, not constants

reach it throughscreenget_bars

03three estimators, and why a swing desk needs the second two

Volatility

Three estimators, and the reason for the second two. The trailing sample deviation over 63 sessions is the one most of the desk has always used, and it has a property that matters on a swing horizon: it cannot notice a regime change inside a week. A quarter of quiet tape holds the number down for weeks after the tape stops being quiet, and a band drawn from it fires on every follow-through session.

The exponentially weighted estimator answers from one direction, by weighting the recent past: the variance after each return is the previous variance decayed by 0.94 plus the new squared return at one minus that, seeded on the mean square of the first 20 returns rather than on one day's, so the opening month of the series is not a function of whichever day happened to come first. Yang–Zhang answers from the other, by reading the open, the high and the low the store already holds: an overnight term, a weighted open-to-close term and a Rogers–Satchell term, in log returns, with the weight that minimises the estimator's variance. It is drift-independent, gap-aware, and several times more efficient per session than the close alone.

Below 21 returns no estimator here has an opinion, and the answer is null rather than a number. Each is reported daily and annualised. The regime block reads the exponentially weighted figure; the sizer takes the higher of it and a shorter trailing one, which is the conservative reading. Both stay on the record beside each other, so a reader can see the two disagree, which is itself the regime changing.

Illustrative: the three estimators, annualised, across a series with a volatility shock in the shaded stretch.
stated parameters
sessions in the trailing window
63
the exponentially weighted decay
0.94
returns whose mean square seeds it
20
the floor below which no estimator answers
21

reach it throughmarket_regimesize_position

04the interval before the headline, and a split after the fact

Backtesting

A rule is built from a vocabulary of six shapes in three pairs: a moving-average cross up or down, a relative-strength reading below or above a level, and a breakout or breakdown through a rolling extreme. Crosses are events, true only on the bar the lines cross; the others are states, true on every bar the condition holds, which is the difference between a rule that trades once and one that trades every day it stays oversold, and it belongs in the vocabulary rather than in a comment on the engine. Signals are read on a close and filled at the next open; stops and targets fill at the level when a bar's low or high reaches it, and a bar that touches both is a stop. A rule trades nothing through its warm-up, the opening sessions before every indicator it reads has a full window. One position at a time, whole account, no costs and no slippage, stated on every result, because modelled commissions on a rule this coarse would be false precision.

Expectancy is reported in percent and in units of the risk taken, and the interval comes before the headline. A percentile bootstrap resamples the trade returns 2,000 times from a generator seeded by the symbol, the window and the trade count, so the same backtest always gives the same interval and nobody re-rolls one they dislike; the 90% interval carries a flag that says whether it includes zero, which turns a number that reads as a finding into the same number correctly described as nothing. Under 2 trades there is no interval, because one trade resampled with replacement is the same trade every time. Every statistic is nullable where the sample cannot support it: a hit rate over zero trades is not zero percent, it is nothing.

The run is then split after the fact, the first 67% of the sessions against the rest, and both halves are summarised beside the whole. It is a holdout and not walk-forward, because this engine fits nothing: the optimiser is the agent, across calls the tool cannot see, and what the split catches is a rule whose whole edge came from one stretch. Trades are assigned by entry date, so a trade belongs to the period that decided to open it. Buy-and-hold over the same window sits beside the rule, with the index, because a rule that returned less than the name did is a losing rule however it reads on its own; the worst peak-to-trough move is stated with everything else.

Illustrative trade list: each return as a tick, the split between the earlier and later periods, and the bootstrap interval on each, flagged where it includes zero.
stated parameters
bootstrap resamples
2,000
the interval's confidence level
90%
trades below which there is no interval
2
the earlier period's share of the sessions
67%

reach it throughbacktest

05filtered historical simulation, with the drift removed

Odds

A card carries an entry, a stop and a target, and the odds say how often the stop is touched before the target under no edge at all. The method is filtered historical simulation, after Barone-Adesi, Giannopoulos and Vosper. The name's own daily moves on close, low and high against the prior close are centred and divided by the exponentially weighted volatility of their own day, then multiplied back by today's, so the shape of the distribution is the name's own, fat tails, skew and gaps included, and the scale is this week's. The low and the high are simulated because that is what a stop and a target are hit on; a close-only walk understates every touch and reports the stop as safer than it is.

Paths are drawn in blocks of 5 sessions so that volatility clustering survives the shuffle, over 4,000 paths, from the last 504 sessions and never fewer than 252; below that floor the odds refuse rather than thin out. The sample drift is removed from every path on purpose. The odds assume no edge; the thesis is the claim of edge, and this is what the name does without one. A path that touches both levels in one session counts as the stop, the same convention the backtest uses and the conservative one.

The generator is seeded from the inputs, so the sizer and the filed card compute the same numbers from the same bars and nobody re-rolls an answer. What comes back is the probability the stop is touched first, the probability the target is, the probability neither is inside the horizon, the expected outcome in units of risk taken, the break-even hit rate for the geometry, the median sessions to either level, and a Monte-Carlo standard error on the stop probability. The two horizons are the card's own: 21 sessions for a swing and 124 for a mid-term view.

Illustrative long through the simulation: the card's bar of stop first, target first and neither, the expectation in R, and where the untouched paths ended.
stated parameters
simulated paths per card
4,000
sessions per resampled block
5
sessions of history behind the odds
504
the floor below which the odds refuse
252
sessions in a swing horizon
21
sessions in a mid horizon
124

reach it throughsize_positionpropose_trade

06risk at the stop, a volatility target, or a fraction of Kelly

Sizing

Three methods, all deterministic, all taking their measurements as inputs rather than fetching them. Fixed-fractional risk puts 1% of equity at risk between the entry and the stop by default, and the share count is the budget divided by the stop distance, computed in millionths so that binary dust in two decimal prices cannot take a share off the answer. Volatility scaling buys the notional whose measured annualised volatility contributes 10% of equity. Fractional Kelly stakes the edge at 0.25 of full Kelly by default, and the stake buys stop distances rather than shares, because the payoff the edge is formed from is a ratio of R multiples and one R is one stop distance.

Kelly fails closed. Its inputs default to the desk's own realised win rate and payoff over the trades that carried a stop, and a payoff ratio needs at least one winner and one loser with a measurable R; without both, the method refuses with the count rather than inventing a win rate. The record itself states a hit rate as a point, and an interval on mean R, only from 5 such outcomes, and below that the interval is the claim. A model may supply its own win rate and payoff, from a backtest whose interval it has read, and the answer says which population the numbers came from.

Every size is reported with its consequences on the book: the share of equity actually lost at the stop, the weight, the heat across every open stop, and the names already held whose correlation with the candidate says the two are one bet. Past a stated share of the account in one name, the note says the position is the thesis rather than an expression of it.

Illustrative: the three sizes for one entry and stop as a share of equity, and the growth curve against the fraction of full Kelly with the default fraction marked.
stated parameters
equity at risk between entry and stop, by default
1%
volatility a position contributes, by default
10%
the fraction of full Kelly, by default
0.25
R-measurable outcomes before the record states a point
5

reach it throughsize_position

07one thing, measured: volatility, bets, clusters, beta, and how much is prior

The book

The book is measured as one thing. Signed weights against equity including cash, so a half-cash book carries half the volatility without anyone saying so; a daily covariance; and from the two, the annualised book volatility, each position's contribution to it, which sums exactly to the total, the diversification ratio, gross and net exposure, and the book's beta to the market, fitted by regressing a synthetic series built with today's weights on the index and labelled as the counterfactual it is.

The effective number of bets is the exponential of the entropy of the book's variance across its principal portfolios: the covariance is decomposed by cyclic Jacobi rotation, the book is projected onto each eigenvector, and the question becomes how evenly the variance is spread. Spread perfectly over n names the answer is n; concentrated in one view it is one, however many rows the book has. Entropy rather than the participation ratio, because that one ignores the weights and describes the universe rather than this book inside it. Beside it, the legible companion: single-linkage clusters at an absolute correlation of 0.7 or above, so a chain of pairwise exposure is reported as one bet, and a name and its mirror are not two decisions.

The sample covariance is not a usable matrix on a book of this size: with a few dozen names over a year of sessions its smallest eigenvalues are noise, and the error runs in one direction, because pairs whose correlation happened to be underestimated look like free diversification and the book reads as safer than it is. Ledoit–Wolf shrinkage toward constant correlation blends the sample with a structured target at the intensity that minimises expected squared error, and the intensity is returned, never hidden: a book whose covariance is mostly prior is told so, and a reader discounts the third decimal of everything computed from it.

Illustrative six-name book: the correlation grid with its clusters ringed, each name's share of the book's volatility, the effective bets and the shrinkage intensity.
stated parameters
absolute correlation at which two names are one bet
0.7

reach it throughportfolio_risk

08loadings with their errors, episodes that do not overlap, betas that are not rumours

Factors, forward returns, scenarios, regime

Factor exposure is measured on five factors built from funds the store already holds: the market itself, then long-minus-short spreads for size, growth over value and momentum, and the name's own sector against the index, dropped when the sector cannot be named. Loadings come from ordinary least squares with an intercept, solved through the normal equations with one elimination, so the coefficients and their standard errors are read off the same inverse and cannot disagree about whether the system was invertible; collinear regressors throw rather than returning a pseudo-inverse. The book's own decomposition splits its systematic variance by factor as each loading times its row of the factor covariance, which is why the shares sum to the whole and one can come out negative, as a hedge.

Conditional forward returns answer the question a swing desk lives on, names in this state over this horizon, what happened next, as a distribution with a count. Episodes on one name do not overlap: after a condition fires, the next episode cannot begin until the horizon has elapsed, because overlapping windows are how an event study manufactures precision. The interval resamples names rather than episodes, since a name's episodes in one regime are not independent of each other. At most 4 conditions may be combined, because each one multiplies the episodes away and adds a knob to turn until the answer flatters the trade; under 30 episodes the answer says its interval is wide for a reason.

Scenarios propagate a price shock through betas fitted on the store by multiple regression, so correlated shocks are not double-counted, with the intercept excluded because a shock is a deviation and not a level; a name with fewer than 30 overlapping sessions gets no beta, because below that a beta is a rumour. The regime block measures the index against its 50- and 200-session averages, its 21-session return, its exponentially weighted volatility and that volatility's percentile over the trailing 252 sessions, breadth as the share of names above their own long average, and the mean pairwise correlation of the sector funds. Four labels sit over the numbers, trend up, trend down, high volatility and high correlation, as conjunctions of thresholds that overlap by design and never replace the facts beside them.

Illustrative: five fitted loadings with a standard error either side and the true loading beside each, then a state's sessions with the episodes it yields.
stated parameters
conditions a forward-returns question may combine
4
episodes below which the interval is called wide
30
overlapping sessions below which a beta is withheld
30
the fast average, in sessions
50
the slow average, in sessions
200
the return window, in sessions
21
sessions every percentile is ranked against
252

reach it throughfactor_exposureforward_returnsscenariomarket_regime

09Black–Scholes and only Black–Scholes, both assumptions stated

Options

Black–Scholes and only Black–Scholes, with both of its assumptions stated. Exercise is European, which is right for the index contracts the desk trades and understates the price of an American put, so the exercise style is carried through on every contract and the reader is expected to look. There is no dividend term: index options settle on a price index, the yield belongs in the forward, and at the tenors the desk looks at, weeks rather than years, folding it in moves the implied volatility in the third decimal. The normal distribution function is a rational approximation whose error is four orders of magnitude below anything a delayed option close can support.

Implied volatility is found by bisection rather than Newton's method, because vega collapses far from the money and Newton diverges there, while bisection on a bracket cannot, and enough halvings leave the answer's precision beyond the input's. A price below the model's own floor or above its ceiling returns nothing rather than a number: the feed's deep in-the-money rows carry implied volatilities no instrument has ever had, and that is exactly what the bracket refuses.

The desk keeps a series of the 30-day at-the-money implied volatility, written once a day from the strike nearest spot at the expiry nearest that tenor, and ranks today's reading against the trailing 252 sessions of it, refusing under 60, because a quarter is the shortest window that holds one full cycle of what sets a name's volatility range. Rank and percentile are both reported, since a series that sat near its floor all year and spiked once has a low rank and a high percentile on the same reading. The chain itself is read as a window near the money, 10% of spot either side and up to 60 days out by default, capped at 120 contracts and never the whole chain, so a strike missing from an answer was not asked for rather than not listed.

Illustrative: a call's price against volatility with three prices inverted back, and a year of thirty-day readings with today's rank and percentile.
stated parameters
the standard tenor, in calendar days
30
sessions the rank is computed over
252
sessions below which there is no rank
60
the chain window either side of spot, by default
10%
days to expiry the window reaches, by default
60
contracts one call returns, at most
120

reach it throughget_option_chain

10the card's gates, the conditions, the watcher's checks

What runs in code, not in the model

Two gates stand in front of a card, and both are questions asked of the turn's own tool results rather than of the model's word. A card at more than low conviction on a new position needs an opposing read in the same turn: a bear analyst run on the name, a scout whose question names it and asks what breaks the thesis, or a bear run recalled from the last day. Only reads that came back count; an arm that failed is a hole in the coverage, not a read. And every opening card needs a size the sizer returned this turn, matching the quantity filed or accompanied by a stated reason for the difference, so the row records which call the quantity came from.

A thesis carries conditions the watcher can settle in code with no model call, of four kinds: a price below a level, a price above a level, a date passed, and a reported metric across a threshold. A level, a date, or a reported metric crossing a threshold is a condition; the story changing is not. Each is evaluated by its type against the mark, the New York calendar date, or the fundamentals fetched on the first scan of the day, and a metric that was not fetched is not a metric that passed. The same evaluator settles an analyst's own checks and re-opens a pass, and it only ever reports that a condition fired, never what it means.

The watcher's deterministic half runs the same way. For every position it checks proximity to the stop and the target within 0.5 of an average true range, the day's move against a band of 2.5 exponentially weighted sigmas, earnings inside 3 sessions, and every invalidation on the thesis. A quiet market runs all of it and returns an empty array, and an empty array costs nothing; only a non-empty return can spend money. None of this is a tool the model reaches for. It is what the tools are held to.

Illustrative position through the evaluator: one row per condition with its verdict, then the card gate with an opposing read and without one.
stated parameters
the kinds of condition a thesis may carry
a price below a level, a price above a level, a date passed, and a reported metric across a threshold
average true ranges within which a level is near
0.5
sigmas the day's move must exceed to fire
2.5
sessions inside which earnings are a catalyst
3

reach it throughno tool — this is what the tools are held to