Futures Portfolio Research — nine books, one prop account
Portfolio research · one Apex 100k

Nine books on three contracts, priced for the cliff

The allocation of record since 2026-08-29 is nine books — six MNQ, gold’s venue_open_correction, and two crude legs — after the first run in this project’s history where both finalists survived adversarial verification: settle_cross_europe on CL (0-of-3 skeptics refuted, the cleanest result on record) and eu_balance_giveback on NQ. Every dollar figure is marked on the true 1-second path with micro commission charged, sized to a $3,000 trailing drawdown and floored to whole contracts.

2020-01 → 2026-079 booksMNQ + MGC + MCL on one budgetrevised 2026-08-29 — nine-book allocation adopted

dwm ×7, auction_push ×6, print_break ×7, settle_unwind ×6, stall_fade ×3, eu_balance_giveback ×2 (MNQ) + venue_open_correction ×3 (MGC) + inventory_release_run ×1, settle_cross_europe ×1 (MCL): $1,635 a month against $27,683 of account drawdown — against the seven-book account’s $1,588 at $28,974. The +3.0% of income is honest but not the point. The point is the cliff: the seven-book account goes infeasible — earns zero — above roughly 0.68 extra ticks per slipping leg, and nobody has yet measured what the live stack actually slips. The nine-book vector survives to roughly 0.99, still paying $1,532 a month at 0.75. The two new books are insurance against the one number that can turn the whole account off, bought at positive income. The drawdown headroom rises from 3.4% to 7.7%, and the halt ladder improves from four books that could not be suspended alone to two.

The adopted vector, and where its floor dies

Verified on equity_path.py --weights 7,6,7,6,3,3,1,1,2 --to-date 2026-07-24 the day of adoption. The slip column is extra ticks per slipping leg on top of engine fills.
Extra slip (tk/leg)Account DDUnits$ / monthSeven-book account
0.00 — deployed convention$27,3681.10 → 1$1,839$1,784
0.50$27,6831.08 → 1$1,635$1,588
0.75$28,6001.05 → 1$1,532INFEASIBLE — $0
1.00$30,0311.00 — INFEASIBLE——
The two new books: settle_cross_europe crosses the prior day’s CL settlement midpoint in the 06:00–08:55 ET European morning, sized off the European balance — 8.96 net ticks against CL’s 0.62 floor, E 0.385, holdout paying on every split, its level rebuilt causally from raw bars 224-of-226 to the cent. eu_balance_giveback fades a low-efficiency European morning back to its 03:00 ET anchor at 06:00 — 5.53 ticks, zero simultaneous-open hours against the four core NQ books; it survives as an income book only, its hedge claim having been refuted as circular by its own skeptic. If the two new legs fail their deployment gates, the fallback is the seven-book vector unchanged.

Adopted is not deployed. The order of work: measure realised per-leg slippage on the running stack — the reading is now two-sided (under 0.68 the seven were fine anyway; 0.68–0.99 this adoption is the only measured fix; above 0.99 shrink the account). eu_balance_giveback needs a live warm-up mechanism that does not exist yet (250 complete sessions of causal state; a cold restart replays 2 GiB of bars for ~5 minutes, and an unconfigured warm-up silently never arms). settle_cross_europe needs the CL roll schedule shipped in the deploy bundle — today the bundle excludes it and the module cannot even be constructed on the VPS — plus every CL blocker the crude release book already carries. Both books trade 06:00–08:00 ET, an hour the paper stack has never traded: paper-first is the staging. And one unrelated live defect found on the way: the NQ catalog has zero bars for 2026-08-24/25, an interior hole the live warm-up cannot fill.

If the account ever grows, re-shape before adding anything. The same books re-weighted for a 150k account are worth $2,704 a month (+70%) with no new book at all; at 300k, $3,914. The deployed shape is optimal only at exactly 100k — the integer floor wastes nothing there and a great deal everywhere else.

Archive · the record as of 2026-08-28

Seven books on three contracts, and the slippage cliff that gates them all

