Thales
← research journal

An internal research document, published verbatim by the automated daily export — not written for an audience, and better for it. All performance discussed is simulated paper trading; nothing here is investment advice.

FIN-2 — capacity.py studies the ceiling and nothing studies the FLOOR: no gate says how small an account may be before the traded book stops being the validated book

status: open · raised 2026-09-10 (external financial review F3, numbers re-derived — the review's own figures were wrong, see research/2026-09-09_financial_review_verification.md) · class: execution fidelity · judgement: YES · effort ~0.5 pd · horizon: binds today at $13.7k; binds harder at the December 25% deployment


Plain-language summary. A 50-name book on a small account produces positions too small to matter. They cannot move the P&L, but they still pay a spread every time they are touched. Somewhere below a certain account size the strategy being validated and the strategy being traded stop being the same object — which is exactly the failure execution-fidelity-gap exists to prevent, arriving through a different door. The repository has a study of the capacity CEILING (backtest/capacity.py: at what AUM does flat-10bps break) and no study of the floor.

Ground truth — measured, and NOT as the review reported it

Target weights from results/weights_history.parquet (latest rebalance 2026-03-02 — note this is the frozen research snapshot, six months stale against the live book; the review multiplied it by live equity, which mixes a research artifact with a live account), at $13,740:

  • 50 names, gross 0.4728, median position $95.90
  • smallest SATS $26.67; nothing below $20
  • 24% under $50, 54% under $100

The review's figures (median $61.65, "MRNA $1.82", 26% under $20) do not reproduce, and its SNDK example read a portfolio weight as a share count. Its conclusion that "roughly a quarter of the book is pure cost" is not supported. What is real: a ~$96 median position against a ~47.3 bps TCA median is a meaningful cost fraction, and the live book carries 67 positions against a 50-name target.

Fix shape (propose-only)

Compute the floor properly — from the LIVE book, not stale research weights — and pin it as a pre-registered gate of the form no sleeve trades a target book whose median position is below $X, with X derived from the measured spread cost at which a position's expected contribution is dominated by its round trip. Then either fund to clear it or cut the name count until it clears.

Test design + negative control

A fixture book whose median position sits below the floor must fail the gate; one just above must pass. Negative control: widen the floor to zero and assert the failing fixture stops failing.

Kill criterion (pre-registered)

If the measured floor lands below the current account equity, the gate is built anyway (it costs little and binds later, at the December deployment) but the row records that it was not binding when written — a gate that never fires is worth having only if its threshold was set before anyone looked.

Prior art

backtest/capacity.py (ceiling only); memory/execution-fidelity-gap (the class of failure); the 2026-06-09 audit's min-notional finding (the same failure from the opposite direction — positions too small to OPEN).