The allocation of record since 2026-08-28 is seven books — five MNQ, gold’s venue_open_correction, and the first crude book this account has ever held: inventory_release_run on CL, a ±0.025·D stop straddle resting through the Wednesday 10:30 ET EIA inventory release, adopted together with a print_break bump from 6 to 7 MNQ. Every dollar figure is marked on the true 1-second path with micro commission charged, sized to a $3,000 trailing drawdown and floored to whole contracts.

2020-01 → 2026-077 booksMNQ + MGC + MCL on one budgetrevised 2026-08-28 — seven-book allocation adopted

dwm ×7, auction_push ×6, print_break ×7, settle_unwind ×6, stall_fade ×3 (MNQ) + venue_open_correction ×3 (MGC) + inventory_release_run ×1 (MCL): $1,784 a month against $28,139 of account drawdown — against the six-book account’s $1,697. The adoption is really two moves. The larger is an allocation, not a book: print_break 6→7 adds $61 a month while removing $161 of account drawdown — an interior optimum, since both 5 and 9 lots are infeasible. The crude book is the first candidate since the gold one to pass a genuine holdout, and the only one whose untouched half (2020–2023) is the stronger half: 5.94 net ticks there against 4.86 on the window it was tuned on. Its clock is real twice over — the identical straddle on Mon/Tue/Thu loses money while Wednesday earns +6.18 ticks.

The adopted vector, and where its floor dies

Verified on equity_path.py --weights 7,6,7,6,3,3,1 the day of adoption, canonical exports. The slip column is extra ticks per slipping leg on top of engine fills.
Extra slip (tk/leg)Account DDUnits$ / month
0.00 — deployed convention$28,1391.07 → 1$1,784
0.50$28,9741.04 → 1$1,585
0.75$30,3780.99 — INFEASIBLE—
Run 6’s planning figure of $1,582/mo scored the crude leg on a deliberately stressed +1 tick-per-leg re-simulation; the table above uses the canonical exports like every other book. The pre-committed fallback if the CL leg fails its slippage gate is 7,6,7,6,3,3 — $1,568 a month at half a tick — keeping the print_break bump either way.

Adopted is not deployed — and the slippage cliff now gates the standing account, not just the new book. Measured on the ladder: the six-book vector goes infeasible above ~0.63 extra ticks per slipping leg, this one above ~0.67. Measuring realised per-leg slippage on the running NQ stack is job one and costs nothing; above ~0.6 the correct action is to shrink the account, not add books. The print_break bump is deployable today — one config line plus the mandatory guards re-derivation to 1,300/1,300, because at the old 1,100 the disaster stop sits inside the 7-lot book’s own worst excursion.

What the crude book is, and what it still has to clear. It survived all five gates on a genuine holdout and a 2–1 skeptic panel — the one refutation was release-second execution realism: 79% of its entries fill in the four seconds after 10:30:00, its exit legs are pinned to the level rather than the fill, so entry slippage is unrecoverable one-for-one. The honest live band is 4.74–6.18 net ticks (fills through the target carry 27.7% of PnL, and CL’s monthly roll holds 11.6% of PnL on election dates a live guard would flatten). Before it trades: the exec_client order-list defect (entry straddles are wrongly marked reduce-only — a live-only bug no backtest can see) must be fixed; NYMEX data entitlement and MCL in NT8 confirmed; the installers taught per-book instruments; and an EIA holiday-calendar rule built — 46 of 340 Wednesdays are reschedule weeks where the release moves to Thursday and the module correctly stands down.

Where the money is if the account grows: at 150k–300k the same crude book is worth +$384 to +$522 a month, because those accounts waste a quarter to three-quarters of a fractional unit that its cheap $97-per-unit drawdown soaks up.

Archive · the record as of 2026-08-26

Six books on two contracts, and the gate the sixth still has to clear

The allocation of record since 2026-08-26 is six books — four NQ incumbents, stall_fade re-added, and the first non-NQ book this account has ever held: venue_open_correction on gold, fading the drift built while COMEX was shut, at the 08:20 ET pit open. Every dollar figure is marked on the true 1-second path with micro commission charged, sized to a $3,000 trailing drawdown and floored to whole contracts.

2020-01 → 2026-076 booksMNQ + MGC on one budgetrevised 2026-08-26 — six-book allocation adopted

dwm ×7, auction_push ×6, print_break ×6, settle_unwind ×6 (MNQ) + stall_fade ×3 (MNQ) + venue_open_correction ×3 (MGC): $1,697 a month against $27,305 of account drawdown — +17.9% over the four-book account’s $1,439. The weights are the contract counts: the vector funds exactly one unit (1.099), with 9.9% of margin above its own floor. Both additions earn their slot the only way this account has ever admitted a book — on drawdown, not on edge: stall_fade removes $1,328 of account drawdown while adding income, and the gold book’s worst window adds $0.00 to the account’s — the binding four-day drawdown in March 2026 contains no gold trade at all.

The adopted vector, and where its floor dies

Verified on equity_path.py --weights 7,6,6,6,3,3 the day of adoption. The slip column is extra ticks per slipping leg on top of engine fills — the sensitivity, not the deployed convention.
Extra slip (tk/leg)Account DDUnits$ / month
0.00 — deployed convention$27,3051.099 → 1$1,697
0.50$28,9761.035 → 1$1,507
0.75$30,9630.97 — INFEASIBLE—
The four-book account held its floor through 0.75; this vector dies there, and it carries 9.9% of cushion against the 15% the old one kept. The pre-committed fallback is 6,6,6,6,3,2 — 1.12 units at half a tick, $1,399 a month — if measured live slippage exceeds ~0.5 ticks per leg; at 1.0 or worse the gold leg is not deployed at all.

Adopted is not deployed. The running stack — paper and the NT8 VPS — is still the four NQ books at 6,6,6,6 until, in order: realised per-leg slippage is measured on the running stack (it decides between the full vector, the fallback, and no gold leg); two yes/no questions are answered — COMEX entitlement on the Databento subscription, and MGC 12-26 resolving in NT8; run_live.py learns a second instrument (today it hard-refuses anything that is not MNQ, and --root GC steers only the feed — used alone it would price gold risk at $2 a point on a $10-a-point contract); and stall_fade’s paper book is restarted — adopted 2026-08-16, never yet run live, its 02:00–06:00 ET thin-book fills unverified. The one change deployable today is dwm 6→7.

What the gold book is, and what it is not. It survived a genuine 3.5-year holdout (+2.96 net ticks against gold’s own 1.06 floor on 350 untouched trades), a 3–0 skeptic panel, and the anchor falsification — moved one or two hours off the pit open the same rule loses decisively in every direction. It is also the most concentrated book ever admitted: 22% of its PnL is the single 08:30:00–08:30:59 minute, 96% rides trades held across the macro print, and it breaks even if release-minute fills cost ~8 extra ticks. It is a second bet on the same print print_break trades, hedged by being on gold — and it is the only book of the six that can be suspended unilaterally: dropping it changes account drawdown by $0 to the dollar.

One tool verdict from the same run: portfolio_search.py’s ranking is unusable for this mixed-contract set — its top vectors collapse 33–50% on the 1-second path because the maximiser parks on zero-headroom cells. The frontier behind this adoption was built directly on equity_path.py, 59 true-path rows.

Archive · the record as of 2026-08-16

Five books on one Apex 100k, and the two counting errors that hid four of them

Everything below is the page as it stood when the fifth NQ book was adopted — kept intact because the corrections it documents are the method this account is built on. Its “deployed” claims describe that era: two days later the user cut the account to four books (dwm, auction_push, print_break, settle_unwind at 6,6,6,6 MNQ, $1,439/mo), which is the baseline the six-book adoption above is measured against.

The deployed account is four books at an unequal allocation — dwm, session and auction_push at 4 MNQ each and dryup_resume at 2, against a $3,000 trailing drawdown. print_break is the candidate fifth, plotted in amber. Every chart below shows each book at one contract, which is not how any of them are held; the allocations that earn the headline numbers are in the tables. Slippage charged per trade from each fill bar’s own geometry; contracts sized to a $3,000 trailing drawdown, floored to whole contracts. auction_push is the closing-auction carry book, on the corrected 966-trade export — nothing here uses the defective 882-trade log its findings doc records.

2020-02-04 → 2026-07-235,587 trades1,706 trading days1 NQ basis, sized to MNQas of 2026-08-16 — five books deployed

Five books now run on one account: $980 a month against a $2,289 drawdown, inside a $3,000 trailing limit. Two of those books were adopted in a single day — not because anything new was discovered about the market, but because two counting errors were found. Neither was in a strategy. Both were in how the account was measured.

Error one: every candidate was measured at the wrong size. The screen adds one contract of a candidate against one of each incumbent, and the allocation search that should have caught it capped total weight at 16 — which excludes 6,6,6,1 before enumeration. Held at a third of the incumbents' size, a book adds a third of the drawdown. dryup_resume, rejected on drawdown, became the fourth book at 2 MNQ.

Error two: slippage was charged twice. The backtest already fills through a model that slips a stop entry one tick half the time, and the trade log is net of it. The account was then charged another 0.5–0.75 ticks per leg on top. That double count was costing ~31% of reported income — $647 a month against the true $847 on four books. Every figure on this page is now on engine fills only; the overlay remains as a sensitivity, which is a different question from what the account earns.

What the fifth book bought

Marked on the 1-second path with MNQ commission charged, $3,000 trailing. The two right-hand columns are the deployed convention; the middle pair keep the old double-charged figures so the change is legible rather than silent.
Allocation$/mo (old, double-charged)DD (old)$/mo (deployed)Max DDUnits
4 books$647$2,489$847$2,3381.28
5 books — + print_break ×2$762$2,456$980$2,2891.31
2 MNQ is the pick on the joint objective: ×3 earns more and starts spending drawdown instead of returning it. Only one other book on record — auction_push — has ever made the account's drawdown smaller, and it is the reason the fifth book fits at all. Note the correction moves income and drawdown the same way: more of the first, less of the second.

Both halves, and the grid it came from

Nothing was fitted before the grid ran, so both halves either side of 2023-07-01 are out of sample for the module as written.
FullH1 holdoutH2
deployed$647$435$891
+ print_break ×2$762$507$1,056
gain+18%+17%+19%
8 of 8 grid cells positive in both halves, with net ticks confined to 9.11–11.57 across a 2× range of stop width and 1.67× on target. What varies across the grid is drawdown, not edge — a plateau, where the graveyard gives spikes whose sign flips between neighbouring cells.

The falsifier, answered by comparison

43% of these breaks land inside the 08:30 minute, where the median 1-second fill bar is 26 ticks wide and Nautilus slips exactly one. So the velocity-scaled charge decides it — the fraction of its own fill bar's adverse room a trade can give up before the edge is gone.
BookBreak-even fractionEdgeEntry fill-bar
dryup_resume5.7522.4 tk2 tk
auction_push0.836.1 tk5 tk
print_break0.509.7 tk10 tk
dwm0.5012.7 tk22 tk
session0.283.4 tk15 tk
Alone, “half the bar's adverse room” reads disqualifying. Against the deployed books it is exactly dwm's fragility and nearly twice as robust as session — and dwm fills on faster bars than it does. A number that looks fatal in isolation is ordinary in context, and the context is the only thing that makes it readable.

Why this one and not the twenty-nine before it

The mechanism leaves a fingerprint, which is the part a well-fitted curve cannot fake. Almost no 08:30 ET release lands on a Monday — so if the edge is really the release calendar rather than the clock, Monday should be dead. Measured twice, from two implementations written independently:
Net ticks by weekdayMonTueWedThuFri
first probe−0.47+11.09+13.43+7.15+18.19
independent rebuild−1.61+11.36+6.66+5.54+12.95
Two more checks that could have killed it. Side symmetry: long +7.7 ticks, short +12.6 — both positive, where every other window tested is a long-only bull artifact (the 09:30 RTH open is +14.0 long and −2.4 short). Generic compression: the same “quiet bucket, then break” rule run over all 47 other half-hour buckets of the day is negative in every one, so this is not compression-expansion resurfacing under a new name.
It also passes gates 1, 2, 3 and 4 — gate 4 at 3.03 against 2.40 required, which no candidate had ever done — on risk of $124 a trade, inside the incumbents' $127–185 band. Its one gate 0 failure is measured at equal weight, which is the error described below.

Why twenty-two rejections need re-reading. Every candidate ever screened here was measured at equal weight with the incumbents — one contract of the candidate against one of each deployed book. Held at a third of that size, the same book adds a third of the drawdown. portfolio_search.py was built to ask exactly this and could not: its --max-total 16 cap drops 6,6,6,1 (total 19) before enumeration, and the two strongest candidates ever measured post-date the last allocation run entirely.

So the “$616 of free drawdown” below is the budget for a book held at the incumbents’ own size. That was never the only size on offer.

A second correction moves every number on this page. The marked equity path was charging the $4.50 NQ round turn already netted into each trade, while the account trades micros — ten of which cost $11.20. Charged properly, the trio’s drawdown is $5,927, not $4,814: 5.06 contracts at half a tick of slippage, four at three quarters. The +23.1% that moves it by matches the figure CLAUDE.md recorded for this bias, exactly.

How the fourth book got in — the same arithmetic, a year of rejections ago

Trio held at 4 MNQ each, 0.75 ticks per slipping leg, MNQ commission charged on the path, $3,000 trailing drawdown. Every row funds one unit — so read income as edge added and ΔDD as headroom bought.
Fourth book$ / monthvs baselineAccount DDΔ DDUnits funded
— trio alone$514—$26,461—1.13
turn_of_month ×1$682+33%$24,543−$1,9181.22
crabel ×1$660+28%$25,932−$5291.16
dryup_resume ×2$647+26%$24,894−$1,5671.21
dryup_resume ×1$580+13%$23,114−$3,3471.30
monday_open_drift ×2$613+19%$26,920+$4591.11
stall_fade ×3$587+14%$29,159+$2,6981.03
stall_fade is the cautionary row. Before the commission fix it looked like the safest fourth book ever measured — it reduced drawdown at every size and won both halves. Charged properly it goes infeasible in three of the four frames, because its 491 trades were each being undercharged $6.70 on the path. Its original rejection called the same thing a “$146-of-headroom integer-floor artifact”, and was right.

Both halves, not the pooled average

Split at 2023-07-01. dryup_resume was fitted on the second half only, so the first is a true holdout — and it is the half holding the account’s deepest drawdown.
Fourth bookFullH1 holdoutH2 fitted
— trio alone$514$364$687
dryup_resume ×2$647$435$891
dryup_resume ×1$580$399$789
turn_of_month ×1$682$417$987
crabel ×1$660$484$863
Every finalist beats the trio in both halves. The previous allocation run could not find one vector that did — because it was re-weighting three correlated incumbents against each other, which is close to zero-sum. Adding a book at small size is a different operation.

The four stress frames

dryup_resume ×2 is the only candidate fundable across all of them — incumbents at 4 or 5 MNQ, slippage at half a tick or three quarters, commission charged throughout.
4 MNQ · 0.50
$713
vs $578 · 1.23 units
4 MNQ · 0.75
$647
vs $514 · 1.21 units
5 MNQ · 0.50
$858
vs $722 · 1.08 units
5 MNQ · 0.75
$775
baseline infeasible
The last frame is the one that decides it: at five contracts and three quarters of a tick the trio alone breaches the $3,000 limit, and adding dryup_resume brings it back inside. A fourth book bought headroom instead of spending it.
Confirmed independently: portfolio_search.py, which shares no code with the 1-second path, ranks dryup_resume into all eight of its best allocations and lands within 0.9% of the measured figure for this one.

What is still open. Corrected 2026-08-16: an earlier version of this page said print_break earns only +1.95 net ticks on the quietest fifth of days. That figure came from the proposal's own quintile definition and was repeated without re-deriving it on the account's terms. Measured the way every other number here is measured — CME session day, deployed fill convention — it is +5.8 in the quietest quintile and +11.4 in the second, contributing $21,172, the most of any of the five books. The dead zone is real but smaller than stated: the account earns 15% of its PnL on 40% of its days, and it earns 8x more per day in the widest quintile than the quietest. That gap is what a sixth book is for. It also carries a real execution cost — in one month of sample the entry stop filled into the print, the protective leg was rejected because price was already through it, and the position was flattened 22 points past the intended stop. It trades the fastest second of the day; that will recur.

dryup_resume fails the concentration gate — its top ten trades are 86% of its PnL. Sizing dilutes the consequence to roughly $133 a month of exposure; it does not fix the property. If that tail does not recur, the drawdown reduction goes with the income, because the reduction is earned by making money during the trio’s declines rather than by sitting them out.

Stacking it with turn_of_month measures $815 a month and wins the holdout as well — deliberately not recommended yet, since two books each rejected on their own double the fitting exposure. The charts below now plot dryup_resume alongside the deployed three, each at one contract.

Cumulative PnL

One contract, no sizing applied — the raw edge each book produces. Combined (trio) is the deployed three; dryup_resume is the candidate, and is deliberately not folded into that line, because adding it at equal weight is precisely the error this page documents.

Underwater — distance below the running peak

Closed equity, measured at each day’s end. Contract sizing uses the intraday drawdown in the table below, which is deeper — a trailing limit is evaluated continuously, so it also sees the unrealised path inside each trade.
One panel per book on a shared depth scale, so troughs compare directly. Five overlapping daily series on one plot is unreadable. dryup_resume’s panel is the point of the whole exercise: at one contract its trough is more than twice the trio’s, which is why it was rejected — and at the 2-to-4 ratio it is actually held at, it makes the account’s trough shallower.

Metrics on the deployed convention

Table view of every figure plotted above, at the fills the engine actually produced. The toggle above adds a further tick of round-trip slippage as a sensitivity — it is not the deployed assumption.
BookTradesPnLTicks/tradeProfit factorIntraday DDCalmarMNQ$ / month
The Combined (trio) row is the deployed account at 1:1:1, not the four-book recommendation — there is no honest single row for that here, because it is an allocation rather than a book. Ticks per round trip is the screening number — it has to clear realistic execution cost. auction_push has the smallest edge of the three and still the largest effect, because size comes from drawdown and it is the only book that returns some.

Why the result turns on rounding

Exact size is $3,000 ÷ drawdown, then floored to a whole contract. The pair lands at 4.36 and the trio at 6.23 — two whole contracts bought by removing $2,070 of drawdown. The floor is why this matters: the pair wastes 0.36 of a unit, and that unused fraction is only $616 of drawdown, which is the entire budget any third book has to fit inside.

Income against slippage

Charged from each fill bar’s own geometry. session decays fastest because its edge is thinnest. auction_push sits between the two at 5.3 ticks per round trip — it earns its slot on drawdown, not on edge per trade.
Round-trip slippagedwmsessionauction_pushCombinedCombined − dwm

Both are genuine hedges

Correlation has never predicted the outcome here: session hedges perfectly and buys nothing, fractal hedges as well and costs 21% of the income, crabel is genuinely negatively correlated and only ties. What auction_push does differently is show up profitably inside the pair’s worst months — the only window that sets the contract count.

What to add next

Every strategy screened full-history on the same basis. The bar is not a tick figure at all — see below.
StrategyTicks/tradeMarginal V/ΔDDIntraday DDStandalone E
Ranked by tick edge, and the ranking is nearly useless — but read the graveyard again knowing that every row was measured at the incumbents’ own size. turn_of_month tops it at 108 ticks and funds nothing at 1:1, while auction_push sits second from bottom and is the only one worth adding. Across 22 measured books, edge in ticks correlates +0.11 with the efficiency that decides adoption. The column that matters is the marginal one — contribution per dollar of drawdown ADDED — where auction_push is unbounded because the drawdown it adds is negative.
Built by Gnourt · algorithmic trading systems